From 7f7c2ed7809b0041f508e4d99dbf2c1284d0c320 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 7 Sep 2016 15:20:19 -0600 Subject: [PATCH 001/130] HLSL: Add location offsets per resource type This PR adds the ability to offset sampler, texture, and UBO bindings from provided base bindings, and to auto-number bindings that are not provided with explicit register numbers. The mechanism works as follows: - Offsets may be given on the command line for all stages, or individually for one or more single stages, in which case the offset will be auto-selected according to the stage being compiled. There is also an API to set them. The new command line options are --shift-sampler-binding, --shift-texture-binding, and --shift-UBO-binding. - Uniforms which are not given explicit bindings in the source code are auto-numbered if and only if they are in live code as determined by the algorithm used to build the reflection database, and the --auto-map-bindings option is given. This auto-numbering avoids using any binding slots which were explicitly provided in the code, whether or not that explicit use was live. E.g, "uniform Texture1D foo : register(t3);" with --shift-texture-binding 10 will reserve binding 13, whether or not foo is used in live code. - Shorter synonyms for the command line options are available. See the --help output. The testing infrastructure is slightly extended to allow use of the binding offset API, and two new tests spv.register.(no)autoassign.frag are added for comparing the resulting SPIR-V. --- StandAlone/StandAlone.cpp | 115 +++++++- .../spv.register.autoassign.frag.out | 230 ++++++++++++++++ .../spv.register.noautoassign.frag.out | 224 ++++++++++++++++ Test/spv.register.autoassign.frag | 71 +++++ Test/spv.register.noautoassign.frag | 71 +++++ glslang/CMakeLists.txt | 2 + glslang/MachineIndependent/ShaderLang.cpp | 27 +- glslang/MachineIndependent/iomapper.cpp | 249 ++++++++++++++++++ glslang/MachineIndependent/iomapper.h | 61 +++++ .../MachineIndependent/localintermediate.h | 21 +- glslang/Public/ShaderLang.h | 9 + gtests/Spv.FromFile.cpp | 41 +++ gtests/TestFixture.h | 80 ++++++ 13 files changed, 1191 insertions(+), 10 deletions(-) create mode 100644 Test/baseResults/spv.register.autoassign.frag.out create mode 100644 Test/baseResults/spv.register.noautoassign.frag.out create mode 100644 Test/spv.register.autoassign.frag create mode 100644 Test/spv.register.noautoassign.frag create mode 100644 glslang/MachineIndependent/iomapper.cpp create mode 100644 glslang/MachineIndependent/iomapper.h diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 606f2476..063e416d 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1,6 +1,6 @@ // //Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -//Copyright (C) 2013 LunarG, Inc. +//Copyright (C) 2013-2016 LunarG, Inc. // //All rights reserved. // @@ -48,7 +48,9 @@ #include "../SPIRV/disassemble.h" #include #include +#include #include +#include #include "../glslang/OSDependent/osinclude.h" @@ -78,6 +80,7 @@ enum TOptions { EOptionOutputHexadecimal = (1 << 16), EOptionReadHlsl = (1 << 17), EOptionCascadingErrors = (1 << 18), + EOptionAutoMapBindings = (1 << 19), }; // @@ -96,7 +99,7 @@ enum TFailCode { // // Forward declarations. // -EShLanguage FindLanguage(const std::string& name); +EShLanguage FindLanguage(const std::string& name, bool parseSuffix=true); void CompileFile(const char* fileName, ShHandle); void usage(); void FreeFileData(char** data); @@ -157,6 +160,10 @@ const char* binaryFileName = nullptr; const char* entryPointName = nullptr; const char* shaderStageName = nullptr; +std::array baseSamplerBinding; +std::array baseTextureBinding; +std::array baseUboBinding; + // // Create the default name for saving a binary if -o is not provided. // @@ -204,6 +211,35 @@ void Error(const char* message) exit(EFailUsage); } +// +// Process an optional binding base of the form: +// --argname [stage] base +// Where stage is one of the forms accepted by FindLanguage, and base is an integer +// +void ProcessBindingBase(int& argc, char**& argv, std::array& base) +{ + if (argc < 2) + usage(); + + if (!isdigit(argv[1][0])) { + if (argc < 3) // this form needs one more argument + usage(); + + // Parse form: --argname stage base + const EShLanguage lang = FindLanguage(argv[1], false); + base[lang] = atoi(argv[2]); + argc-= 2; + argv+= 2; + } else { + // Parse form: --argname base + for (int lang=0; lang= 1; argc--, argv++) { if (argv[0][0] == '-') { switch (argv[0][1]) { + case '-': + { + std::string lowerword(argv[0]+2); + std::transform(lowerword.begin(), lowerword.end(), lowerword.begin(), ::tolower); + + // handle --word style options + if (lowerword == "shift-sampler-bindings" || // synonyms + lowerword == "shift-sampler-binding" || + lowerword == "ssb") { + ProcessBindingBase(argc, argv, baseSamplerBinding); + } else if (lowerword == "shift-texture-bindings" || // synonyms + lowerword == "shift-texture-binding" || + lowerword == "stb") { + ProcessBindingBase(argc, argv, baseTextureBinding); + } else if (lowerword == "shift-ubo-bindings" || // synonyms + lowerword == "shift-ubo-binding" || + lowerword == "sub") { + ProcessBindingBase(argc, argv, baseUboBinding); + } else if (lowerword == "auto-map-bindings" || // synonyms + lowerword == "auto-map-binding" || + lowerword == "amb") { + Options |= EOptionAutoMapBindings; + } else { + usage(); + } + } + break; case 'H': Options |= EOptionHumanReadableSpv; if ((Options & EOptionSpv) == 0) { @@ -461,6 +528,14 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, 1); if (entryPointName) // HLSL todo: this needs to be tracked per compUnits shader->setEntryPoint(entryPointName); + + shader->setShiftSamplerBinding(baseSamplerBinding[compUnit.stage]); + shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]); + shader->setShiftUboBinding(baseUboBinding[compUnit.stage]); + + if (Options & EOptionAutoMapBindings) + shader->setAutoMapBindings(true); + shaders.push_back(shader); const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100; @@ -506,6 +581,10 @@ void CompileAndLinkShaderUnits(std::vector compUnits) PutsIfNonEmpty(program.getInfoDebugLog()); } + // Map IO + if (Options & EOptionSpv) + program.mapIO(); + // Reflect if (Options & EOptionDumpReflection) { program.buildReflection(); @@ -705,15 +784,22 @@ int C_DECL main(int argc, char* argv[]) // .frag = fragment // .comp = compute // -EShLanguage FindLanguage(const std::string& name) +EShLanguage FindLanguage(const std::string& name, bool parseSuffix) { - size_t ext = name.rfind('.'); - if (ext == std::string::npos) { - usage(); - return EShLangVertex; + size_t ext = 0; + + // Search for a suffix on a filename: e.g, "myfile.frag". If given + // the suffix directly, we skip looking the '.' + if (parseSuffix) { + ext = name.rfind('.'); + if (ext == std::string::npos) { + usage(); + return EShLangVertex; + } + ++ext; } - std::string suffix = name.substr(ext + 1, std::string::npos); + std::string suffix = name.substr(ext, std::string::npos); if (shaderStageName) suffix = shaderStageName; @@ -831,6 +917,19 @@ void usage() " -v print version strings\n" " -w suppress warnings (except as required by #extension : warn)\n" " -x save 32-bit hexadecimal numbers as text, requires a binary option (e.g., -V)\n" + "\n" + " --shift-sampler-binding [stage] num set base binding number for samplers\n" + " --ssb [stage] num synonym for --shift-sampler-binding\n" + "\n" + " --shift-texture-binding [stage] num set base binding number for textures\n" + " --stb [stage] num synonym for --shift-texture-binding\n" + "\n" + " --shift-UBO-binding [stage] num set base binding number for UBOs\n" + " --sub [stage] num synonym for --shift-UBO-binding\n" + "\n" + " --auto-map-bindings automatically bind uniform variables without\n" + " explicit bindings.\n" + " --amb synonym for --auto-map-bindings\n" ); exit(EFailUsage); diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out new file mode 100644 index 00000000..c2cd59a3 --- /dev/null +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -0,0 +1,230 @@ +spv.register.autoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 154 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main_ep" 143 + ExecutionMode 4 OriginUpperLeft + Name 4 "main_ep" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "mystruct" + Name 117 "g_tTex_unused1" + Name 119 "g_sSamp_unused1" + Name 124 "g_tTex_unused2" + Name 126 "g_sSamp_unused2" + Name 134 "PS_OUTPUT" + MemberName 134(PS_OUTPUT) 0 "Color" + Name 136 "psout" + Name 143 "Color" + Name 147 "g_tTex_unused3" + Name 149 "myfloat4_a" + Name 150 "myfloat4_b" + Name 153 "myint4_a" + Decorate 17(g_tTex1) DescriptorSet 0 + Decorate 17(g_tTex1) Binding 11 + Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 27(g_tTex2) Binding 1 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 29(g_sSamp2) Binding 2 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 64(g_tTex4) Binding 3 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 69(g_sSamp4) Binding 4 + Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 84(g_tTex5) Binding 6 + Decorate 86(g_sSamp5) DescriptorSet 0 + Decorate 86(g_sSamp5) Binding 8 + Decorate 95(mystruct) Binding 19 + Decorate 117(g_tTex_unused1) DescriptorSet 0 + Decorate 117(g_tTex_unused1) Binding 10 + Decorate 119(g_sSamp_unused1) DescriptorSet 0 + Decorate 124(g_tTex_unused2) DescriptorSet 0 + Decorate 124(g_tTex_unused2) Binding 12 + Decorate 126(g_sSamp_unused2) DescriptorSet 0 + Decorate 143(Color) Location 0 + Decorate 147(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypePointer UniformConstant 93(MyStruct_t) + 95(mystruct): 94(ptr) Variable UniformConstant + 96: 35(int) Constant 1 + 97: TypePointer UniformConstant 6(float) +117(g_tTex_unused1): 16(ptr) Variable UniformConstant +119(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 122: 6(float) Constant 1066192077 +124(g_tTex_unused2): 16(ptr) Variable UniformConstant +126(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 129: 6(float) Constant 1067030938 + 134(PS_OUTPUT): TypeStruct 7(fvec4) + 135: TypePointer Function 134(PS_OUTPUT) + 140: TypePointer Function 7(fvec4) + 142: TypePointer Output 7(fvec4) + 143(Color): 142(ptr) Variable Output +147(g_tTex_unused3): 16(ptr) Variable UniformConstant + 148: TypePointer UniformConstant 7(fvec4) + 149(myfloat4_a): 148(ptr) Variable UniformConstant + 150(myfloat4_b): 148(ptr) Variable UniformConstant + 151: TypeVector 40(int) 4 + 152: TypePointer UniformConstant 151(ivec4) + 153(myint4_a): 152(ptr) Variable UniformConstant + 4(main_ep): 2 Function None 3 + 5: Label + 136(psout): 135(ptr) Variable Function + 137: 7(fvec4) FunctionCall 9(Func1() + 138: 7(fvec4) FunctionCall 11(Func2() + 139: 7(fvec4) FAdd 137 138 + 141: 140(ptr) AccessChain 136(psout) 41 + Store 141 139 + 144: 140(ptr) AccessChain 136(psout) 41 + 145: 7(fvec4) Load 144 + Store 143(Color) 145 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 98: 97(ptr) AccessChain 95(mystruct) 76 96 + 99: 6(float) Load 98 + 100: 7(fvec4) CompositeConstruct 99 99 99 99 + 101: 7(fvec4) FAdd 91 100 + ReturnValue 101 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 104: 15 Load 17(g_tTex1) + 105: 19 Load 21(g_sSamp1) + 106: 23 SampledImage 104 105 + 107: 7(fvec4) ImageSampleImplicitLod 106 25 + 108: 16(ptr) AccessChain 39(g_tTex3) 53 + 109: 15 Load 108 + 110: 20(ptr) AccessChain 46(g_sSamp3) 53 + 111: 19 Load 110 + 112: 23 SampledImage 109 111 + 113: 7(fvec4) ImageSampleImplicitLod 112 50 + 114: 7(fvec4) FAdd 107 113 + ReturnValue 114 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 118: 15 Load 117(g_tTex_unused1) + 120: 19 Load 119(g_sSamp_unused1) + 121: 23 SampledImage 118 120 + 123: 7(fvec4) ImageSampleImplicitLod 121 122 + 125: 15 Load 124(g_tTex_unused2) + 127: 19 Load 126(g_sSamp_unused2) + 128: 23 SampledImage 125 127 + 130: 7(fvec4) ImageSampleImplicitLod 128 129 + 131: 7(fvec4) FAdd 123 130 + ReturnValue 131 + FunctionEnd diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out new file mode 100644 index 00000000..3a8ab1a3 --- /dev/null +++ b/Test/baseResults/spv.register.noautoassign.frag.out @@ -0,0 +1,224 @@ +spv.register.noautoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 154 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main_ep" 143 + ExecutionMode 4 OriginUpperLeft + Name 4 "main_ep" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "mystruct" + Name 117 "g_tTex_unused1" + Name 119 "g_sSamp_unused1" + Name 124 "g_tTex_unused2" + Name 126 "g_sSamp_unused2" + Name 134 "PS_OUTPUT" + MemberName 134(PS_OUTPUT) 0 "Color" + Name 136 "psout" + Name 143 "Color" + Name 147 "g_tTex_unused3" + Name 149 "myfloat4_a" + Name 150 "myfloat4_b" + Name 153 "myint4_a" + Decorate 17(g_tTex1) DescriptorSet 0 + Decorate 17(g_tTex1) Binding 11 + Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 86(g_sSamp5) DescriptorSet 0 + Decorate 95(mystruct) Binding 19 + Decorate 117(g_tTex_unused1) DescriptorSet 0 + Decorate 117(g_tTex_unused1) Binding 10 + Decorate 119(g_sSamp_unused1) DescriptorSet 0 + Decorate 124(g_tTex_unused2) DescriptorSet 0 + Decorate 124(g_tTex_unused2) Binding 12 + Decorate 126(g_sSamp_unused2) DescriptorSet 0 + Decorate 143(Color) Location 0 + Decorate 147(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypePointer UniformConstant 93(MyStruct_t) + 95(mystruct): 94(ptr) Variable UniformConstant + 96: 35(int) Constant 1 + 97: TypePointer UniformConstant 6(float) +117(g_tTex_unused1): 16(ptr) Variable UniformConstant +119(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 122: 6(float) Constant 1066192077 +124(g_tTex_unused2): 16(ptr) Variable UniformConstant +126(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 129: 6(float) Constant 1067030938 + 134(PS_OUTPUT): TypeStruct 7(fvec4) + 135: TypePointer Function 134(PS_OUTPUT) + 140: TypePointer Function 7(fvec4) + 142: TypePointer Output 7(fvec4) + 143(Color): 142(ptr) Variable Output +147(g_tTex_unused3): 16(ptr) Variable UniformConstant + 148: TypePointer UniformConstant 7(fvec4) + 149(myfloat4_a): 148(ptr) Variable UniformConstant + 150(myfloat4_b): 148(ptr) Variable UniformConstant + 151: TypeVector 40(int) 4 + 152: TypePointer UniformConstant 151(ivec4) + 153(myint4_a): 152(ptr) Variable UniformConstant + 4(main_ep): 2 Function None 3 + 5: Label + 136(psout): 135(ptr) Variable Function + 137: 7(fvec4) FunctionCall 9(Func1() + 138: 7(fvec4) FunctionCall 11(Func2() + 139: 7(fvec4) FAdd 137 138 + 141: 140(ptr) AccessChain 136(psout) 41 + Store 141 139 + 144: 140(ptr) AccessChain 136(psout) 41 + 145: 7(fvec4) Load 144 + Store 143(Color) 145 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 98: 97(ptr) AccessChain 95(mystruct) 76 96 + 99: 6(float) Load 98 + 100: 7(fvec4) CompositeConstruct 99 99 99 99 + 101: 7(fvec4) FAdd 91 100 + ReturnValue 101 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 104: 15 Load 17(g_tTex1) + 105: 19 Load 21(g_sSamp1) + 106: 23 SampledImage 104 105 + 107: 7(fvec4) ImageSampleImplicitLod 106 25 + 108: 16(ptr) AccessChain 39(g_tTex3) 53 + 109: 15 Load 108 + 110: 20(ptr) AccessChain 46(g_sSamp3) 53 + 111: 19 Load 110 + 112: 23 SampledImage 109 111 + 113: 7(fvec4) ImageSampleImplicitLod 112 50 + 114: 7(fvec4) FAdd 107 113 + ReturnValue 114 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 118: 15 Load 117(g_tTex_unused1) + 120: 19 Load 119(g_sSamp_unused1) + 121: 23 SampledImage 118 120 + 123: 7(fvec4) ImageSampleImplicitLod 121 122 + 125: 15 Load 124(g_tTex_unused2) + 127: 19 Load 126(g_sSamp_unused2) + 128: 23 SampledImage 125 127 + 130: 7(fvec4) ImageSampleImplicitLod 128 129 + 131: 7(fvec4) FAdd 123 130 + ReturnValue 131 + FunctionEnd diff --git a/Test/spv.register.autoassign.frag b/Test/spv.register.autoassign.frag new file mode 100644 index 00000000..0d6f0b2d --- /dev/null +++ b/Test/spv.register.autoassign.frag @@ -0,0 +1,71 @@ + +SamplerState g_sSamp1 : register(s0); +SamplerState g_sSamp2; +SamplerState g_sSamp3[2] : register(s2); +SamplerState g_sSamp4[3]; +SamplerState g_sSamp5; + +SamplerState g_sSamp_unused1; +SamplerState g_sSamp_unused2; + +Texture1D g_tTex1 : register(t1); +const uniform Texture1D g_tTex2; +Texture1D g_tTex3[2] : register(t3); +Texture1D g_tTex4[3]; +Texture1D g_tTex5; + +Texture1D g_tTex_unused1 : register(t0); +Texture1D g_tTex_unused2 : register(t2); +Texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + float3 c; +}; + +uniform MyStruct_t mystruct : register(b4); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform float4 myfloat4_a; +uniform float4 myfloat4_b; +uniform int4 myint4_a; + +float4 Func1() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex2 . Sample(g_sSamp2, 0.2) + + g_tTex3[0] . Sample(g_sSamp3[0], 0.3) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3) + + g_tTex4[1] . Sample(g_sSamp4[1], 0.4) + + g_tTex4[2] . Sample(g_sSamp4[2], 0.4) + + g_tTex5 . Sample(g_sSamp5, 0.5) + + mystruct.c[1]; +} + +float4 Func2() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3); +} + +// Not called from entry point: +float4 Func2_unused() +{ + return + g_tTex_unused1 . Sample(g_sSamp_unused1, 1.1) + + g_tTex_unused2 . Sample(g_sSamp_unused2, 1.2); +} + +PS_OUTPUT main_ep() +{ + PS_OUTPUT psout; + psout.Color = Func1() + Func2(); + return psout; +} diff --git a/Test/spv.register.noautoassign.frag b/Test/spv.register.noautoassign.frag new file mode 100644 index 00000000..0d6f0b2d --- /dev/null +++ b/Test/spv.register.noautoassign.frag @@ -0,0 +1,71 @@ + +SamplerState g_sSamp1 : register(s0); +SamplerState g_sSamp2; +SamplerState g_sSamp3[2] : register(s2); +SamplerState g_sSamp4[3]; +SamplerState g_sSamp5; + +SamplerState g_sSamp_unused1; +SamplerState g_sSamp_unused2; + +Texture1D g_tTex1 : register(t1); +const uniform Texture1D g_tTex2; +Texture1D g_tTex3[2] : register(t3); +Texture1D g_tTex4[3]; +Texture1D g_tTex5; + +Texture1D g_tTex_unused1 : register(t0); +Texture1D g_tTex_unused2 : register(t2); +Texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + float3 c; +}; + +uniform MyStruct_t mystruct : register(b4); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform float4 myfloat4_a; +uniform float4 myfloat4_b; +uniform int4 myint4_a; + +float4 Func1() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex2 . Sample(g_sSamp2, 0.2) + + g_tTex3[0] . Sample(g_sSamp3[0], 0.3) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3) + + g_tTex4[1] . Sample(g_sSamp4[1], 0.4) + + g_tTex4[2] . Sample(g_sSamp4[2], 0.4) + + g_tTex5 . Sample(g_sSamp5, 0.5) + + mystruct.c[1]; +} + +float4 Func2() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3); +} + +// Not called from entry point: +float4 Func2_unused() +{ + return + g_tTex_unused1 . Sample(g_sSamp_unused1, 1.1) + + g_tTex_unused2 . Sample(g_sSamp_unused2, 1.2); +} + +PS_OUTPUT main_ep() +{ + PS_OUTPUT psout; + psout.Color = Func1() + Func2(); + return psout; +} diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 6325fd4a..95d4bdd8 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -10,6 +10,7 @@ set(SOURCES MachineIndependent/glslang.y MachineIndependent/glslang_tab.cpp MachineIndependent/Constant.cpp + MachineIndependent/iomapper.cpp MachineIndependent/InfoSink.cpp MachineIndependent/Initialize.cpp MachineIndependent/IntermTraverse.cpp @@ -55,6 +56,7 @@ set(HEADERS MachineIndependent/glslang_tab.cpp.h MachineIndependent/gl_types.h MachineIndependent/Initialize.h + MachineIndependent/iomapper.h MachineIndependent/LiveTraverser.h MachineIndependent/localintermediate.h MachineIndependent/ParseHelper.h diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 414a62b3..dc0c01b6 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -60,6 +60,7 @@ #define SH_EXPORTING #include "../Public/ShaderLang.h" #include "reflection.h" +#include "iomapper.h" #include "Initialize.h" namespace { // anonymous namespace for file-local functions and symbols @@ -1488,6 +1489,10 @@ void TShader::setEntryPoint(const char* entryPoint) intermediate->setEntryPointName(entryPoint); } +void TShader::setShiftSamplerBinding(unsigned int base) { intermediate->setShiftSamplerBinding(base); } +void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShiftTextureBinding(base); } +void TShader::setShiftUboBinding(unsigned int base) { intermediate->setShiftUboBinding(base); } +void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); } // // Turn the shader strings into a parse tree in the TIntermediate. // @@ -1548,7 +1553,7 @@ const char* TShader::getInfoDebugLog() return infoSink->debug.c_str(); } -TProgram::TProgram() : pool(0), reflection(0), linked(false) +TProgram::TProgram() : pool(0), reflection(0), ioMapper(nullptr), linked(false) { infoSink = new TInfoSink; for (int s = 0; s < EShLangCount; ++s) { @@ -1700,4 +1705,24 @@ int TProgram::getAttributeType(int index) { return reflection->getAtt void TProgram::dumpReflection() { reflection->dump(); } +// +// I/O mapping implementation. +// +bool TProgram::mapIO() +{ + if (! linked || ioMapper) + return false; + + ioMapper = new TIoMapper; + + for (int s = 0; s < EShLangCount; ++s) { + if (intermediate[s]) { + if (! ioMapper->addStage((EShLanguage)s, *intermediate[s])) + return false; + } + } + + return true; +} + } // end namespace glslang diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp new file mode 100644 index 00000000..d02fb5ea --- /dev/null +++ b/glslang/MachineIndependent/iomapper.cpp @@ -0,0 +1,249 @@ +// +//Copyright (C) 2016 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. +// + +#include "../Include/Common.h" +#include "iomapper.h" +#include "LiveTraverser.h" +#include "localintermediate.h" + +#include "gl_types.h" + +#include +#include + +// +// Map IO bindings. +// +// High-level algorithm for one stage: +// +// 1. Traverse all code (live+dead) to find the explicitly provided bindings. +// +// 2. Traverse (just) the live code to determine which non-provided bindings +// require auto-numbering. We do not auto-number dead ones. +// +// 3. Traverse all the code to apply the bindings: +// a. explicitly given bindings are offset according to their type +// b. implicit live bindings are auto-numbered into the holes, using +// any open binding slot. +// c. implicit dead bindings are left un-bound. +// + + +namespace glslang { + +// Map of IDs to bindings +typedef std::unordered_map TBindingMap; +typedef std::unordered_set TUsedBindings; + + +// This traverses the AST to determine which bindings are used, and which are implicit +// (for subsequent auto-numbering) +class TBindingTraverser : public TLiveTraverser { +public: + TBindingTraverser(const TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings, + bool traverseDeadCode = false) : + TLiveTraverser(i, traverseDeadCode), + bindingMap(bindingMap), + usedBindings(usedBindings) + { } + +protected: + virtual void visitSymbol(TIntermSymbol* base) { + if (base->getQualifier().storage == EvqUniform) + addUniform(*base); + } + + // Return the right binding base given the variable type. + int getBindingBase(const TType& type) { + if (type.getBasicType() == EbtSampler) { + const TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return intermediate.getShiftSamplerBinding(); + if (sampler.isTexture()) + return intermediate.getShiftTextureBinding(); + } + + if (type.getQualifier().isUniformOrBuffer()) + return intermediate.getShiftUboBinding(); + + return -1; // not a type with a binding + } + + // Mark a given base symbol ID as being bound to 'binding' + void markBinding(const TIntermSymbol& base, int binding) { + bindingMap[base.getId()] = binding; + + if (binding >= 0) { + // const TType& type = base.getType(); + const unsigned int size = 1; // type.isArray() ? type.getCumulativeArraySize() : 1; + + for (unsigned int offset=0; offsettraverse(&it_binding_all); + + // Traverse just live code to find things that need implicit bindings. + it_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); + + while (! it_binding_live.functions.empty()) { + TIntermNode* function = it_binding_live.functions.back(); + it_binding_live.functions.pop_back(); + function->traverse(&it_binding_live); + } + + // Bind everything that needs a binding and doesn't have one. + root->traverse(&it_iomap); + + return true; +} + +} // end namespace glslang diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h new file mode 100644 index 00000000..69ed4c5b --- /dev/null +++ b/glslang/MachineIndependent/iomapper.h @@ -0,0 +1,61 @@ +// +//Copyright (C) 2016 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. +// + +#ifndef _IOMAPPER_INCLUDED +#define _IOMAPPER_INCLUDED + +#include "../Public/ShaderLang.h" + +// +// A reflection database and its interface, consistent with the OpenGL API reflection queries. +// + +namespace glslang { + +class TIntermediate; + +// I/O mapper +class TIoMapper { +public: + TIoMapper() {} + virtual ~TIoMapper() {} + + // grow the reflection stage by stage + bool addStage(EShLanguage, TIntermediate&); +}; + +} // end namespace glslang + +#endif // _IOMAPPER_INCLUDED diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 3ce615ee..4de811cf 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -141,7 +141,11 @@ public: invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone), pixelCenterInteger(false), originUpperLeft(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), pointMode(false), earlyFragmentTests(false), depthLayout(EldNone), depthReplacing(false), blendEquations(0), - multiStream(false), xfbMode(false) + multiStream(false), xfbMode(false), + shiftSamplerBinding(0), + shiftTextureBinding(0), + shiftUboBinding(0), + autoMapBindings(false) { localSize[0] = 1; localSize[1] = 1; @@ -163,6 +167,16 @@ public: void setEntryPointMangledName(const char* ep) { entryPointMangledName = ep; } const std::string& getEntryPointName() const { return entryPointName; } const std::string& getEntryPointMangledName() const { return entryPointMangledName; } + + void setShiftSamplerBinding(unsigned int shift) { shiftSamplerBinding = shift; } + unsigned int getShiftSamplerBinding() const { return shiftSamplerBinding; } + void setShiftTextureBinding(unsigned int shift) { shiftTextureBinding = shift; } + unsigned int getShiftTextureBinding() const { return shiftTextureBinding; } + void setShiftUboBinding(unsigned int shift) { shiftUboBinding = shift; } + unsigned int getShiftUboBinding() const { return shiftUboBinding; } + void setAutoMapBindings(bool map) { autoMapBindings = map; } + bool getAutoMapBindings() const { return autoMapBindings; } + void setVersion(int v) { version = v; } int getVersion() const { return version; } void setProfile(EProfile p) { profile = p; } @@ -367,6 +381,11 @@ protected: EShSource source; // source language, known a bit later std::string entryPointName; std::string entryPointMangledName; + unsigned int shiftSamplerBinding; + unsigned int shiftTextureBinding; + unsigned int shiftUboBinding; + bool autoMapBindings; + EProfile profile; int version; SpvVersion spvVersion; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index d1121595..80605ba3 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -300,6 +300,10 @@ public: const char* const* s, const int* l, const char* const* names, int n); void setPreamble(const char* s) { preamble = s; } void setEntryPoint(const char* entryPoint); + void setShiftSamplerBinding(unsigned int base); + void setShiftTextureBinding(unsigned int base); + void setShiftUboBinding(unsigned int base); + void setAutoMapBindings(bool map); // Interface to #include handlers. // @@ -433,6 +437,7 @@ private: }; class TReflection; +class TIoMapper; // 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() @@ -470,6 +475,9 @@ public: int getAttributeType(int index); // can be used for glGetActiveAttrib() void dumpReflection(); + // I/O mapping: apply base offsets and map live unbound variables + bool mapIO(); + protected: bool linkStage(EShLanguage, EShMessages); @@ -479,6 +487,7 @@ protected: bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; TReflection* reflection; + TIoMapper* ioMapper; bool linked; private: diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 45fed044..5ea46c44 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -41,11 +41,30 @@ namespace glslangtest { namespace { +struct IoMapData { + const char* fileName; + const char* entryPoint; + int baseSamplerBinding; + int baseTextureBinding; + int baseUboBinding; + bool autoMapBindings; +}; + +std::string FileNameAsCustomTestSuffixIoMap( + const ::testing::TestParamInfo& info) { + std::string name = info.param.fileName; + // A valid test case suffix cannot have '.' and '-' inside. + std::replace(name.begin(), name.end(), '.', '_'); + std::replace(name.begin(), name.end(), '-', '_'); + return name; +} + using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam>; using VulkanSemantics = GlslangTest<::testing::TestWithParam>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; using VulkanAstSemantics = GlslangTest<::testing::TestWithParam>; +using HlslSemantics = GlslangTest<::testing::TestWithParam>; // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate SPIR-V. @@ -91,6 +110,18 @@ TEST_P(VulkanAstSemantics, FromFile) Target::AST); } +// HLSL-level Vulkan semantics tests. +TEST_P(HlslSemantics, FromFile) +{ + loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, + Target::Spv, GetParam().entryPoint, + GetParam().baseSamplerBinding, + GetParam().baseTextureBinding, + GetParam().baseUboBinding, + GetParam().autoMapBindings); +} + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToSpirvTest, @@ -216,6 +247,16 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); +// clang-format off +INSTANTIATE_TEST_CASE_P( + Hlsl, HlslSemantics, + ::testing::ValuesIn(std::vector{ + { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true }, + { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false }, + }), + FileNameAsCustomTestSuffixIoMap +); + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileOpenGLToSpirvTest, diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 81930125..47e2703a 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -234,6 +234,54 @@ public: } } + // Compiles and links the given source |code| of the given shader + // |stage| into the target under the semantics specified via |controls|. + // Returns a GlslangResult instance containing all the information generated + // during the process. If the target includes SPIR-V, also disassembles + // the result and returns disassembly text. + GlslangResult compileLinkIoMap( + const std::string shaderName, const std::string& code, + const std::string& entryPointName, EShMessages controls, + int baseSamplerBinding, + int baseTextureBinding, + int baseUboBinding, + bool autoMapBindings) + { + const EShLanguage kind = GetShaderStage(GetSuffix(shaderName)); + + glslang::TShader shader(kind); + shader.setShiftSamplerBinding(baseSamplerBinding); + shader.setShiftTextureBinding(baseTextureBinding); + shader.setShiftUboBinding(baseUboBinding); + shader.setAutoMapBindings(autoMapBindings); + + bool success = compile(&shader, code, entryPointName, controls); + + glslang::TProgram program; + program.addShader(&shader); + + success &= program.link(controls); + success &= program.mapIO(); + + spv::SpvBuildLogger logger; + + if (success && (controls & EShMsgSpvRules)) { + std::vector spirv_binary; + glslang::GlslangToSpv(*program.getIntermediate(kind), + spirv_binary, &logger); + + std::ostringstream disassembly_stream; + spv::Parameterize(); + spv::Disassemble(disassembly_stream, spirv_binary); + return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, + program.getInfoLog(), program.getInfoDebugLog(), + logger.getAllMessages(), disassembly_stream.str()}; + } else { + return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, + program.getInfoLog(), program.getInfoDebugLog(), "", ""}; + } + } + // This is like compileAndLink but with remapping of the SPV binary // through spirvbin_t::remap(). While technically this could be merged // with compileAndLink() above (with the remap step optionally being a no-op) @@ -347,6 +395,38 @@ public: expectedOutputFname); } + void loadFileCompileIoMapAndCheck(const std::string& testDir, + const std::string& testName, + Source source, + Semantics semantics, + Target target, + const std::string& entryPointName, + int baseSamplerBinding, + int baseTextureBinding, + int baseUboBinding, + bool autoMapBindings) + { + const std::string inputFname = testDir + "/" + testName; + const std::string expectedOutputFname = + testDir + "/baseResults/" + testName + ".out"; + std::string input, expectedOutput; + + tryLoadFile(inputFname, "input", &input); + tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); + + const EShMessages controls = DeriveOptions(source, semantics, target); + GlslangResult result = compileLinkIoMap(testName, input, entryPointName, controls, + baseSamplerBinding, baseTextureBinding, baseUboBinding, + autoMapBindings); + + // Generate the hybrid output in the way of glslangValidator. + std::ostringstream stream; + outputResultToStream(&stream, result, controls); + + checkEqAndUpdateIfRequested(expectedOutput, stream.str(), + expectedOutputFname); + } + void loadFileCompileRemapAndCheck(const std::string& testDir, const std::string& testName, Source source, From 6714bcc2ca97f668c0358f3d8ce039d61b5ab25e Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 21 Sep 2016 17:50:12 -0600 Subject: [PATCH 002/130] HLSL: Fix result type of passing a flattened-aggregate to a function. --- Test/baseResults/hlsl.entry-in.frag.out | 6 +++--- glslang/Include/revision.h | 4 ++-- hlsl/hlslParseHelper.cpp | 8 ++++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out index 5baea644..8572fa1c 100755 --- a/Test/baseResults/hlsl.entry-in.frag.out +++ b/Test/baseResults/hlsl.entry-in.frag.out @@ -54,7 +54,7 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float) -0:? Comma (temp float) +0:? Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:? move second child to first child (temp 2-component vector of float) 0:? v: direct index for structure (temp 2-component vector of float) @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float) -0:? Comma (temp float) +0:? Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:? move second child to first child (temp 2-component vector of float) 0:? v: direct index for structure (temp 2-component vector of float) @@ -256,7 +256,7 @@ gl_FragCoord origin is upper left 48(param): 12(ptr) Variable Function 51(ret2): 20(ptr) Variable Function 52(aggShadow): 12(ptr) Variable Function - 59(param): 20(ptr) Variable Function + 59(param): 12(ptr) Variable Function 33: 7(fvec2) Load 32(v) 35: 34(ptr) AccessChain 30(local) 17 Store 35 33 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 6850d6fc..0fd06e15 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1503" -#define GLSLANG_DATE "20-Sep-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1506" +#define GLSLANG_DATE "21-Sep-2016" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 63cd5ecf..5af79040 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -2277,6 +2277,10 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI } } else { if (shouldFlatten(arg->getType())) { + // Will make a two-level subtree. + // The deepest will copy member-by-member to build the structure to pass. + // The level above that will be an two-operand EOpComma sequence that follows the copy by the + // object itself. TSourceLoc dummyLoc; dummyLoc.init(); TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[i].type); @@ -2284,9 +2288,13 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI TIntermSymbol* internalSymbolNode = new TIntermSymbol(internalAggregate->getUniqueId(), internalAggregate->getName(), internalAggregate->getType()); + // This makes the deepest level, the member-wise copy TIntermAggregate* assignAgg = handleAssign(dummyLoc, EOpAssign, internalSymbolNode, arg)->getAsAggregate(); + + // Now, pair that with the resulting aggregate. assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode); assignAgg->setOperator(EOpComma); + assignAgg->setType(internalAggregate->getType()); setArg(i, assignAgg); } } From 5159664475c1698c056ef80a3352e8d3600d99f3 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Wed, 21 Sep 2016 18:56:12 +0800 Subject: [PATCH 003/130] SPV: Implement the extension SPV_KHR_shader_ballot --- SPIRV/CMakeLists.txt | 1 + SPIRV/GLSL.ext.KHR.h | 51 ++ SPIRV/GlslangToSpv.cpp | 169 +++++-- SPIRV/SpvBuilder.cpp | 4 +- SPIRV/SpvBuilder.h | 4 +- SPIRV/doc.cpp | 24 +- Test/baseResults/spv.shaderBallot.comp.out | 563 +++++++++++---------- glslang/MachineIndependent/Initialize.cpp | 5 +- 8 files changed, 480 insertions(+), 341 deletions(-) create mode 100644 SPIRV/GLSL.ext.KHR.h diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 48a6c468..ad72276f 100755 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -13,6 +13,7 @@ set(SPVREMAP_SOURCES set(HEADERS spirv.hpp GLSL.std.450.h + GLSL.ext.KHR.h GlslangToSpv.h Logger.h SpvBuilder.h diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h new file mode 100644 index 00000000..7ce795f4 --- /dev/null +++ b/SPIRV/GLSL.ext.KHR.h @@ -0,0 +1,51 @@ +/* +** Copyright (c) 2014-2016 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 GLSLextKHR_H +#define GLSLextKHR_H + +enum BuiltIn; +enum Op; +enum Capability; + +static const int GLSLextKHRVersion = 100; +static const int GLSLextKHRRevision = 1; + +// SPV_KHR_shader_ballot +static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; + +static const BuiltIn BuiltInSubgroupEqMaskKHR = static_cast(4416); +static const BuiltIn BuiltInSubgroupGeMaskKHR = static_cast(4417); +static const BuiltIn BuiltInSubgroupGtMaskKHR = static_cast(4418); +static const BuiltIn BuiltInSubgroupLeMaskKHR = static_cast(4419); +static const BuiltIn BuiltInSubgroupLtMaskKHR = static_cast(4420); + +static const Op OpSubgroupBallotKHR = static_cast(4421); +static const Op OpSubgroupFirstInvocationKHR = static_cast(4422); + +static const Capability CapabilitySubgroupBallotKHR = static_cast(4423); + +#endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 72865886..8372dbb8 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -42,9 +42,10 @@ #include "GlslangToSpv.h" #include "SpvBuilder.h" namespace spv { - #include "GLSL.std.450.h" + #include "GLSL.std.450.h" + #include "GLSL.ext.KHR.h" #ifdef AMD_EXTENSIONS - #include "GLSL.ext.AMD.h" + #include "GLSL.ext.AMD.h" #endif } @@ -154,7 +155,7 @@ protected: spv::Id createConversion(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id destTypeId, spv::Id operand, glslang::TBasicType typeProxy); 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); - spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy); + spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); #ifdef AMD_EXTENSIONS spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, spv::Id operand); #endif @@ -521,16 +522,40 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId; case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex; case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; + case glslang::EbvSubGroupSize: + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupSize; + case glslang::EbvSubGroupInvocation: + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupLocalInvocationId; + case glslang::EbvSubGroupEqMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupEqMaskKHR; + case glslang::EbvSubGroupGeMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupGeMaskKHR; + case glslang::EbvSubGroupGtMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupGtMaskKHR; + case glslang::EbvSubGroupLeMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupLeMaskKHR; + case glslang::EbvSubGroupLtMask: - // TODO: Add SPIR-V builtin ID. - logger->missingFunctionality("shader ballot"); - return spv::BuiltInMax; + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupLtMaskKHR; + #ifdef AMD_EXTENSIONS case glslang::EbvBaryCoordNoPersp: return spv::BuiltInBaryCoordNoPerspAMD; case glslang::EbvBaryCoordNoPerspCentroid: return spv::BuiltInBaryCoordNoPerspCentroidAMD; @@ -3610,10 +3635,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: case glslang::EOpBallot: case glslang::EOpReadFirstInvocation: - logger->missingFunctionality("shader ballot"); - libCall = spv::GLSLstd450Bad; - break; - case glslang::EOpAnyInvocation: case glslang::EOpAllInvocations: case glslang::EOpAllInvocationsEqual: @@ -3625,7 +3646,11 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: case glslang::EOpMaxInvocationsNonUniform: case glslang::EOpAddInvocationsNonUniform: #endif - return createInvocationsOperation(op, typeId, operand, typeProxy); + { + std::vector operands; + operands.push_back(operand); + return createInvocationsOperation(op, typeId, operands, typeProxy); + } #ifdef AMD_EXTENSIONS case glslang::EOpMbcnt: @@ -3959,113 +3984,149 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv } // Create group invocation operations. -spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy) +spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; - builder.addCapability(spv::CapabilityGroups); + spv::Op opCode = spv::OpNop; - std::vector operands; - operands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); + std::vector spvGroupOperands; + if (op == glslang::EOpBallot || op == glslang::EOpReadFirstInvocation) { + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + } else { + builder.addCapability(spv::CapabilityGroups); + + spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); #ifdef AMD_EXTENSIONS - if (op == glslang::EOpMinInvocations || op == glslang::EOpMaxInvocations || op == glslang::EOpAddInvocations || - op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform) - operands.push_back(spv::GroupOperationReduce); + if (op == glslang::EOpMinInvocations || op == glslang::EOpMaxInvocations || op == glslang::EOpAddInvocations || + op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform) + spvGroupOperands.push_back(spv::GroupOperationReduce); #endif - operands.push_back(operand); + } + + for (auto opIt = operands.begin(); opIt != operands.end(); ++opIt) + spvGroupOperands.push_back(*opIt); switch (op) { case glslang::EOpAnyInvocation: + opCode = spv::OpGroupAny; + break; case glslang::EOpAllInvocations: - return builder.createOp(op == glslang::EOpAnyInvocation ? spv::OpGroupAny : spv::OpGroupAll, typeId, operands); - + opCode = spv::OpGroupAll; + break; case glslang::EOpAllInvocationsEqual: { - spv::Id groupAll = builder.createOp(spv::OpGroupAll, typeId, operands); - spv::Id groupAny = builder.createOp(spv::OpGroupAny, typeId, operands); + spv::Id groupAll = builder.createOp(spv::OpGroupAll, typeId, spvGroupOperands); + spv::Id groupAny = builder.createOp(spv::OpGroupAny, typeId, spvGroupOperands); return builder.createBinOp(spv::OpLogicalOr, typeId, groupAll, builder.createUnaryOp(spv::OpLogicalNot, typeId, groupAny)); } + + case glslang::EOpReadInvocation: + opCode = spv::OpGroupBroadcast; + break; + case glslang::EOpReadFirstInvocation: + opCode = spv::OpSubgroupFirstInvocationKHR; + break; + case glslang::EOpBallot: + { + // NOTE: According to the spec, the result type of "OpSubgroupBallotKHR" must be a 4 component vector of 32 + // bit integer types. The GLSL built-in function "ballotARB()" assumes the maximum number of invocations in + // a subgroup is 64. Thus, we have to convert uvec4.xy to uint64_t as follow: + // + // result = Bitcast(SubgroupBallotKHR(Predicate).xy) + // + spv::Id uintType = builder.makeUintType(32); + spv::Id uvec4Type = builder.makeVectorType(uintType, 4); + spv::Id result = builder.createOp(spv::OpSubgroupBallotKHR, uvec4Type, spvGroupOperands); + + std::vector components; + components.push_back(builder.createCompositeExtract(result, uintType, 0)); + components.push_back(builder.createCompositeExtract(result, uintType, 1)); + + spv::Id uvec2Type = builder.makeVectorType(uintType, 2); + return builder.createUnaryOp(spv::OpBitcast, typeId, + builder.createCompositeConstruct(uvec2Type, components)); + } + #ifdef AMD_EXTENSIONS case glslang::EOpMinInvocations: case glslang::EOpMaxInvocations: case glslang::EOpAddInvocations: - { - spv::Op spvOp = spv::OpNop; if (op == glslang::EOpMinInvocations) { if (isFloat) - spvOp = spv::OpGroupFMin; + opCode = spv::OpGroupFMin; else { if (isUnsigned) - spvOp = spv::OpGroupUMin; + opCode = spv::OpGroupUMin; else - spvOp = spv::OpGroupSMin; + opCode = spv::OpGroupSMin; } } else if (op == glslang::EOpMaxInvocations) { if (isFloat) - spvOp = spv::OpGroupFMax; + opCode = spv::OpGroupFMax; else { if (isUnsigned) - spvOp = spv::OpGroupUMax; + opCode = spv::OpGroupUMax; else - spvOp = spv::OpGroupSMax; + opCode = spv::OpGroupSMax; } } else { if (isFloat) - spvOp = spv::OpGroupFAdd; + opCode = spv::OpGroupFAdd; else - spvOp = spv::OpGroupIAdd; + opCode = spv::OpGroupIAdd; } if (builder.isVectorType(typeId)) - return CreateInvocationsVectorOperation(spvOp, typeId, operand); - else - return builder.createOp(spvOp, typeId, operands); - } + return CreateInvocationsVectorOperation(opCode, typeId, operands[0]); + + break; case glslang::EOpMinInvocationsNonUniform: case glslang::EOpMaxInvocationsNonUniform: case glslang::EOpAddInvocationsNonUniform: - { - spv::Op spvOp = spv::OpNop; if (op == glslang::EOpMinInvocationsNonUniform) { if (isFloat) - spvOp = spv::OpGroupFMinNonUniformAMD; + opCode = spv::OpGroupFMinNonUniformAMD; else { if (isUnsigned) - spvOp = spv::OpGroupUMinNonUniformAMD; + opCode = spv::OpGroupUMinNonUniformAMD; else - spvOp = spv::OpGroupSMinNonUniformAMD; + opCode = spv::OpGroupSMinNonUniformAMD; } } else if (op == glslang::EOpMaxInvocationsNonUniform) { if (isFloat) - spvOp = spv::OpGroupFMaxNonUniformAMD; + opCode = spv::OpGroupFMaxNonUniformAMD; else { if (isUnsigned) - spvOp = spv::OpGroupUMaxNonUniformAMD; + opCode = spv::OpGroupUMaxNonUniformAMD; else - spvOp = spv::OpGroupSMaxNonUniformAMD; + opCode = spv::OpGroupSMaxNonUniformAMD; } } else { if (isFloat) - spvOp = spv::OpGroupFAddNonUniformAMD; + opCode = spv::OpGroupFAddNonUniformAMD; else - spvOp = spv::OpGroupIAddNonUniformAMD; + opCode = spv::OpGroupIAddNonUniformAMD; } if (builder.isVectorType(typeId)) - return CreateInvocationsVectorOperation(spvOp, typeId, operand); - else - return builder.createOp(spvOp, typeId, operands); - } + return CreateInvocationsVectorOperation(opCode, typeId, operands[0]); + + break; #endif default: logger->missingFunctionality("invocation operation"); return spv::NoResult; } + + assert(opCode != spv::OpNop); + return builder.createOp(opCode, typeId, spvGroupOperands); } #ifdef AMD_EXTENSIONS @@ -4256,9 +4317,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: break; case glslang::EOpReadInvocation: - logger->missingFunctionality("shader ballot"); - libCall = spv::GLSLstd450Bad; - break; + return createInvocationsOperation(op, typeId, operands, typeProxy); #ifdef AMD_EXTENSIONS case glslang::EOpSwizzleInvocations: @@ -4825,7 +4884,7 @@ spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name) if (extBuiltinMap.find(name) != extBuiltinMap.end()) return extBuiltinMap[name]; else { - builder.addExtensions(name); + builder.addExtension(name); spv::Id extBuiltins = builder.import(name); extBuiltinMap[name] = extBuiltins; return extBuiltins; diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index a881d1b4..7aaa51f9 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2318,9 +2318,9 @@ void Builder::dump(std::vector& out) const capInst.dump(out); } - for (int e = 0; e < (int)extensions.size(); ++e) { + for (auto it = extensions.cbegin(); it != extensions.cend(); ++it) { Instruction extInst(0, 0, OpExtension); - extInst.addStringOperand(extensions[e]); + extInst.addStringOperand(*it); extInst.dump(out); } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 38dc1fa3..6e709eaa 100755 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -71,7 +71,7 @@ public: sourceVersion = version; } void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); } - void addExtensions(const char* ext) { extensions.push_back(ext); } + void addExtension(const char* ext) { extensions.insert(ext); } Id import(const char*); void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem) { @@ -552,7 +552,7 @@ public: SourceLanguage source; int sourceVersion; - std::vector extensions; + std::set extensions; std::vector sourceExtensions; AddressingModel addressModel; MemoryModel memoryModel; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index a25f7c00..d2161dd8 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -45,14 +45,15 @@ #include #include -#ifdef AMD_EXTENSIONS namespace spv { extern "C" { // Include C-based headers that don't have a namespace + #include "GLSL.ext.KHR.h" +#ifdef AMD_EXTENSIONS #include "GLSL.ext.AMD.h" +#endif } } -#endif namespace spv { @@ -312,6 +313,12 @@ const char* BuiltInString(int builtIn) case BuiltInCeiling: default: return "Bad"; + case 4416: return "SubgroupEqMaskKHR"; + case 4417: return "SubgroupGeMaskKHR"; + case 4418: return "SubgroupGtMaskKHR"; + case 4419: return "SubgroupLeMaskKHR"; + case 4420: return "SubgroupLtMaskKHR"; + #ifdef AMD_EXTENSIONS case 4992: return "BaryCoordNoPerspAMD"; case 4993: return "BaryCoordNoPerspCentroidAMD"; @@ -799,6 +806,8 @@ const char* CapabilityString(int info) case CapabilityCeiling: default: return "Bad"; + + case 4423: return "SubgroupBallotKHR"; } } @@ -1131,6 +1140,9 @@ const char* OpcodeString(int op) default: return "Bad"; + case 4421: return "OpSubgroupBallotKHR"; + case 4422: return "OpSubgroupFirstInvocationKHR"; + #ifdef AMD_EXTENSIONS case 5000: return "OpGroupIAddNonUniformAMD"; case 5001: return "OpGroupFAddNonUniformAMD"; @@ -1146,11 +1158,7 @@ const char* OpcodeString(int op) // The set of objects that hold all the instruction/operand // parameterization information. -#ifdef AMD_EXTENSIONS InstructionParameters InstructionDesc[OpCodeMask + 1]; -#else -InstructionParameters InstructionDesc[OpcodeCeiling]; -#endif OperandParameters ExecutionModeOperands[ExecutionModeCeiling]; OperandParameters DecorationOperands[DecorationCeiling]; @@ -2742,6 +2750,10 @@ void Parameterize() InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'"); InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'"); + InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'"); + #ifdef AMD_EXTENSIONS InstructionDesc[OpGroupIAddNonUniformAMD].capabilities.push_back(CapabilityGroups); InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index cb2e0130..c60db162 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -5,16 +5,18 @@ Warning, version 450 is not yet complete; most version-specific features are pre Linked compute stage: -Missing functionality: shader ballot // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 241 +// Id's are bound by 245 Capability Shader Capability Int64 + Capability Groups + Capability SubgroupBallotKHR + Extension "SPV_KHR_shader_ballot" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 "main" 10 22 24 27 30 33 + EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" @@ -22,293 +24,304 @@ Missing functionality: shader ballot Name 4 "main" Name 8 "invocation" Name 10 "gl_SubGroupInvocationARB" - Name 13 "gl_SubGroupSizeARB" - Name 20 "relMask" - Name 22 "gl_SubGroupEqMaskARB" - Name 24 "gl_SubGroupGeMaskARB" - Name 27 "gl_SubGroupGtMaskARB" - Name 30 "gl_SubGroupLeMaskARB" - Name 33 "gl_SubGroupLtMaskARB" - Name 48 "Buffers" - MemberName 48(Buffers) 0 "f4" - MemberName 48(Buffers) 1 "i4" - MemberName 48(Buffers) 2 "u4" - Name 51 "data" - MemberDecorate 48(Buffers) 0 Offset 0 - MemberDecorate 48(Buffers) 1 Offset 16 - MemberDecorate 48(Buffers) 2 Offset 32 - Decorate 48(Buffers) BufferBlock - Decorate 51(data) DescriptorSet 0 - Decorate 51(data) Binding 0 - Decorate 240 BuiltIn WorkgroupSize + Name 12 "gl_SubGroupSizeARB" + Name 19 "relMask" + Name 21 "gl_SubGroupEqMaskARB" + Name 23 "gl_SubGroupGeMaskARB" + Name 26 "gl_SubGroupGtMaskARB" + Name 29 "gl_SubGroupLeMaskARB" + Name 32 "gl_SubGroupLtMaskARB" + Name 52 "Buffers" + MemberName 52(Buffers) 0 "f4" + MemberName 52(Buffers) 1 "i4" + MemberName 52(Buffers) 2 "u4" + Name 55 "data" + Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId + Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize + Decorate 21(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR + Decorate 23(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR + Decorate 26(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR + Decorate 29(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR + Decorate 32(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR + MemberDecorate 52(Buffers) 0 Offset 0 + MemberDecorate 52(Buffers) 1 Offset 16 + MemberDecorate 52(Buffers) 2 Offset 32 + Decorate 52(Buffers) BufferBlock + Decorate 55(data) DescriptorSet 0 + Decorate 55(data) Binding 0 + Decorate 244 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubGroupInvocationARB): 9(ptr) Variable Input - 12: TypePointer UniformConstant 6(int) -13(gl_SubGroupSizeARB): 12(ptr) Variable UniformConstant - 16: 6(int) Constant 4 - 18: TypeInt 64 0 - 19: TypePointer Function 18(int) - 21: TypePointer Input 18(int) -22(gl_SubGroupEqMaskARB): 21(ptr) Variable Input -24(gl_SubGroupGeMaskARB): 21(ptr) Variable Input -27(gl_SubGroupGtMaskARB): 21(ptr) Variable Input -30(gl_SubGroupLeMaskARB): 21(ptr) Variable Input -33(gl_SubGroupLtMaskARB): 21(ptr) Variable Input - 37: TypeBool - 38: 37(bool) ConstantTrue - 43: TypeFloat 32 - 44: TypeVector 43(float) 4 - 45: TypeInt 32 1 - 46: TypeVector 45(int) 4 - 47: TypeVector 6(int) 4 - 48(Buffers): TypeStruct 44(fvec4) 46(ivec4) 47(ivec4) - 49: TypeArray 48(Buffers) 16 - 50: TypePointer Uniform 49 - 51(data): 50(ptr) Variable Uniform - 53: 45(int) Constant 0 - 54: 6(int) Constant 0 - 55: TypePointer Uniform 43(float) - 62: 45(int) Constant 1 - 63: TypeVector 43(float) 2 - 64: TypePointer Uniform 44(fvec4) - 74: 45(int) Constant 2 - 75: TypeVector 43(float) 3 - 85: 45(int) Constant 3 - 92: TypePointer Uniform 45(int) - 99: TypeVector 45(int) 2 - 100: TypePointer Uniform 46(ivec4) - 110: TypeVector 45(int) 3 - 126: TypePointer Uniform 6(int) - 133: TypeVector 6(int) 2 - 134: TypePointer Uniform 47(ivec4) - 144: TypeVector 6(int) 3 - 238: 6(int) Constant 8 - 239: 6(int) Constant 1 - 240: 144(ivec3) ConstantComposite 238 238 239 +12(gl_SubGroupSizeARB): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 64 0 + 18: TypePointer Function 17(int) + 20: TypePointer Input 17(int) +21(gl_SubGroupEqMaskARB): 20(ptr) Variable Input +23(gl_SubGroupGeMaskARB): 20(ptr) Variable Input +26(gl_SubGroupGtMaskARB): 20(ptr) Variable Input +29(gl_SubGroupLeMaskARB): 20(ptr) Variable Input +32(gl_SubGroupLtMaskARB): 20(ptr) Variable Input + 36: TypeBool + 37: 36(bool) ConstantTrue + 38: TypeVector 6(int) 4 + 42: TypeVector 6(int) 2 + 48: TypeFloat 32 + 49: TypeVector 48(float) 4 + 50: TypeInt 32 1 + 51: TypeVector 50(int) 4 + 52(Buffers): TypeStruct 49(fvec4) 51(ivec4) 38(ivec4) + 53: TypeArray 52(Buffers) 15 + 54: TypePointer Uniform 53 + 55(data): 54(ptr) Variable Uniform + 57: 50(int) Constant 0 + 58: 6(int) Constant 0 + 59: TypePointer Uniform 48(float) + 63: 6(int) Constant 3 + 67: 50(int) Constant 1 + 68: TypeVector 48(float) 2 + 69: TypePointer Uniform 49(fvec4) + 79: 50(int) Constant 2 + 80: TypeVector 48(float) 3 + 90: 50(int) Constant 3 + 97: TypePointer Uniform 50(int) + 104: TypeVector 50(int) 2 + 105: TypePointer Uniform 51(ivec4) + 115: TypeVector 50(int) 3 + 131: TypePointer Uniform 6(int) + 138: TypePointer Uniform 38(ivec4) + 148: TypeVector 6(int) 3 + 242: 6(int) Constant 8 + 243: 6(int) Constant 1 + 244: 148(ivec3) ConstantComposite 242 242 243 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function - 20(relMask): 19(ptr) Variable Function + 19(relMask): 18(ptr) Variable Function 11: 6(int) Load 10(gl_SubGroupInvocationARB) - 14: 6(int) Load 13(gl_SubGroupSizeARB) - 15: 6(int) IAdd 11 14 - 17: 6(int) UMod 15 16 - Store 8(invocation) 17 - 23: 18(int) Load 22(gl_SubGroupEqMaskARB) - 25: 18(int) Load 24(gl_SubGroupGeMaskARB) - 26: 18(int) IAdd 23 25 - 28: 18(int) Load 27(gl_SubGroupGtMaskARB) - 29: 18(int) IAdd 26 28 - 31: 18(int) Load 30(gl_SubGroupLeMaskARB) - 32: 18(int) IAdd 29 31 - 34: 18(int) Load 33(gl_SubGroupLtMaskARB) - 35: 18(int) IAdd 32 34 - Store 20(relMask) 35 - 36: 18(int) Load 20(relMask) - 39: 18(int) ExtInst 1(GLSL.std.450) 0(Unknown) 38 - 40: 37(bool) IEqual 36 39 - SelectionMerge 42 None - BranchConditional 40 41 159 - 41: Label - 52: 6(int) Load 8(invocation) - 56: 55(ptr) AccessChain 51(data) 53 53 54 - 57: 43(float) Load 56 - 58: 6(int) Load 8(invocation) - 59: 43(float) ExtInst 1(GLSL.std.450) 0(Unknown) 57 58 - 60: 55(ptr) AccessChain 51(data) 52 53 54 - Store 60 59 - 61: 6(int) Load 8(invocation) - 65: 64(ptr) AccessChain 51(data) 62 53 - 66: 44(fvec4) Load 65 - 67: 63(fvec2) VectorShuffle 66 66 0 1 - 68: 6(int) Load 8(invocation) - 69: 63(fvec2) ExtInst 1(GLSL.std.450) 0(Unknown) 67 68 - 70: 64(ptr) AccessChain 51(data) 61 53 - 71: 44(fvec4) Load 70 - 72: 44(fvec4) VectorShuffle 71 69 4 5 2 3 - Store 70 72 + 13: 6(int) Load 12(gl_SubGroupSizeARB) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 22: 17(int) Load 21(gl_SubGroupEqMaskARB) + 24: 17(int) Load 23(gl_SubGroupGeMaskARB) + 25: 17(int) IAdd 22 24 + 27: 17(int) Load 26(gl_SubGroupGtMaskARB) + 28: 17(int) IAdd 25 27 + 30: 17(int) Load 29(gl_SubGroupLeMaskARB) + 31: 17(int) IAdd 28 30 + 33: 17(int) Load 32(gl_SubGroupLtMaskARB) + 34: 17(int) IAdd 31 33 + Store 19(relMask) 34 + 35: 17(int) Load 19(relMask) + 39: 38(ivec4) SubgroupBallotKHR 37 + 40: 6(int) CompositeExtract 39 0 + 41: 6(int) CompositeExtract 39 1 + 43: 42(ivec2) CompositeConstruct 40 41 + 44: 17(int) Bitcast 43 + 45: 36(bool) IEqual 35 44 + SelectionMerge 47 None + BranchConditional 45 46 163 + 46: Label + 56: 6(int) Load 8(invocation) + 60: 59(ptr) AccessChain 55(data) 57 57 58 + 61: 48(float) Load 60 + 62: 6(int) Load 8(invocation) + 64: 48(float) GroupBroadcast 63 61 62 + 65: 59(ptr) AccessChain 55(data) 56 57 58 + Store 65 64 + 66: 6(int) Load 8(invocation) + 70: 69(ptr) AccessChain 55(data) 67 57 + 71: 49(fvec4) Load 70 + 72: 68(fvec2) VectorShuffle 71 71 0 1 73: 6(int) Load 8(invocation) - 76: 64(ptr) AccessChain 51(data) 74 53 - 77: 44(fvec4) Load 76 - 78: 75(fvec3) VectorShuffle 77 77 0 1 2 - 79: 6(int) Load 8(invocation) - 80: 75(fvec3) ExtInst 1(GLSL.std.450) 0(Unknown) 78 79 - 81: 64(ptr) AccessChain 51(data) 73 53 - 82: 44(fvec4) Load 81 - 83: 44(fvec4) VectorShuffle 82 80 4 5 6 3 - Store 81 83 + 74: 68(fvec2) GroupBroadcast 63 72 73 + 75: 69(ptr) AccessChain 55(data) 66 57 + 76: 49(fvec4) Load 75 + 77: 49(fvec4) VectorShuffle 76 74 4 5 2 3 + Store 75 77 + 78: 6(int) Load 8(invocation) + 81: 69(ptr) AccessChain 55(data) 79 57 + 82: 49(fvec4) Load 81 + 83: 80(fvec3) VectorShuffle 82 82 0 1 2 84: 6(int) Load 8(invocation) - 86: 64(ptr) AccessChain 51(data) 85 53 - 87: 44(fvec4) Load 86 - 88: 6(int) Load 8(invocation) - 89: 44(fvec4) ExtInst 1(GLSL.std.450) 0(Unknown) 87 88 - 90: 64(ptr) AccessChain 51(data) 84 53 - Store 90 89 - 91: 6(int) Load 8(invocation) - 93: 92(ptr) AccessChain 51(data) 53 62 54 - 94: 45(int) Load 93 - 95: 6(int) Load 8(invocation) - 96: 45(int) ExtInst 1(GLSL.std.450) 0(Unknown) 94 95 - 97: 92(ptr) AccessChain 51(data) 91 62 54 - Store 97 96 - 98: 6(int) Load 8(invocation) - 101: 100(ptr) AccessChain 51(data) 62 62 - 102: 46(ivec4) Load 101 - 103: 99(ivec2) VectorShuffle 102 102 0 1 - 104: 6(int) Load 8(invocation) - 105: 99(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 103 104 - 106: 100(ptr) AccessChain 51(data) 98 62 - 107: 46(ivec4) Load 106 - 108: 46(ivec4) VectorShuffle 107 105 4 5 2 3 - Store 106 108 + 85: 80(fvec3) GroupBroadcast 63 83 84 + 86: 69(ptr) AccessChain 55(data) 78 57 + 87: 49(fvec4) Load 86 + 88: 49(fvec4) VectorShuffle 87 85 4 5 6 3 + Store 86 88 + 89: 6(int) Load 8(invocation) + 91: 69(ptr) AccessChain 55(data) 90 57 + 92: 49(fvec4) Load 91 + 93: 6(int) Load 8(invocation) + 94: 49(fvec4) GroupBroadcast 63 92 93 + 95: 69(ptr) AccessChain 55(data) 89 57 + Store 95 94 + 96: 6(int) Load 8(invocation) + 98: 97(ptr) AccessChain 55(data) 57 67 58 + 99: 50(int) Load 98 + 100: 6(int) Load 8(invocation) + 101: 50(int) GroupBroadcast 63 99 100 + 102: 97(ptr) AccessChain 55(data) 96 67 58 + Store 102 101 + 103: 6(int) Load 8(invocation) + 106: 105(ptr) AccessChain 55(data) 67 67 + 107: 51(ivec4) Load 106 + 108: 104(ivec2) VectorShuffle 107 107 0 1 109: 6(int) Load 8(invocation) - 111: 100(ptr) AccessChain 51(data) 74 62 - 112: 46(ivec4) Load 111 - 113: 110(ivec3) VectorShuffle 112 112 0 1 2 + 110: 104(ivec2) GroupBroadcast 63 108 109 + 111: 105(ptr) AccessChain 55(data) 103 67 + 112: 51(ivec4) Load 111 + 113: 51(ivec4) VectorShuffle 112 110 4 5 2 3 + Store 111 113 114: 6(int) Load 8(invocation) - 115: 110(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 113 114 - 116: 100(ptr) AccessChain 51(data) 109 62 - 117: 46(ivec4) Load 116 - 118: 46(ivec4) VectorShuffle 117 115 4 5 6 3 - Store 116 118 + 116: 105(ptr) AccessChain 55(data) 79 67 + 117: 51(ivec4) Load 116 + 118: 115(ivec3) VectorShuffle 117 117 0 1 2 119: 6(int) Load 8(invocation) - 120: 100(ptr) AccessChain 51(data) 85 62 - 121: 46(ivec4) Load 120 - 122: 6(int) Load 8(invocation) - 123: 46(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 121 122 - 124: 100(ptr) AccessChain 51(data) 119 62 - Store 124 123 - 125: 6(int) Load 8(invocation) - 127: 126(ptr) AccessChain 51(data) 53 74 54 - 128: 6(int) Load 127 - 129: 6(int) Load 8(invocation) - 130: 6(int) ExtInst 1(GLSL.std.450) 0(Unknown) 128 129 - 131: 126(ptr) AccessChain 51(data) 125 74 54 - Store 131 130 - 132: 6(int) Load 8(invocation) - 135: 134(ptr) AccessChain 51(data) 62 74 - 136: 47(ivec4) Load 135 - 137: 133(ivec2) VectorShuffle 136 136 0 1 - 138: 6(int) Load 8(invocation) - 139: 133(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 137 138 - 140: 134(ptr) AccessChain 51(data) 132 74 - 141: 47(ivec4) Load 140 - 142: 47(ivec4) VectorShuffle 141 139 4 5 2 3 - Store 140 142 - 143: 6(int) Load 8(invocation) - 145: 134(ptr) AccessChain 51(data) 74 74 - 146: 47(ivec4) Load 145 - 147: 144(ivec3) VectorShuffle 146 146 0 1 2 - 148: 6(int) Load 8(invocation) - 149: 144(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 147 148 - 150: 134(ptr) AccessChain 51(data) 143 74 - 151: 47(ivec4) Load 150 - 152: 47(ivec4) VectorShuffle 151 149 4 5 6 3 - Store 150 152 - 153: 6(int) Load 8(invocation) - 154: 134(ptr) AccessChain 51(data) 85 74 - 155: 47(ivec4) Load 154 - 156: 6(int) Load 8(invocation) - 157: 47(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 155 156 - 158: 134(ptr) AccessChain 51(data) 153 74 - Store 158 157 - Branch 42 - 159: Label + 120: 115(ivec3) GroupBroadcast 63 118 119 + 121: 105(ptr) AccessChain 55(data) 114 67 + 122: 51(ivec4) Load 121 + 123: 51(ivec4) VectorShuffle 122 120 4 5 6 3 + Store 121 123 + 124: 6(int) Load 8(invocation) + 125: 105(ptr) AccessChain 55(data) 90 67 + 126: 51(ivec4) Load 125 + 127: 6(int) Load 8(invocation) + 128: 51(ivec4) GroupBroadcast 63 126 127 + 129: 105(ptr) AccessChain 55(data) 124 67 + Store 129 128 + 130: 6(int) Load 8(invocation) + 132: 131(ptr) AccessChain 55(data) 57 79 58 + 133: 6(int) Load 132 + 134: 6(int) Load 8(invocation) + 135: 6(int) GroupBroadcast 63 133 134 + 136: 131(ptr) AccessChain 55(data) 130 79 58 + Store 136 135 + 137: 6(int) Load 8(invocation) + 139: 138(ptr) AccessChain 55(data) 67 79 + 140: 38(ivec4) Load 139 + 141: 42(ivec2) VectorShuffle 140 140 0 1 + 142: 6(int) Load 8(invocation) + 143: 42(ivec2) GroupBroadcast 63 141 142 + 144: 138(ptr) AccessChain 55(data) 137 79 + 145: 38(ivec4) Load 144 + 146: 38(ivec4) VectorShuffle 145 143 4 5 2 3 + Store 144 146 + 147: 6(int) Load 8(invocation) + 149: 138(ptr) AccessChain 55(data) 79 79 + 150: 38(ivec4) Load 149 + 151: 148(ivec3) VectorShuffle 150 150 0 1 2 + 152: 6(int) Load 8(invocation) + 153: 148(ivec3) GroupBroadcast 63 151 152 + 154: 138(ptr) AccessChain 55(data) 147 79 + 155: 38(ivec4) Load 154 + 156: 38(ivec4) VectorShuffle 155 153 4 5 6 3 + Store 154 156 + 157: 6(int) Load 8(invocation) + 158: 138(ptr) AccessChain 55(data) 90 79 + 159: 38(ivec4) Load 158 160: 6(int) Load 8(invocation) - 161: 55(ptr) AccessChain 51(data) 53 53 54 - 162: 43(float) Load 161 - 163: 43(float) ExtInst 1(GLSL.std.450) 0(Unknown) 162 - 164: 55(ptr) AccessChain 51(data) 160 53 54 - Store 164 163 - 165: 6(int) Load 8(invocation) - 166: 64(ptr) AccessChain 51(data) 62 53 - 167: 44(fvec4) Load 166 - 168: 63(fvec2) VectorShuffle 167 167 0 1 - 169: 63(fvec2) ExtInst 1(GLSL.std.450) 0(Unknown) 168 - 170: 64(ptr) AccessChain 51(data) 165 53 - 171: 44(fvec4) Load 170 - 172: 44(fvec4) VectorShuffle 171 169 4 5 2 3 - Store 170 172 - 173: 6(int) Load 8(invocation) - 174: 64(ptr) AccessChain 51(data) 74 53 - 175: 44(fvec4) Load 174 - 176: 75(fvec3) VectorShuffle 175 175 0 1 2 - 177: 75(fvec3) ExtInst 1(GLSL.std.450) 0(Unknown) 176 - 178: 64(ptr) AccessChain 51(data) 173 53 - 179: 44(fvec4) Load 178 - 180: 44(fvec4) VectorShuffle 179 177 4 5 6 3 - Store 178 180 - 181: 6(int) Load 8(invocation) - 182: 64(ptr) AccessChain 51(data) 85 53 - 183: 44(fvec4) Load 182 - 184: 44(fvec4) ExtInst 1(GLSL.std.450) 0(Unknown) 183 - 185: 64(ptr) AccessChain 51(data) 181 53 - Store 185 184 - 186: 6(int) Load 8(invocation) - 187: 92(ptr) AccessChain 51(data) 53 62 54 - 188: 45(int) Load 187 - 189: 45(int) ExtInst 1(GLSL.std.450) 0(Unknown) 188 - 190: 92(ptr) AccessChain 51(data) 186 62 54 - Store 190 189 - 191: 6(int) Load 8(invocation) - 192: 100(ptr) AccessChain 51(data) 62 62 - 193: 46(ivec4) Load 192 - 194: 99(ivec2) VectorShuffle 193 193 0 1 - 195: 99(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 194 - 196: 100(ptr) AccessChain 51(data) 191 62 - 197: 46(ivec4) Load 196 - 198: 46(ivec4) VectorShuffle 197 195 4 5 2 3 - Store 196 198 - 199: 6(int) Load 8(invocation) - 200: 100(ptr) AccessChain 51(data) 74 62 - 201: 46(ivec4) Load 200 - 202: 110(ivec3) VectorShuffle 201 201 0 1 2 - 203: 110(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 202 - 204: 100(ptr) AccessChain 51(data) 199 62 - 205: 46(ivec4) Load 204 - 206: 46(ivec4) VectorShuffle 205 203 4 5 6 3 - Store 204 206 - 207: 6(int) Load 8(invocation) - 208: 100(ptr) AccessChain 51(data) 85 62 - 209: 46(ivec4) Load 208 - 210: 46(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 209 - 211: 100(ptr) AccessChain 51(data) 207 62 - Store 211 210 - 212: 6(int) Load 8(invocation) - 213: 126(ptr) AccessChain 51(data) 53 74 54 - 214: 6(int) Load 213 - 215: 6(int) ExtInst 1(GLSL.std.450) 0(Unknown) 214 - 216: 126(ptr) AccessChain 51(data) 212 74 54 - Store 216 215 - 217: 6(int) Load 8(invocation) - 218: 134(ptr) AccessChain 51(data) 62 74 - 219: 47(ivec4) Load 218 - 220: 133(ivec2) VectorShuffle 219 219 0 1 - 221: 133(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 220 - 222: 134(ptr) AccessChain 51(data) 217 74 - 223: 47(ivec4) Load 222 - 224: 47(ivec4) VectorShuffle 223 221 4 5 2 3 - Store 222 224 - 225: 6(int) Load 8(invocation) - 226: 134(ptr) AccessChain 51(data) 74 74 - 227: 47(ivec4) Load 226 - 228: 144(ivec3) VectorShuffle 227 227 0 1 2 - 229: 144(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 228 - 230: 134(ptr) AccessChain 51(data) 225 74 - 231: 47(ivec4) Load 230 - 232: 47(ivec4) VectorShuffle 231 229 4 5 6 3 - Store 230 232 - 233: 6(int) Load 8(invocation) - 234: 134(ptr) AccessChain 51(data) 85 74 - 235: 47(ivec4) Load 234 - 236: 47(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 235 - 237: 134(ptr) AccessChain 51(data) 233 74 - Store 237 236 - Branch 42 - 42: Label + 161: 38(ivec4) GroupBroadcast 63 159 160 + 162: 138(ptr) AccessChain 55(data) 157 79 + Store 162 161 + Branch 47 + 163: Label + 164: 6(int) Load 8(invocation) + 165: 59(ptr) AccessChain 55(data) 57 57 58 + 166: 48(float) Load 165 + 167: 48(float) SubgroupFirstInvocationKHR 166 + 168: 59(ptr) AccessChain 55(data) 164 57 58 + Store 168 167 + 169: 6(int) Load 8(invocation) + 170: 69(ptr) AccessChain 55(data) 67 57 + 171: 49(fvec4) Load 170 + 172: 68(fvec2) VectorShuffle 171 171 0 1 + 173: 68(fvec2) SubgroupFirstInvocationKHR 172 + 174: 69(ptr) AccessChain 55(data) 169 57 + 175: 49(fvec4) Load 174 + 176: 49(fvec4) VectorShuffle 175 173 4 5 2 3 + Store 174 176 + 177: 6(int) Load 8(invocation) + 178: 69(ptr) AccessChain 55(data) 79 57 + 179: 49(fvec4) Load 178 + 180: 80(fvec3) VectorShuffle 179 179 0 1 2 + 181: 80(fvec3) SubgroupFirstInvocationKHR 180 + 182: 69(ptr) AccessChain 55(data) 177 57 + 183: 49(fvec4) Load 182 + 184: 49(fvec4) VectorShuffle 183 181 4 5 6 3 + Store 182 184 + 185: 6(int) Load 8(invocation) + 186: 69(ptr) AccessChain 55(data) 90 57 + 187: 49(fvec4) Load 186 + 188: 49(fvec4) SubgroupFirstInvocationKHR 187 + 189: 69(ptr) AccessChain 55(data) 185 57 + Store 189 188 + 190: 6(int) Load 8(invocation) + 191: 97(ptr) AccessChain 55(data) 57 67 58 + 192: 50(int) Load 191 + 193: 50(int) SubgroupFirstInvocationKHR 192 + 194: 97(ptr) AccessChain 55(data) 190 67 58 + Store 194 193 + 195: 6(int) Load 8(invocation) + 196: 105(ptr) AccessChain 55(data) 67 67 + 197: 51(ivec4) Load 196 + 198: 104(ivec2) VectorShuffle 197 197 0 1 + 199: 104(ivec2) SubgroupFirstInvocationKHR 198 + 200: 105(ptr) AccessChain 55(data) 195 67 + 201: 51(ivec4) Load 200 + 202: 51(ivec4) VectorShuffle 201 199 4 5 2 3 + Store 200 202 + 203: 6(int) Load 8(invocation) + 204: 105(ptr) AccessChain 55(data) 79 67 + 205: 51(ivec4) Load 204 + 206: 115(ivec3) VectorShuffle 205 205 0 1 2 + 207: 115(ivec3) SubgroupFirstInvocationKHR 206 + 208: 105(ptr) AccessChain 55(data) 203 67 + 209: 51(ivec4) Load 208 + 210: 51(ivec4) VectorShuffle 209 207 4 5 6 3 + Store 208 210 + 211: 6(int) Load 8(invocation) + 212: 105(ptr) AccessChain 55(data) 90 67 + 213: 51(ivec4) Load 212 + 214: 51(ivec4) SubgroupFirstInvocationKHR 213 + 215: 105(ptr) AccessChain 55(data) 211 67 + Store 215 214 + 216: 6(int) Load 8(invocation) + 217: 131(ptr) AccessChain 55(data) 57 79 58 + 218: 6(int) Load 217 + 219: 6(int) SubgroupFirstInvocationKHR 218 + 220: 131(ptr) AccessChain 55(data) 216 79 58 + Store 220 219 + 221: 6(int) Load 8(invocation) + 222: 138(ptr) AccessChain 55(data) 67 79 + 223: 38(ivec4) Load 222 + 224: 42(ivec2) VectorShuffle 223 223 0 1 + 225: 42(ivec2) SubgroupFirstInvocationKHR 224 + 226: 138(ptr) AccessChain 55(data) 221 79 + 227: 38(ivec4) Load 226 + 228: 38(ivec4) VectorShuffle 227 225 4 5 2 3 + Store 226 228 + 229: 6(int) Load 8(invocation) + 230: 138(ptr) AccessChain 55(data) 79 79 + 231: 38(ivec4) Load 230 + 232: 148(ivec3) VectorShuffle 231 231 0 1 2 + 233: 148(ivec3) SubgroupFirstInvocationKHR 232 + 234: 138(ptr) AccessChain 55(data) 229 79 + 235: 38(ivec4) Load 234 + 236: 38(ivec4) VectorShuffle 235 233 4 5 6 3 + Store 234 236 + 237: 6(int) Load 8(invocation) + 238: 138(ptr) AccessChain 55(data) 90 79 + 239: 38(ivec4) Load 238 + 240: 38(ivec4) SubgroupFirstInvocationKHR 239 + 241: 138(ptr) AccessChain 55(data) 237 79 + Store 241 240 + Branch 47 + 47: Label Return FunctionEnd diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 6d2e9c07..9578d454 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -3862,7 +3862,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("readInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setFunctionExtensions("readFirstInvocationARB", 1, &E_GL_ARB_shader_ballot); - BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); @@ -3870,6 +3869,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); + if (spvVersion.vulkan >= 100) + // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan + SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + symbolTable.setFunctionExtensions("anyInvocationARB", 1, &E_GL_ARB_shader_group_vote); symbolTable.setFunctionExtensions("allInvocationsARB", 1, &E_GL_ARB_shader_group_vote); symbolTable.setFunctionExtensions("allInvocationsEqualARB", 1, &E_GL_ARB_shader_group_vote); From e0b9debda2ee0815d3556c72907246b6d1a0b6eb Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 16 Sep 2016 13:26:37 -0600 Subject: [PATCH 004/130] Flatten uniform arrays This checkin adds a --flatten-uniform-arrays option which can break uniform arrays of samplers, textures, or UBOs up into individual scalars named (e.g) myarray[0], myarray[1], etc. These appear as individual linkage objects. Code notes: - shouldFlatten internally calls shouldFlattenIO, and shouldFlattenUniform, but is the only flattening query directly called. - flattenVariable will handle structs or arrays (but not yet arrayed structs; this is tested an an error is generated). - There's some error checking around unhandled situations. E.g, flattening uniform arrays with initializer lists is not implemented. - This piggybacks on as much of the existing mechanism for struct flattening as it can. E.g, it uses the same flattenMap, and the same flattenAccess() method. - handleAssign() has been generalized to cope with either structs or arrays. - Extended test infrastructure to test flattening ability. --- StandAlone/StandAlone.cpp | 13 + Test/baseResults/hlsl.array.flatten.frag.out | 588 ++++++++++++++++++ Test/hlsl.array.flatten.frag | 38 ++ glslang/MachineIndependent/Intermediate.cpp | 5 + glslang/MachineIndependent/ShaderLang.cpp | 2 + .../MachineIndependent/localintermediate.h | 6 +- glslang/Public/ShaderLang.h | 1 + gtests/Hlsl.FromFile.cpp | 18 + gtests/TestFixture.h | 31 +- hlsl/hlslParseHelper.cpp | 204 ++++-- hlsl/hlslParseHelper.h | 12 +- 11 files changed, 872 insertions(+), 46 deletions(-) create mode 100644 Test/baseResults/hlsl.array.flatten.frag.out create mode 100644 Test/hlsl.array.flatten.frag diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 063e416d..30af4fe4 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -81,6 +81,7 @@ enum TOptions { EOptionReadHlsl = (1 << 17), EOptionCascadingErrors = (1 << 18), EOptionAutoMapBindings = (1 << 19), + EOptionFlattenUniformArrays = (1 << 20), }; // @@ -285,6 +286,10 @@ void ProcessArguments(int argc, char* argv[]) lowerword == "auto-map-binding" || lowerword == "amb") { Options |= EOptionAutoMapBindings; + } else if (lowerword == "flatten-uniform-arrays" || // synonyms + lowerword == "flatten-uniform-array" || + lowerword == "fua") { + Options |= EOptionFlattenUniformArrays; } else { usage(); } @@ -407,6 +412,10 @@ void ProcessArguments(int argc, char* argv[]) // -o or -x makes no sense if there is no target binary if (binaryFileName && (Options & EOptionSpv) == 0) Error("no binary generation requested (e.g., -V)"); + + if ((Options & EOptionFlattenUniformArrays) != 0 && + (Options & EOptionReadHlsl) == 0) + Error("uniform array flattening only valid when compiling HLSL source."); } // @@ -532,6 +541,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setShiftSamplerBinding(baseSamplerBinding[compUnit.stage]); shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]); shader->setShiftUboBinding(baseUboBinding[compUnit.stage]); + shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); if (Options & EOptionAutoMapBindings) shader->setAutoMapBindings(true); @@ -930,6 +940,9 @@ void usage() " --auto-map-bindings automatically bind uniform variables without\n" " explicit bindings.\n" " --amb synonym for --auto-map-bindings\n" + "\n" + " --flatten-uniform-arrays flatten uniform array references to scalars\n" + " --fua synonym for --flatten-uniform-arrays\n" ); exit(EFailUsage); diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out new file mode 100644 index 00000000..a3752251 --- /dev/null +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -0,0 +1,588 @@ +hlsl.array.flatten.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:17 Function Definition: TestFn1( (global 4-component vector of float) +0:17 Function Parameters: +0:? Sequence +0:18 Branch: Return with expression +0:18 texture (global 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:? 'g_tex[1]' (temp texture1D) +0:? 'g_samp[1]' (temp sampler) +0:18 Constant: +0:18 0.200000 +0:22 Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:22 Function Parameters: +0:22 'l_tex' (in 3-element array of texture1D) +0:22 'l_samp' (in 3-element array of sampler) +0:? Sequence +0:23 Branch: Return with expression +0:23 texture (global 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1D) +0:23 direct index (temp texture1D) +0:23 'l_tex' (in 3-element array of texture1D) +0:23 Constant: +0:23 2 (const int) +0:23 direct index (temp sampler) +0:23 'l_samp' (in 3-element array of sampler) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0.200000 +0:26 Sequence +0:26 move second child to first child (temp 5-element array of int) +0:26 'not_flattened_a' (global 5-element array of int) +0:26 Constant: +0:26 1 (const int) +0:26 2 (const int) +0:26 3 (const int) +0:26 4 (const int) +0:26 5 (const int) +0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:31 Function Parameters: +0:31 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:33 Sequence +0:? Sequence +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:34 Sequence +0:? Sequence +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:35 Sequence +0:? Sequence +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 0 (const int) +0:? 'g_floats[0]' (uniform float) +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 1 (const int) +0:? 'g_floats[1]' (uniform float) +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 2 (const int) +0:? 'g_floats[2]' (uniform float) +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 3 (const int) +0:? 'g_floats[3]' (uniform float) +0:37 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:37 add (temp 4-component vector of float) +0:37 Function Call: TestFn1( (global 4-component vector of float) +0:37 Function Call: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:? Comma (temp 3-element array of texture1D) +0:? Sequence +0:? move second child to first child (temp texture1D) +0:? direct index (temp texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Constant: +0:? 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:? move second child to first child (temp texture1D) +0:? direct index (temp texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Constant: +0:? 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:? move second child to first child (temp texture1D) +0:? direct index (temp texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Constant: +0:? 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Comma (temp 3-element array of sampler) +0:? Sequence +0:? move second child to first child (temp sampler) +0:? direct index (temp sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Constant: +0:? 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:? move second child to first child (temp sampler) +0:? direct index (temp sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Constant: +0:? 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:? move second child to first child (temp sampler) +0:? direct index (temp sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Constant: +0:? 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Linker Objects +0:? 'g_tex[0]' (uniform texture1D) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_tex[2]' (uniform texture1D) +0:? 'g_tex_explicit[0]' (layout(binding=1 ) uniform texture1D) +0:? 'g_tex_explicit[1]' (layout(binding=2 ) uniform texture1D) +0:? 'g_tex_explicit[2]' (layout(binding=3 ) uniform texture1D) +0:? 'g_samp[0]' (uniform sampler) +0:? 'g_samp[1]' (uniform sampler) +0:? 'g_samp[2]' (uniform sampler) +0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) +0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) +0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) +0:? 'g_mats[0]' (uniform 3X3 matrix of float) +0:? 'g_mats[1]' (uniform 3X3 matrix of float) +0:? 'g_mats[2]' (uniform 3X3 matrix of float) +0:? 'g_mats[3]' (uniform 3X3 matrix of float) +0:? 'g_mats_explicit[0]' (layout(binding=10 ) uniform 3X3 matrix of float) +0:? 'g_mats_explicit[1]' (layout(binding=11 ) uniform 3X3 matrix of float) +0:? 'g_mats_explicit[2]' (layout(binding=12 ) uniform 3X3 matrix of float) +0:? 'g_mats_explicit[3]' (layout(binding=13 ) uniform 3X3 matrix of float) +0:? 'g_floats[0]' (uniform float) +0:? 'g_floats[1]' (uniform float) +0:? 'g_floats[2]' (uniform float) +0:? 'g_floats[3]' (uniform float) +0:? 'not_flattened_a' (global 5-element array of int) +0:? 'color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:17 Function Definition: TestFn1( (global 4-component vector of float) +0:17 Function Parameters: +0:? Sequence +0:18 Branch: Return with expression +0:18 texture (global 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:? 'g_tex[1]' (temp texture1D) +0:? 'g_samp[1]' (temp sampler) +0:18 Constant: +0:18 0.200000 +0:22 Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:22 Function Parameters: +0:22 'l_tex' (in 3-element array of texture1D) +0:22 'l_samp' (in 3-element array of sampler) +0:? Sequence +0:23 Branch: Return with expression +0:23 texture (global 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1D) +0:23 direct index (temp texture1D) +0:23 'l_tex' (in 3-element array of texture1D) +0:23 Constant: +0:23 2 (const int) +0:23 direct index (temp sampler) +0:23 'l_samp' (in 3-element array of sampler) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0.200000 +0:26 Sequence +0:26 move second child to first child (temp 5-element array of int) +0:26 'not_flattened_a' (global 5-element array of int) +0:26 Constant: +0:26 1 (const int) +0:26 2 (const int) +0:26 3 (const int) +0:26 4 (const int) +0:26 5 (const int) +0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:31 Function Parameters: +0:31 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:33 Sequence +0:? Sequence +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:34 Sequence +0:? Sequence +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:35 Sequence +0:? Sequence +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 0 (const int) +0:? 'g_floats[0]' (uniform float) +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 1 (const int) +0:? 'g_floats[1]' (uniform float) +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 2 (const int) +0:? 'g_floats[2]' (uniform float) +0:35 move second child to first child (temp float) +0:35 direct index (temp float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 Constant: +0:35 3 (const int) +0:? 'g_floats[3]' (uniform float) +0:37 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:37 add (temp 4-component vector of float) +0:37 Function Call: TestFn1( (global 4-component vector of float) +0:37 Function Call: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:? Comma (temp 3-element array of texture1D) +0:? Sequence +0:? move second child to first child (temp texture1D) +0:? direct index (temp texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Constant: +0:? 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:? move second child to first child (temp texture1D) +0:? direct index (temp texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Constant: +0:? 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:? move second child to first child (temp texture1D) +0:? direct index (temp texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Constant: +0:? 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:? 'aggShadow' (temp 3-element array of texture1D) +0:? Comma (temp 3-element array of sampler) +0:? Sequence +0:? move second child to first child (temp sampler) +0:? direct index (temp sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Constant: +0:? 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:? move second child to first child (temp sampler) +0:? direct index (temp sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Constant: +0:? 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:? move second child to first child (temp sampler) +0:? direct index (temp sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Constant: +0:? 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:? 'aggShadow' (temp 3-element array of sampler) +0:? Linker Objects +0:? 'g_tex[0]' (uniform texture1D) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_tex[2]' (uniform texture1D) +0:? 'g_tex_explicit[0]' (layout(binding=1 ) uniform texture1D) +0:? 'g_tex_explicit[1]' (layout(binding=2 ) uniform texture1D) +0:? 'g_tex_explicit[2]' (layout(binding=3 ) uniform texture1D) +0:? 'g_samp[0]' (uniform sampler) +0:? 'g_samp[1]' (uniform sampler) +0:? 'g_samp[2]' (uniform sampler) +0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) +0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) +0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) +0:? 'g_mats[0]' (uniform 3X3 matrix of float) +0:? 'g_mats[1]' (uniform 3X3 matrix of float) +0:? 'g_mats[2]' (uniform 3X3 matrix of float) +0:? 'g_mats[3]' (uniform 3X3 matrix of float) +0:? 'g_mats_explicit[0]' (layout(binding=10 ) uniform 3X3 matrix of float) +0:? 'g_mats_explicit[1]' (layout(binding=11 ) uniform 3X3 matrix of float) +0:? 'g_mats_explicit[2]' (layout(binding=12 ) uniform 3X3 matrix of float) +0:? 'g_mats_explicit[3]' (layout(binding=13 ) uniform 3X3 matrix of float) +0:? 'g_floats[0]' (uniform float) +0:? 'g_floats[1]' (uniform float) +0:? 'g_floats[2]' (uniform float) +0:? 'g_floats[3]' (uniform float) +0:? 'not_flattened_a' (global 5-element array of int) +0:? 'color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 128 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 93 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "TestFn1(" + Name 22 "TestFn2(t11[3];p1[3];" + Name 20 "l_tex" + Name 21 "l_samp" + Name 28 "not_flattened_a" + Name 36 "g_tex[1]" + Name 39 "g_samp[1]" + Name 55 "local_sampler_array" + Name 57 "g_samp[0]" + Name 62 "g_samp[2]" + Name 65 "local_texture_array" + Name 66 "g_tex[0]" + Name 71 "g_tex[2]" + Name 77 "local_float_array" + Name 79 "g_floats[0]" + Name 83 "g_floats[1]" + Name 86 "g_floats[2]" + Name 89 "g_floats[3]" + Name 93 "color" + Name 95 "aggShadow" + Name 102 "aggShadow" + Name 111 "g_tex_explicit[0]" + Name 112 "g_tex_explicit[1]" + Name 113 "g_tex_explicit[2]" + Name 114 "g_samp_explicit[0]" + Name 115 "g_samp_explicit[1]" + Name 116 "g_samp_explicit[2]" + Name 120 "g_mats[0]" + Name 121 "g_mats[1]" + Name 122 "g_mats[2]" + Name 123 "g_mats[3]" + Name 124 "g_mats_explicit[0]" + Name 125 "g_mats_explicit[1]" + Name 126 "g_mats_explicit[2]" + Name 127 "g_mats_explicit[3]" + Decorate 57(g_samp[0]) DescriptorSet 0 + Decorate 62(g_samp[2]) DescriptorSet 0 + Decorate 66(g_tex[0]) DescriptorSet 0 + Decorate 71(g_tex[2]) DescriptorSet 0 + Decorate 93(color) Location 0 + Decorate 111(g_tex_explicit[0]) DescriptorSet 0 + Decorate 111(g_tex_explicit[0]) Binding 1 + Decorate 112(g_tex_explicit[1]) DescriptorSet 0 + Decorate 112(g_tex_explicit[1]) Binding 2 + Decorate 113(g_tex_explicit[2]) DescriptorSet 0 + Decorate 113(g_tex_explicit[2]) Binding 3 + Decorate 114(g_samp_explicit[0]) DescriptorSet 0 + Decorate 114(g_samp_explicit[0]) Binding 5 + Decorate 115(g_samp_explicit[1]) DescriptorSet 0 + Decorate 115(g_samp_explicit[1]) Binding 6 + Decorate 116(g_samp_explicit[2]) DescriptorSet 0 + Decorate 116(g_samp_explicit[2]) Binding 7 + Decorate 124(g_mats_explicit[0]) Binding 10 + Decorate 125(g_mats_explicit[1]) Binding 11 + Decorate 126(g_mats_explicit[2]) Binding 12 + Decorate 127(g_mats_explicit[3]) Binding 13 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 11: TypeImage 6(float) 1D sampled format:Unknown + 12: TypeInt 32 0 + 13: 12(int) Constant 3 + 14: TypeArray 11 13 + 15: TypePointer UniformConstant 14 + 16: TypeSampler + 17: TypeArray 16 13 + 18: TypePointer UniformConstant 17 + 19: TypeFunction 7(fvec4) 15(ptr) 18(ptr) + 24: TypeInt 32 1 + 25: 12(int) Constant 5 + 26: TypeArray 24(int) 25 + 27: TypePointer Private 26 +28(not_flattened_a): 27(ptr) Variable Private + 29: 24(int) Constant 1 + 30: 24(int) Constant 2 + 31: 24(int) Constant 3 + 32: 24(int) Constant 4 + 33: 24(int) Constant 5 + 34: 26 ConstantComposite 29 30 31 32 33 + 35: TypePointer UniformConstant 11 + 36(g_tex[1]): 35(ptr) Variable UniformConstant + 38: TypePointer UniformConstant 16 + 39(g_samp[1]): 38(ptr) Variable UniformConstant + 41: TypeSampledImage 11 + 43: 6(float) Constant 1045220557 +55(local_sampler_array): 18(ptr) Variable UniformConstant + 56: 24(int) Constant 0 + 57(g_samp[0]): 38(ptr) Variable UniformConstant + 62(g_samp[2]): 38(ptr) Variable UniformConstant +65(local_texture_array): 15(ptr) Variable UniformConstant + 66(g_tex[0]): 35(ptr) Variable UniformConstant + 71(g_tex[2]): 35(ptr) Variable UniformConstant + 74: 12(int) Constant 4 + 75: TypeArray 6(float) 74 + 76: TypePointer Function 75 + 78: TypePointer UniformConstant 6(float) + 79(g_floats[0]): 78(ptr) Variable UniformConstant + 81: TypePointer Function 6(float) + 83(g_floats[1]): 78(ptr) Variable UniformConstant + 86(g_floats[2]): 78(ptr) Variable UniformConstant + 89(g_floats[3]): 78(ptr) Variable UniformConstant + 92: TypePointer Output 7(fvec4) + 93(color): 92(ptr) Variable Output + 95(aggShadow): 15(ptr) Variable UniformConstant + 102(aggShadow): 18(ptr) Variable UniformConstant +111(g_tex_explicit[0]): 35(ptr) Variable UniformConstant +112(g_tex_explicit[1]): 35(ptr) Variable UniformConstant +113(g_tex_explicit[2]): 35(ptr) Variable UniformConstant +114(g_samp_explicit[0]): 38(ptr) Variable UniformConstant +115(g_samp_explicit[1]): 38(ptr) Variable UniformConstant +116(g_samp_explicit[2]): 38(ptr) Variable UniformConstant + 117: TypeVector 6(float) 3 + 118: TypeMatrix 117(fvec3) 3 + 119: TypePointer UniformConstant 118 + 120(g_mats[0]): 119(ptr) Variable UniformConstant + 121(g_mats[1]): 119(ptr) Variable UniformConstant + 122(g_mats[2]): 119(ptr) Variable UniformConstant + 123(g_mats[3]): 119(ptr) Variable UniformConstant +124(g_mats_explicit[0]): 119(ptr) Variable UniformConstant +125(g_mats_explicit[1]): 119(ptr) Variable UniformConstant +126(g_mats_explicit[2]): 119(ptr) Variable UniformConstant +127(g_mats_explicit[3]): 119(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label +77(local_float_array): 76(ptr) Variable Function + Store 28(not_flattened_a) 34 + 58: 16 Load 57(g_samp[0]) + 59: 38(ptr) AccessChain 55(local_sampler_array) 56 + Store 59 58 + 60: 16 Load 39(g_samp[1]) + 61: 38(ptr) AccessChain 55(local_sampler_array) 29 + Store 61 60 + 63: 16 Load 62(g_samp[2]) + 64: 38(ptr) AccessChain 55(local_sampler_array) 30 + Store 64 63 + 67: 11 Load 66(g_tex[0]) + 68: 35(ptr) AccessChain 65(local_texture_array) 56 + Store 68 67 + 69: 11 Load 36(g_tex[1]) + 70: 35(ptr) AccessChain 65(local_texture_array) 29 + Store 70 69 + 72: 11 Load 71(g_tex[2]) + 73: 35(ptr) AccessChain 65(local_texture_array) 30 + Store 73 72 + 80: 6(float) Load 79(g_floats[0]) + 82: 81(ptr) AccessChain 77(local_float_array) 56 + Store 82 80 + 84: 6(float) Load 83(g_floats[1]) + 85: 81(ptr) AccessChain 77(local_float_array) 29 + Store 85 84 + 87: 6(float) Load 86(g_floats[2]) + 88: 81(ptr) AccessChain 77(local_float_array) 30 + Store 88 87 + 90: 6(float) Load 89(g_floats[3]) + 91: 81(ptr) AccessChain 77(local_float_array) 31 + Store 91 90 + 94: 7(fvec4) FunctionCall 9(TestFn1() + 96: 11 Load 66(g_tex[0]) + 97: 35(ptr) AccessChain 95(aggShadow) 56 + Store 97 96 + 98: 11 Load 36(g_tex[1]) + 99: 35(ptr) AccessChain 95(aggShadow) 29 + Store 99 98 + 100: 11 Load 71(g_tex[2]) + 101: 35(ptr) AccessChain 95(aggShadow) 30 + Store 101 100 + 103: 16 Load 57(g_samp[0]) + 104: 38(ptr) AccessChain 102(aggShadow) 56 + Store 104 103 + 105: 16 Load 39(g_samp[1]) + 106: 38(ptr) AccessChain 102(aggShadow) 29 + Store 106 105 + 107: 16 Load 62(g_samp[2]) + 108: 38(ptr) AccessChain 102(aggShadow) 30 + Store 108 107 + 109: 7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 95(aggShadow) 102(aggShadow) + 110: 7(fvec4) FAdd 94 109 + Store 93(color) 110 + Return + FunctionEnd + 9(TestFn1(): 7(fvec4) Function None 8 + 10: Label + 37: 11 Load 36(g_tex[1]) + 40: 16 Load 39(g_samp[1]) + 42: 41 SampledImage 37 40 + 44: 7(fvec4) ImageSampleImplicitLod 42 43 + ReturnValue 44 + FunctionEnd +22(TestFn2(t11[3];p1[3];): 7(fvec4) Function None 19 + 20(l_tex): 15(ptr) FunctionParameter + 21(l_samp): 18(ptr) FunctionParameter + 23: Label + 47: 35(ptr) AccessChain 20(l_tex) 30 + 48: 11 Load 47 + 49: 38(ptr) AccessChain 21(l_samp) 30 + 50: 16 Load 49 + 51: 41 SampledImage 48 50 + 52: 7(fvec4) ImageSampleImplicitLod 51 43 + ReturnValue 52 + FunctionEnd diff --git a/Test/hlsl.array.flatten.frag b/Test/hlsl.array.flatten.frag new file mode 100644 index 00000000..b243bec2 --- /dev/null +++ b/Test/hlsl.array.flatten.frag @@ -0,0 +1,38 @@ + +// uniform Texture1D g_tex3[3][2]; // TODO: legal in HLSL, but we don't handle it yet. + +uniform Texture1D g_tex[3]; +uniform Texture1D g_tex_explicit[3] : register(t1); + +SamplerState g_samp[3]; +SamplerState g_samp_explicit[3] : register(s5); + +uniform float3x3 g_mats[4]; +uniform float3x3 g_mats_explicit[4] : register(b10); +uniform float g_floats[4]; + +// uniform float g_floats[4] = { 10, 11, 12, 13 }; // TODO: ... add when initializer lists can be flattened. + +float4 TestFn1() +{ + return g_tex[1].Sample(g_samp[1], 0.2); +} + +float4 TestFn2(Texture1D l_tex[3], SamplerState l_samp[3]) +{ + return l_tex[2].Sample(l_samp[2], 0.2); +} + +int not_flattened_a[5] = { 1, 2, 3, 4, 5 }; + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +void main(out PS_OUTPUT ps_output) +{ + // test flattening for local assignment initialization + SamplerState local_sampler_array[3] = g_samp; + Texture1D local_texture_array[3] = g_tex; + float local_float_array[4] = g_floats; + + ps_output.color = TestFn1() + TestFn2(g_tex, g_samp); +} diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 677cef39..a0bee74e 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -424,6 +424,11 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // opaque types can be passed to functions if (op == EOpFunction) break; + + // HLSL can assign samplers directly (no constructor) + if (source == EShSourceHlsl && node->getBasicType() == EbtSampler) + break; + // samplers can get assigned via a sampler constructor // (well, not yet, but code in the rest of this function is ready for it) if (node->getBasicType() == EbtSampler && op == EOpAssign && diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index dc0c01b6..ffd6b00c 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1493,6 +1493,8 @@ void TShader::setShiftSamplerBinding(unsigned int base) { intermediate->setShift void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShiftTextureBinding(base); } void TShader::setShiftUboBinding(unsigned int base) { intermediate->setShiftUboBinding(base); } void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); } +void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } + // // Turn the shader strings into a parse tree in the TIntermediate. // diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 4de811cf..14b8a00a 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -145,7 +145,8 @@ public: shiftSamplerBinding(0), shiftTextureBinding(0), shiftUboBinding(0), - autoMapBindings(false) + autoMapBindings(false), + flattenUniformArrays(false) { localSize[0] = 1; localSize[1] = 1; @@ -176,6 +177,8 @@ public: unsigned int getShiftUboBinding() const { return shiftUboBinding; } void setAutoMapBindings(bool map) { autoMapBindings = map; } bool getAutoMapBindings() const { return autoMapBindings; } + void setFlattenUniformArrays(bool flatten) { flattenUniformArrays = flatten; } + bool getFlattenUniformArrays() const { return flattenUniformArrays; } void setVersion(int v) { version = v; } int getVersion() const { return version; } @@ -385,6 +388,7 @@ protected: unsigned int shiftTextureBinding; unsigned int shiftUboBinding; bool autoMapBindings; + bool flattenUniformArrays; EProfile profile; int version; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 80605ba3..496e6d4d 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -304,6 +304,7 @@ public: void setShiftTextureBinding(unsigned int base); void setShiftUboBinding(unsigned int base); void setAutoMapBindings(bool map); + void setFlattenUniformArrays(bool flatten); // Interface to #include handlers. // diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 01cc0323..55450a74 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -58,6 +58,7 @@ std::string FileNameAsCustomTestSuffix( } using HlslCompileTest = GlslangTest<::testing::TestWithParam>; +using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam>; // Compiling HLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate both AST and SPIR-V. @@ -68,6 +69,13 @@ TEST_P(HlslCompileTest, FromFile) Target::BothASTAndSpv, GetParam().entryPoint); } +TEST_P(HlslCompileAndFlattenTest, FromFile) +{ + loadFileCompileFlattenUniformsAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, + Target::BothASTAndSpv, GetParam().entryPoint); +} + // clang-format off INSTANTIATE_TEST_CASE_P( ToSpirv, HlslCompileTest, @@ -181,5 +189,15 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format on +// clang-format off +INSTANTIATE_TEST_CASE_P( + ToSpirv, HlslCompileAndFlattenTest, + ::testing::ValuesIn(std::vector{ + {"hlsl.array.flatten.frag", "main"}, + }), + FileNameAsCustomTestSuffix +); + +// clang-format on } // anonymous namespace } // namespace glslangtest diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 47e2703a..4b364c4b 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -204,11 +204,14 @@ public: // the result and returns disassembly text. GlslangResult compileAndLink( const std::string shaderName, const std::string& code, - const std::string& entryPointName, EShMessages controls) + const std::string& entryPointName, EShMessages controls, + bool flattenUniformArrays = false) { const EShLanguage kind = GetShaderStage(GetSuffix(shaderName)); glslang::TShader shader(kind); + shader.setFlattenUniformArrays(flattenUniformArrays); + bool success = compile(&shader, code, entryPointName, controls); glslang::TProgram program; @@ -395,6 +398,32 @@ public: expectedOutputFname); } + void loadFileCompileFlattenUniformsAndCheck(const std::string& testDir, + const std::string& testName, + Source source, + Semantics semantics, + Target target, + const std::string& entryPointName="") + { + const std::string inputFname = testDir + "/" + testName; + const std::string expectedOutputFname = + testDir + "/baseResults/" + testName + ".out"; + std::string input, expectedOutput; + + tryLoadFile(inputFname, "input", &input); + tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); + + const EShMessages controls = DeriveOptions(source, semantics, target); + GlslangResult result = compileAndLink(testName, input, entryPointName, controls, true); + + // Generate the hybrid output in the way of glslangValidator. + std::ostringstream stream; + outputResultToStream(&stream, result, controls); + + checkEqAndUpdateIfRequested(expectedOutput, stream.str(), + expectedOutputFname); + } + void loadFileCompileIoMapAndCheck(const std::string& testDir, const std::string& testName, Source source, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 5af79040..d5db6b23 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -403,12 +403,19 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) handleIoResizeArrayAccess(loc, base); - if (index->getQualifier().storage == EvqConst) { - if (base->getType().isImplicitlySizedArray()) - updateImplicitArraySize(loc, base, indexValue); - result = intermediate.addIndex(EOpIndexDirect, base, index, loc); + if (base->getAsSymbolNode() && shouldFlatten(base->getType())) { + if (index->getQualifier().storage != EvqConst) + error(loc, "Invalid variable index to flattened uniform array", base->getAsSymbolNode()->getName().c_str(), ""); + + result = flattenAccess(base, indexValue); } else { - result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); + if (index->getQualifier().storage == EvqConst) { + if (base->getType().isImplicitlySizedArray()) + updateImplicitArraySize(loc, base, indexValue); + result = intermediate.addIndex(EOpIndexDirect, base, index, loc); + } else { + result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); + } } } @@ -701,9 +708,9 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt return result; } -// Is this an aggregate that can't be passed down the stack? +// Is this an IO variable that can't be passed down the stack? // E.g., pipeline inputs to the vertex stage and outputs from the fragment stage. -bool HlslParseContext::shouldFlatten(const TType& type) const +bool HlslParseContext::shouldFlattenIO(const TType& type) const { if (! inEntryPoint) return false; @@ -715,6 +722,33 @@ bool HlslParseContext::shouldFlatten(const TType& type) const qualifier == EvqVaryingOut); } +// Is this a uniform array which should be flattened? +bool HlslParseContext::shouldFlattenUniform(const TType& type) const +{ + const TStorageQualifier qualifier = type.getQualifier().storage; + + return type.isArray() && + intermediate.getFlattenUniformArrays() && + qualifier == EvqUniform; +} + +void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable) +{ + const TType& type = variable.getType(); + + // Presently, flattening of structure arrays is unimplemented. + // We handle one, or the other. + if (type.isArray() && type.isStruct()) { + error(loc, "cannot flatten structure array", variable.getName().c_str(), ""); + } + + if (type.isStruct()) + flattenStruct(variable); + + if (type.isArray()) + flattenArray(loc, variable); +} + // Figure out the mapping between an aggregate's top members and an // equivalent set of individual variables. // @@ -724,7 +758,7 @@ bool HlslParseContext::shouldFlatten(const TType& type) const // Assumes shouldFlatten() or equivalent was called first. // // TODO: generalize this to arbitrary nesting? -void HlslParseContext::flatten(const TVariable& variable) +void HlslParseContext::flattenStruct(const TVariable& variable) { TVector memberVariables; @@ -742,8 +776,54 @@ void HlslParseContext::flatten(const TVariable& variable) flattenMap[variable.getUniqueId()] = memberVariables; } -// Turn an access into aggregate that was flattened to instead be -// an access to the individual variable the element/member was flattened to. +// Figure out mapping between an array's members and an +// equivalent set of individual variables. +// +// Assumes shouldFlatten() or equivalent was called first. +void HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& variable) +{ + const TType& type = variable.getType(); + assert(type.isArray()); + + if (type.isImplicitlySizedArray()) + error(loc, "cannot flatten implicitly sized array", variable.getName().c_str(), ""); + + if (type.getArraySizes()->getNumDims() != 1) + error(loc, "cannot flatten multi-dimensional array", variable.getName().c_str(), ""); + + const int size = type.getCumulativeArraySize(); + + TVector memberVariables; + + const TType dereferencedType(type, 0); + int binding = type.getQualifier().layoutBinding; + + if (dereferencedType.isStruct() || dereferencedType.isArray()) { + error(loc, "cannot flatten array of aggregate types", variable.getName().c_str(), ""); + } + + for (int element=0; element < size; ++element) { + char elementNumBuf[20]; // sufficient for MAXINT + snprintf(elementNumBuf, sizeof(elementNumBuf)-1, "[%d]", element); + const TString memberName = variable.getName() + elementNumBuf; + + TVariable* memberVariable = makeInternalVariable(memberName.c_str(), dereferencedType); + memberVariable->getWritableType().getQualifier() = variable.getType().getQualifier(); + + memberVariable->getWritableType().getQualifier().layoutBinding = binding; + + if (binding != TQualifier::layoutBindingEnd) + ++binding; + + memberVariables.push_back(memberVariable); + intermediate.addSymbolLinkageNode(linkage, *memberVariable); + } + + flattenMap[variable.getUniqueId()] = memberVariables; +} + +// Turn an access into an aggregate that was flattened to instead be +// an access to the individual variable the member was flattened to. // Assumes shouldFlatten() or equivalent was called first. TIntermTyped* HlslParseContext::flattenAccess(TIntermTyped* base, int member) { @@ -864,7 +944,7 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l remapEntryPointIO(function); if (entryPointOutput) { if (shouldFlatten(entryPointOutput->getType())) - flatten(*entryPointOutput); + flatten(loc, *entryPointOutput); assignLocations(*entryPointOutput); } } else @@ -896,7 +976,7 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l // get IO straightened out if (inEntryPoint) { if (shouldFlatten(*param.type)) - flatten(*variable); + flatten(loc, *variable); assignLocations(*variable); } @@ -1051,40 +1131,68 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op flattenMap.find(node.getAsSymbolNode()->getId()) != flattenMap.end(); }; - bool flattenLeft = mustFlatten(*left); - bool flattenRight = mustFlatten(*right); + const bool flattenLeft = mustFlatten(*left); + const bool flattenRight = mustFlatten(*right); if (! flattenLeft && ! flattenRight) return intermediate.addAssign(op, left, right, loc); - // If we get here, we are assigning to or from a whole struct that must be - // flattened, so have to do member-by-member assignment: - const auto& members = *left->getType().getStruct(); - const auto getMember = [&](bool flatten, TIntermTyped* node, - const TVector& memberVariables, int member) { - TIntermTyped* subTree; - if (flatten) - subTree = intermediate.addSymbol(*memberVariables[member]); - else { - subTree = intermediate.addIndex(EOpIndexDirectStruct, node, - intermediate.addConstantUnion(member, loc), loc); - subTree->setType(*members[member].type); - } - - return subTree; - }; - + TIntermAggregate* assignList = nullptr; const TVector* leftVariables = nullptr; const TVector* rightVariables = nullptr; + if (flattenLeft) leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second; if (flattenRight) rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second; - TIntermAggregate* assignList = nullptr; - for (int member = 0; member < (int)members.size(); ++member) { - TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member); - TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member); - assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc)); + + const auto getMember = [&](bool flatten, TIntermTyped* node, + const TVector& memberVariables, int member, + TOperator op, const TType& memberType) { + TIntermTyped* subTree; + if (flatten) + subTree = intermediate.addSymbol(*memberVariables[member]); + else { + subTree = intermediate.addIndex(op, node, intermediate.addConstantUnion(member, loc), loc); + subTree->setType(memberType); + } + + return subTree; + }; + + // Handle struct assignment + if (left->getType().isStruct()) { + // If we get here, we are assigning to or from a whole struct that must be + // flattened, so have to do member-by-member assignment: + const auto& members = *left->getType().getStruct(); + + for (int member = 0; member < (int)members.size(); ++member) { + TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member, + EOpIndexDirectStruct, *members[member].type); + TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member, + EOpIndexDirectStruct, *members[member].type); + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc)); + } } + + // Handle array assignment + if (left->getType().isArray()) { + // If we get here, we are assigning to or from a whole array that must be + // flattened, so have to do member-by-member assignment: + + const TType dereferencedType(left->getType(), 0); + const int size = left->getType().getCumulativeArraySize(); + + for (int element=0; element < size; ++element) { + TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, element, + EOpIndexDirect, dereferencedType); + TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, element, + EOpIndexDirect, dereferencedType); + + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc)); + } + } + + assert(assignList != nullptr); assignList->setOperator(EOpSequence); return assignList; @@ -4095,13 +4203,21 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i inheritGlobalDefaults(type.getQualifier()); + bool flattenVar = false; + // Declare the variable if (arraySizes || type.isArray()) { // Arrayness is potentially coming both from the type and from the // variable: "int[] a[];" or just one or the other. // Merge it all to the type, so all arrayness is part of the type. - arrayDimMerge(type, arraySizes); + arrayDimMerge(type, arraySizes); // Safe if there are no arraySizes + declareArray(loc, identifier, type, symbol, newDeclaration); + + flattenVar = shouldFlatten(type); + + if (flattenVar) + flatten(loc, *symbol->getAsVariable()); } else { // non-array case if (! symbol) @@ -4116,6 +4232,9 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i // Deal with initializer TIntermNode* initNode = nullptr; if (symbol && initializer) { + if (flattenVar) + error(loc, "flattened array with initializer list unsupported", identifier.c_str(), ""); + TVariable* variable = symbol->getAsVariable(); if (! variable) { error(loc, "initializer requires a variable, not a member", identifier.c_str(), ""); @@ -4124,9 +4243,12 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i initNode = executeInitializer(loc, initializer, variable); } - // see if it's a linker-level object to track - if (newDeclaration && symbolTable.atGlobalLevel()) - intermediate.addSymbolLinkageNode(linkage, *symbol); + // see if it's a linker-level object to track. if it's flattened above, + // that process added linkage objects for the flattened symbols, we don't + // add the aggregate here. + if (!flattenVar) + if (newDeclaration && symbolTable.atGlobalLevel()) + intermediate.addSymbolLinkageNode(linkage, *symbol); return initNode; } @@ -4257,7 +4379,7 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm // normal assigning of a value to a variable... specializationCheck(loc, initializer->getType(), "initializer"); TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); - TIntermNode* initNode = intermediate.addAssign(EOpAssign, intermSymbol, initializer, loc); + TIntermNode* initNode = handleAssign(loc, EOpAssign, intermSymbol, initializer); if (! initNode) assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString()); diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 01620883..b7d33237 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -83,9 +83,6 @@ public: TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right); TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode); TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field); - bool shouldFlatten(const TType&) const; - void flatten(const TVariable& variable); - TIntermTyped* flattenAccess(TIntermTyped* base, int member); void assignLocations(TVariable& variable); TFunction& handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype); TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&); @@ -181,6 +178,15 @@ protected: const char* szExtraInfoFormat, TPrefixType prefix, va_list args); + // Array and struct flattening + bool shouldFlatten(const TType& type) const { return shouldFlattenIO(type) || shouldFlattenUniform(type); } + TIntermTyped* flattenAccess(TIntermTyped* base, int member); + bool shouldFlattenIO(const TType&) const; + bool shouldFlattenUniform(const TType&) const; + void flatten(const TSourceLoc& loc, const TVariable& variable); + void flattenStruct(const TVariable& variable); + void flattenArray(const TSourceLoc& loc, const TVariable& variable); + // Current state of parsing struct TPragma contextPragma; int loopNestingLevel; // 0 if outside all loops From cf43e661251f7797e469a93fa0ecd3e66980eca7 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 22 Sep 2016 14:35:23 -0600 Subject: [PATCH 005/130] Fix defects in uniform array flattening Fix for two defects as follows: - The IO mapping traverser was not setting inVisit, and would skip some AST nodes. Depending on the order of nodes, this could have prevented the binding from showing up in the generated SPIR-V. - If a uniform array was flattened, each of the flattened scalars from the array is still a (now-scalar) uniform. It was being converted to a temporary. --- Test/baseResults/hlsl.array.flatten.frag.out | 10 ++-- .../spv.register.autoassign-2.frag.out | 57 +++++++++++++++++++ Test/spv.register.autoassign-2.frag | 15 +++++ glslang/MachineIndependent/LiveTraverser.h | 4 +- glslang/MachineIndependent/iomapper.cpp | 2 +- gtests/Spv.FromFile.cpp | 9 ++- gtests/TestFixture.h | 10 +++- hlsl/hlslParseHelper.cpp | 21 ++++--- 8 files changed, 109 insertions(+), 19 deletions(-) create mode 100644 Test/baseResults/spv.register.autoassign-2.frag.out create mode 100644 Test/spv.register.autoassign-2.frag diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index a3752251..eedd698f 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -8,8 +8,8 @@ gl_FragCoord origin is upper left 0:18 Branch: Return with expression 0:18 texture (global 4-component vector of float) 0:18 Construct combined texture-sampler (temp sampler1D) -0:? 'g_tex[1]' (temp texture1D) -0:? 'g_samp[1]' (temp sampler) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_samp[1]' (uniform sampler) 0:18 Constant: 0:18 0.200000 0:22 Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float) @@ -197,8 +197,8 @@ gl_FragCoord origin is upper left 0:18 Branch: Return with expression 0:18 texture (global 4-component vector of float) 0:18 Construct combined texture-sampler (temp sampler1D) -0:? 'g_tex[1]' (temp texture1D) -0:? 'g_samp[1]' (temp sampler) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_samp[1]' (uniform sampler) 0:18 Constant: 0:18 0.200000 0:22 Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float) @@ -419,6 +419,8 @@ gl_FragCoord origin is upper left Name 125 "g_mats_explicit[1]" Name 126 "g_mats_explicit[2]" Name 127 "g_mats_explicit[3]" + Decorate 36(g_tex[1]) DescriptorSet 0 + Decorate 39(g_samp[1]) DescriptorSet 0 Decorate 57(g_samp[0]) DescriptorSet 0 Decorate 62(g_samp[2]) DescriptorSet 0 Decorate 66(g_tex[0]) DescriptorSet 0 diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out new file mode 100644 index 00000000..038c7f0e --- /dev/null +++ b/Test/baseResults/spv.register.autoassign-2.frag.out @@ -0,0 +1,57 @@ +spv.register.autoassign-2.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 30 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "Color" + Name 12 "g_tScene[0]" + Name 16 "g_tSamp" + Name 24 "g_tScene[1]" + Decorate 9(Color) Location 0 + Decorate 12(g_tScene[0]) DescriptorSet 0 + Decorate 12(g_tScene[0]) Binding 10 + Decorate 16(g_tSamp) DescriptorSet 0 + Decorate 16(g_tSamp) Binding 5 + Decorate 24(g_tScene[1]) DescriptorSet 0 + Decorate 24(g_tScene[1]) Binding 11 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(Color): 8(ptr) Variable Output + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tScene[0]): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_tSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1050253722 + 22: 20(fvec2) ConstantComposite 21 21 + 24(g_tScene[1]): 11(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 13: 10 Load 12(g_tScene[0]) + 17: 14 Load 16(g_tSamp) + 19: 18 SampledImage 13 17 + 23: 7(fvec4) ImageSampleImplicitLod 19 22 + 25: 10 Load 24(g_tScene[1]) + 26: 14 Load 16(g_tSamp) + 27: 18 SampledImage 25 26 + 28: 7(fvec4) ImageSampleImplicitLod 27 22 + 29: 7(fvec4) FAdd 23 28 + Store 9(Color) 29 + Return + FunctionEnd diff --git a/Test/spv.register.autoassign-2.frag b/Test/spv.register.autoassign-2.frag new file mode 100644 index 00000000..b943791f --- /dev/null +++ b/Test/spv.register.autoassign-2.frag @@ -0,0 +1,15 @@ + +SamplerState g_tSamp : register(s0); + +Texture2D g_tScene[2] : register(t0); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +void main(out PS_OUTPUT psout) +{ + psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) + + g_tScene[1].Sample(g_tSamp, 0.3); +} diff --git a/glslang/MachineIndependent/LiveTraverser.h b/glslang/MachineIndependent/LiveTraverser.h index 5a902049..286efe6c 100644 --- a/glslang/MachineIndependent/LiveTraverser.h +++ b/glslang/MachineIndependent/LiveTraverser.h @@ -56,7 +56,9 @@ namespace glslang { class TLiveTraverser : public TIntermTraverser { public: - TLiveTraverser(const TIntermediate& i, bool traverseAll = false) : + TLiveTraverser(const TIntermediate& i, bool traverseAll = false, + bool preVisit = true, bool inVisit = false, bool postVisit = false) : + TIntermTraverser(preVisit, inVisit, postVisit), intermediate(i), traverseAll(traverseAll) { } diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index d02fb5ea..22d97c29 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -74,7 +74,7 @@ class TBindingTraverser : public TLiveTraverser { public: TBindingTraverser(const TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings, bool traverseDeadCode = false) : - TLiveTraverser(i, traverseDeadCode), + TLiveTraverser(i, traverseDeadCode, true, true, false), bindingMap(bindingMap), usedBindings(usedBindings) { } diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 5ea46c44..9dd21676 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -48,6 +48,7 @@ struct IoMapData { int baseTextureBinding; int baseUboBinding; bool autoMapBindings; + bool flattenUniforms; }; std::string FileNameAsCustomTestSuffixIoMap( @@ -119,7 +120,8 @@ TEST_P(HlslSemantics, FromFile) GetParam().baseSamplerBinding, GetParam().baseTextureBinding, GetParam().baseUboBinding, - GetParam().autoMapBindings); + GetParam().autoMapBindings, + GetParam().flattenUniforms); } // clang-format off @@ -251,8 +253,9 @@ INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P( Hlsl, HlslSemantics, ::testing::ValuesIn(std::vector{ - { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true }, - { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false }, + { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false }, + { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, + { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true }, }), FileNameAsCustomTestSuffixIoMap ); diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 4b364c4b..0a7bf76e 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -248,7 +248,8 @@ public: int baseSamplerBinding, int baseTextureBinding, int baseUboBinding, - bool autoMapBindings) + bool autoMapBindings, + bool flattenUniformArrays) { const EShLanguage kind = GetShaderStage(GetSuffix(shaderName)); @@ -257,6 +258,7 @@ public: shader.setShiftTextureBinding(baseTextureBinding); shader.setShiftUboBinding(baseUboBinding); shader.setAutoMapBindings(autoMapBindings); + shader.setFlattenUniformArrays(flattenUniformArrays); bool success = compile(&shader, code, entryPointName, controls); @@ -433,7 +435,8 @@ public: int baseSamplerBinding, int baseTextureBinding, int baseUboBinding, - bool autoMapBindings) + bool autoMapBindings, + bool flattenUniformArrays) { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = @@ -446,7 +449,8 @@ public: const EShMessages controls = DeriveOptions(source, semantics, target); GlslangResult result = compileLinkIoMap(testName, input, entryPointName, controls, baseSamplerBinding, baseTextureBinding, baseUboBinding, - autoMapBindings); + autoMapBindings, + flattenUniformArrays); // Generate the hybrid output in the way of glslangValidator. std::ostringstream stream; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index d5db6b23..470b03f5 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -383,6 +383,7 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, { TIntermTyped* result = nullptr; + bool flattened = false; int indexValue = 0; if (index->getQualifier().storage == EvqConst) { indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); @@ -408,6 +409,7 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, error(loc, "Invalid variable index to flattened uniform array", base->getAsSymbolNode()->getName().c_str(), ""); result = flattenAccess(base, indexValue); + flattened = (result != base); } else { if (index->getQualifier().storage == EvqConst) { if (base->getType().isImplicitlySizedArray()) @@ -423,13 +425,18 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, // Insert dummy error-recovery result result = intermediate.addConstantUnion(0.0, EbtFloat, loc); } else { - // Insert valid dereferenced result - TType newType(base->getType(), 0); // dereferenced type - if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) - newType.getQualifier().storage = EvqConst; - else - newType.getQualifier().storage = EvqTemporary; - result->setType(newType); + // If the array reference was flattened, it has the correct type. E.g, if it was + // a uniform array, it was flattened INTO a set of scalar uniforms, not scalar temps. + // In that case, we preserve the qualifiers. + if (!flattened) { + // Insert valid dereferenced result + TType newType(base->getType(), 0); // dereferenced type + if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) + newType.getQualifier().storage = EvqConst; + else + newType.getQualifier().storage = EvqTemporary; + result->setType(newType); + } } return result; From 36876e640831a7f410adddf52d5230f357d12c58 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 23 Sep 2016 22:13:43 +0800 Subject: [PATCH 006/130] SPV: Still have to specify SPIR-V extension for gl_SubGroupSizeARB and gl_SubGroupInvocationARB. --- SPIRV/GlslangToSpv.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 8372dbb8..a6c777c6 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -524,10 +524,12 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; case glslang::EbvSubGroupSize: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::CapabilitySubgroupBallotKHR); return spv::BuiltInSubgroupSize; case glslang::EbvSubGroupInvocation: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::CapabilitySubgroupBallotKHR); return spv::BuiltInSubgroupLocalInvocationId; From 10f7fc739cd4501ee18a1ea7db781bdb1de000b4 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 25 Sep 2016 20:25:06 -0600 Subject: [PATCH 007/130] HLSL: Reverse what the driver is told about row/column majorness, matching the row-column reversal. --- Test/baseResults/hlsl.buffer.frag.out | 199 ++++++++++++---------- Test/baseResults/hlsl.layout.frag.out | 36 ++-- Test/baseResults/hlsl.reflection.vert.out | 14 +- Test/hlsl.buffer.frag | 4 + glslang/Include/revision.h | 4 +- hlsl/hlslGrammar.cpp | 4 +- hlsl/hlslParseHelper.cpp | 8 +- 7 files changed, 145 insertions(+), 124 deletions(-) diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 78a8e738..6d7b6105 100755 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -2,40 +2,40 @@ hlsl.buffer.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:26 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) -0:26 Function Parameters: -0:26 'input' (layout(location=0 ) in 4-component vector of float) +0:30 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:30 Function Parameters: +0:30 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:27 Sequence -0:27 move second child to first child (temp 4-component vector of float) +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 'input' (layout(location=0 ) in 4-component vector of float) -0:27 v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float) -0:27 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1}) -0:27 Constant: -0:27 0 (const uint) -0:27 v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float) -0:27 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2}) -0:27 Constant: -0:27 0 (const uint) -0:27 v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float) -0:27 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3}) -0:27 Constant: -0:27 0 (const uint) -0:27 v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float) -0:27 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7}) -0:27 Constant: -0:27 0 (const uint) -0:27 Branch: Return +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 'input' (layout(location=0 ) in 4-component vector of float) +0:31 v1: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:31 Constant: +0:31 0 (const uint) +0:31 v2: direct index for structure (layout(row_major std430 ) buffer 4-component vector of float) +0:31 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:31 Constant: +0:31 0 (const uint) +0:31 v3: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:31 Constant: +0:31 0 (const uint) +0:31 v4: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:31 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) +0:31 Constant: +0:31 0 (const uint) +0:31 Branch: Return 0:? Linker Objects -0:? 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1}) -0:? 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2}) -0:? 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3}) -0:? 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:? 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:? 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'input' (layout(location=0 ) in 4-component vector of float) @@ -46,46 +46,46 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:26 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) -0:26 Function Parameters: -0:26 'input' (layout(location=0 ) in 4-component vector of float) +0:30 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:30 Function Parameters: +0:30 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:27 Sequence -0:27 move second child to first child (temp 4-component vector of float) +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 add (temp 4-component vector of float) -0:27 'input' (layout(location=0 ) in 4-component vector of float) -0:27 v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float) -0:27 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1}) -0:27 Constant: -0:27 0 (const uint) -0:27 v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float) -0:27 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2}) -0:27 Constant: -0:27 0 (const uint) -0:27 v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float) -0:27 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3}) -0:27 Constant: -0:27 0 (const uint) -0:27 v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float) -0:27 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7}) -0:27 Constant: -0:27 0 (const uint) -0:27 Branch: Return +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 'input' (layout(location=0 ) in 4-component vector of float) +0:31 v1: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:31 Constant: +0:31 0 (const uint) +0:31 v2: direct index for structure (layout(row_major std430 ) buffer 4-component vector of float) +0:31 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:31 Constant: +0:31 0 (const uint) +0:31 v3: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:31 Constant: +0:31 0 (const uint) +0:31 v4: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:31 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) +0:31 Constant: +0:31 0 (const uint) +0:31 Branch: Return 0:? Linker Objects -0:? 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1}) -0:? 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2}) -0:? 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3}) -0:? 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:? 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:? 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'input' (layout(location=0 ) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 41 +// Id's are bound by 42 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -105,16 +105,20 @@ gl_FragCoord origin is upper left MemberName 28 0 "v3" MemberName 28 1 "i3" Name 30 "" - Name 34 "" - MemberName 34 0 "v4" - MemberName 34 1 "i4" - MemberName 34 2 "f1" - MemberName 34 3 "f3" - MemberName 34 4 "f4" - MemberName 34 5 "f5" - MemberName 34 6 "f6" - MemberName 34 7 "f7" - Name 36 "" + Name 35 "" + MemberName 35 0 "v4" + MemberName 35 1 "i4" + MemberName 35 2 "f1" + MemberName 35 3 "f3" + MemberName 35 4 "f4" + MemberName 35 5 "f5" + MemberName 35 6 "f6" + MemberName 35 7 "f7" + MemberName 35 8 "m1" + MemberName 35 9 "m2" + MemberName 35 10 "m3" + MemberName 35 11 "m4" + Name 37 "" Decorate 9(@entryPointOutput) Location 0 Decorate 11(input) Location 0 MemberDecorate 13 0 Offset 0 @@ -128,17 +132,29 @@ gl_FragCoord origin is upper left Decorate 28 Block Decorate 30 DescriptorSet 10 Decorate 30 Binding 2 - MemberDecorate 34 0 Offset 16 - MemberDecorate 34 1 Offset 48 - MemberDecorate 34 2 Offset 60 - MemberDecorate 34 3 Offset 64 - MemberDecorate 34 4 Offset 68 - MemberDecorate 34 5 Offset 72 - MemberDecorate 34 6 Offset 76 - MemberDecorate 34 7 Offset 80 - Decorate 34 BufferBlock - Decorate 36 DescriptorSet 0 - Decorate 36 Binding 8 + MemberDecorate 35 0 Offset 16 + MemberDecorate 35 1 Offset 48 + MemberDecorate 35 2 Offset 60 + MemberDecorate 35 3 Offset 64 + MemberDecorate 35 4 Offset 68 + MemberDecorate 35 5 Offset 72 + MemberDecorate 35 6 Offset 76 + MemberDecorate 35 7 Offset 80 + MemberDecorate 35 8 RowMajor + MemberDecorate 35 8 Offset 96 + MemberDecorate 35 8 MatrixStride 16 + MemberDecorate 35 9 ColMajor + MemberDecorate 35 9 Offset 160 + MemberDecorate 35 9 MatrixStride 16 + MemberDecorate 35 10 RowMajor + MemberDecorate 35 10 Offset 208 + MemberDecorate 35 10 MatrixStride 16 + MemberDecorate 35 11 RowMajor + MemberDecorate 35 11 Offset 272 + MemberDecorate 35 11 MatrixStride 16 + Decorate 35 BufferBlock + Decorate 37 DescriptorSet 0 + Decorate 37 Binding 8 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -159,9 +175,10 @@ gl_FragCoord origin is upper left 28: TypeStruct 7(fvec4) 16(int) 29: TypePointer Uniform 28(struct) 30: 29(ptr) Variable Uniform - 34: TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) - 35: TypePointer Uniform 34(struct) - 36: 35(ptr) Variable Uniform + 34: TypeMatrix 7(fvec4) 3 + 35: TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 34 34 34 34 + 36: TypePointer Uniform 35(struct) + 37: 36(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(input) @@ -174,9 +191,9 @@ gl_FragCoord origin is upper left 31: 18(ptr) AccessChain 30 17 32: 7(fvec4) Load 31 33: 7(fvec4) FAdd 27 32 - 37: 18(ptr) AccessChain 36 17 - 38: 7(fvec4) Load 37 - 39: 7(fvec4) FAdd 33 38 - Store 9(@entryPointOutput) 39 + 38: 18(ptr) AccessChain 37 17 + 39: 7(fvec4) Load 38 + 40: 7(fvec4) FAdd 33 39 + Store 9(@entryPointOutput) 40 Return FunctionEnd diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index 44553855..938332b7 100755 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -11,24 +11,24 @@ gl_FragCoord origin is upper left 0:17 add (temp 4-component vector of float) 0:17 add (temp 4-component vector of float) 0:17 'input' (in 4-component vector of float) -0:17 v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float) -0:17 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1}) +0:17 v1: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1}) 0:17 Constant: 0:17 0 (const uint) -0:17 v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float) -0:17 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5}) +0:17 v5: direct index for structure (layout(row_major std430 offset=0 ) buffer 4-component vector of float) +0:17 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5}) 0:17 Constant: 0:17 0 (const uint) -0:17 v1PostLayout: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float) -0:17 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) +0:17 v1PostLayout: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) 0:17 Constant: 0:17 0 (const uint) 0:? Linker Objects -0:? 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1}) -0:? 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5}) +0:? 'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5}) 0:? 'specConst' (specialization-constant const int) 0:? 10 (const int) -0:? 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) +0:? 'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) Linked fragment stage: @@ -46,24 +46,24 @@ gl_FragCoord origin is upper left 0:17 add (temp 4-component vector of float) 0:17 add (temp 4-component vector of float) 0:17 'input' (in 4-component vector of float) -0:17 v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float) -0:17 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1}) +0:17 v1: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1}) 0:17 Constant: 0:17 0 (const uint) -0:17 v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float) -0:17 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5}) +0:17 v5: direct index for structure (layout(row_major std430 offset=0 ) buffer 4-component vector of float) +0:17 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5}) 0:17 Constant: 0:17 0 (const uint) -0:17 v1PostLayout: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float) -0:17 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) +0:17 v1PostLayout: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) 0:17 Constant: 0:17 0 (const uint) 0:? Linker Objects -0:? 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1}) -0:? 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5}) +0:? 'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5}) 0:? 'specConst' (specialization-constant const int) 0:? 10 (const int) -0:? 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) +0:? 'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out index b97de159..466b2a6f 100644 --- a/Test/baseResults/hlsl.reflection.vert.out +++ b/Test/baseResults/hlsl.reflection.vert.out @@ -4,16 +4,16 @@ Linked vertex stage: Uniform reflection: -anonMember3: offset 96, type 8b52, size 1, index 0 +anonMember3: offset 80, type 8b52, size 1, index 0 s.a: offset -1, type 1404, size 1, index -1 scalar: offset 12, type 1404, size 1, index 0 m23: offset 16, type 8b67, size 1, index 0 -scalarAfterm23: offset 64, type 1404, size 1, index 0 +scalarAfterm23: offset 48, type 1404, size 1, index 0 c_m23: offset 16, type 8b67, size 1, index 0 -c_scalarAfterm23: offset 64, type 1404, size 1, index 0 -scalarBeforeArray: offset 112, type 1404, size 1, index 0 -floatArray: offset 128, type 1406, size 5, index 0 -scalarAfterArray: offset 208, type 1404, size 1, index 0 +c_scalarAfterm23: offset 48, type 1404, size 1, index 0 +scalarBeforeArray: offset 96, type 1404, size 1, index 0 +floatArray: offset 112, type 1406, size 5, index 0 +scalarAfterArray: offset 192, type 1404, size 1, index 0 memfloat2: offset 48, type 8b50, size 1, index 0 memf1: offset 56, type 1406, size 1, index 0 memf2: offset 60, type 8b56, size 1, index 0 @@ -73,7 +73,7 @@ anonMember1: offset 0, type 8b51, size 1, index 0 uf1: offset -1, type 1406, size 1, index -1 Uniform block reflection: -: offset -1, type ffffffff, size 512, index -1 +: offset -1, type ffffffff, size 496, index -1 Vertex attribute reflection: attributeFloat: offset 0, type 1406, size 0, index 0 diff --git a/Test/hlsl.buffer.frag b/Test/hlsl.buffer.frag index 4e28043a..b93dcd31 100644 --- a/Test/hlsl.buffer.frag +++ b/Test/hlsl.buffer.frag @@ -20,6 +20,10 @@ tbuffer tbufName : register(b8) { float f5 : packoffset(c4.z); float f6 : packoffset(c); float f7; + float3x4 m1; + row_major float3x4 m2; + column_major float3x4 m3; + float3x4 m4; }; float4 PixelShaderFunction(float4 input) : COLOR0 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 0fd06e15..811e161b 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1506" -#define GLSLANG_DATE "21-Sep-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1507" +#define GLSLANG_DATE "25-Sep-2016" diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index d458a882..30d42f10 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -491,10 +491,10 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier) qualifier.sample = true; break; case EHTokRowMajor: - qualifier.layoutMatrix = ElmRowMajor; + qualifier.layoutMatrix = ElmColumnMajor; break; case EHTokColumnMajor: - qualifier.layoutMatrix = ElmColumnMajor; + qualifier.layoutMatrix = ElmRowMajor; break; case EHTokPrecise: qualifier.noContraction = true; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 470b03f5..4afbd924 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -63,11 +63,11 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int linkage = new TIntermAggregate; globalUniformDefaults.clear(); - globalUniformDefaults.layoutMatrix = ElmColumnMajor; + globalUniformDefaults.layoutMatrix = ElmRowMajor; globalUniformDefaults.layoutPacking = ElpStd140; globalBufferDefaults.clear(); - globalBufferDefaults.layoutMatrix = ElmColumnMajor; + globalBufferDefaults.layoutMatrix = ElmRowMajor; globalBufferDefaults.layoutPacking = ElpStd430; globalInputDefaults.clear(); @@ -3624,11 +3624,11 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qua std::transform(id.begin(), id.end(), id.begin(), ::tolower); if (id == TQualifier::getLayoutMatrixString(ElmColumnMajor)) { - qualifier.layoutMatrix = ElmColumnMajor; + qualifier.layoutMatrix = ElmRowMajor; return; } if (id == TQualifier::getLayoutMatrixString(ElmRowMajor)) { - qualifier.layoutMatrix = ElmRowMajor; + qualifier.layoutMatrix = ElmColumnMajor; return; } if (id == "push_constant") { From b707205b0d939ce784d57ec42da663b8ff190f63 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Mon, 26 Sep 2016 15:53:40 +0800 Subject: [PATCH 008/130] SPV: OpGroupBroadcast is unable to handle vector operand. --- SPIRV/GlslangToSpv.cpp | 43 +- Test/baseResults/spv.shaderBallot.comp.out | 438 ++++++++++++--------- 2 files changed, 272 insertions(+), 209 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index a6c777c6..c79b6c21 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -156,9 +156,7 @@ protected: 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); spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); -#ifdef AMD_EXTENSIONS - spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, spv::Id operand); -#endif + spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector& operands); spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); @@ -4029,6 +4027,8 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op case glslang::EOpReadInvocation: opCode = spv::OpGroupBroadcast; + if (builder.isVectorType(typeId)) + return CreateInvocationsVectorOperation(opCode, typeId, operands); break; case glslang::EOpReadFirstInvocation: opCode = spv::OpSubgroupFirstInvocationKHR; @@ -4084,7 +4084,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op } if (builder.isVectorType(typeId)) - return CreateInvocationsVectorOperation(opCode, typeId, operands[0]); + return CreateInvocationsVectorOperation(opCode, typeId, operands); break; case glslang::EOpMinInvocationsNonUniform: @@ -4118,7 +4118,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op } if (builder.isVectorType(typeId)) - return CreateInvocationsVectorOperation(opCode, typeId, operands[0]); + return CreateInvocationsVectorOperation(opCode, typeId, operands); break; #endif @@ -4131,16 +4131,21 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op return builder.createOp(opCode, typeId, spvGroupOperands); } -#ifdef AMD_EXTENSIONS // Create group invocation operations on a vector -spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, spv::Id operand) +spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector& operands) { +#ifdef AMD_EXTENSIONS assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin || op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax || - op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || + op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast || op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD || op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || op == spv::OpGroupSMaxNonUniformAMD || op == spv::OpGroupFAddNonUniformAMD || op == spv::OpGroupIAddNonUniformAMD); +#else + assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin || + op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax || + op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast); +#endif // Handle group invocation operations scalar by scalar. // The result type is the same type as the original type. @@ -4150,28 +4155,32 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv // - make a vector out the scalar results // get the types sorted out - int numComponents = builder.getNumComponents(operand); - spv::Id scalarType = builder.getScalarTypeId(builder.getTypeId(operand)); + int numComponents = builder.getNumComponents(operands[0]); + spv::Id scalarType = builder.getScalarTypeId(builder.getTypeId(operands[0])); std::vector results; // do each scalar op for (int comp = 0; comp < numComponents; ++comp) { std::vector indexes; indexes.push_back(comp); - spv::Id scalar = builder.createCompositeExtract(operand, scalarType, indexes); + spv::Id scalar = builder.createCompositeExtract(operands[0], scalarType, indexes); - std::vector operands; - operands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); - operands.push_back(spv::GroupOperationReduce); - operands.push_back(scalar); + std::vector spvGroupOperands; + spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); + if (op == spv::OpGroupBroadcast) { + spvGroupOperands.push_back(scalar); + spvGroupOperands.push_back(operands[1]); + } else { + spvGroupOperands.push_back(spv::GroupOperationReduce); + spvGroupOperands.push_back(scalar); + } - results.push_back(builder.createOp(op, scalarType, operands)); + results.push_back(builder.createOp(op, scalarType, spvGroupOperands)); } // put the pieces together return builder.createCompositeConstruct(typeId, results); } -#endif spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index c60db162..b837b8bc 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -7,7 +7,7 @@ Linked compute stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 245 +// Id's are bound by 299 Capability Shader Capability Int64 @@ -49,7 +49,7 @@ Linked compute stage: Decorate 52(Buffers) BufferBlock Decorate 55(data) DescriptorSet 0 Decorate 55(data) Binding 0 - Decorate 244 BuiltIn WorkgroupSize + Decorate 298 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -85,19 +85,19 @@ Linked compute stage: 67: 50(int) Constant 1 68: TypeVector 48(float) 2 69: TypePointer Uniform 49(fvec4) - 79: 50(int) Constant 2 - 80: TypeVector 48(float) 3 - 90: 50(int) Constant 3 - 97: TypePointer Uniform 50(int) - 104: TypeVector 50(int) 2 - 105: TypePointer Uniform 51(ivec4) - 115: TypeVector 50(int) 3 - 131: TypePointer Uniform 6(int) - 138: TypePointer Uniform 38(ivec4) - 148: TypeVector 6(int) 3 - 242: 6(int) Constant 8 - 243: 6(int) Constant 1 - 244: 148(ivec3) ConstantComposite 242 242 243 + 83: 50(int) Constant 2 + 84: TypeVector 48(float) 3 + 100: 50(int) Constant 3 + 115: TypePointer Uniform 50(int) + 122: TypeVector 50(int) 2 + 123: TypePointer Uniform 51(ivec4) + 137: TypeVector 50(int) 3 + 167: TypePointer Uniform 6(int) + 174: TypePointer Uniform 38(ivec4) + 188: TypeVector 6(int) 3 + 296: 6(int) Constant 8 + 297: 6(int) Constant 1 + 298: 188(ivec3) ConstantComposite 296 296 297 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function @@ -125,7 +125,7 @@ Linked compute stage: 44: 17(int) Bitcast 43 45: 36(bool) IEqual 35 44 SelectionMerge 47 None - BranchConditional 45 46 163 + BranchConditional 45 46 217 46: Label 56: 6(int) Load 8(invocation) 60: 59(ptr) AccessChain 55(data) 57 57 58 @@ -139,188 +139,242 @@ Linked compute stage: 71: 49(fvec4) Load 70 72: 68(fvec2) VectorShuffle 71 71 0 1 73: 6(int) Load 8(invocation) - 74: 68(fvec2) GroupBroadcast 63 72 73 - 75: 69(ptr) AccessChain 55(data) 66 57 - 76: 49(fvec4) Load 75 - 77: 49(fvec4) VectorShuffle 76 74 4 5 2 3 - Store 75 77 - 78: 6(int) Load 8(invocation) - 81: 69(ptr) AccessChain 55(data) 79 57 - 82: 49(fvec4) Load 81 - 83: 80(fvec3) VectorShuffle 82 82 0 1 2 - 84: 6(int) Load 8(invocation) - 85: 80(fvec3) GroupBroadcast 63 83 84 - 86: 69(ptr) AccessChain 55(data) 78 57 - 87: 49(fvec4) Load 86 - 88: 49(fvec4) VectorShuffle 87 85 4 5 6 3 - Store 86 88 - 89: 6(int) Load 8(invocation) - 91: 69(ptr) AccessChain 55(data) 90 57 - 92: 49(fvec4) Load 91 - 93: 6(int) Load 8(invocation) - 94: 49(fvec4) GroupBroadcast 63 92 93 - 95: 69(ptr) AccessChain 55(data) 89 57 - Store 95 94 - 96: 6(int) Load 8(invocation) - 98: 97(ptr) AccessChain 55(data) 57 67 58 - 99: 50(int) Load 98 - 100: 6(int) Load 8(invocation) - 101: 50(int) GroupBroadcast 63 99 100 - 102: 97(ptr) AccessChain 55(data) 96 67 58 - Store 102 101 + 74: 48(float) CompositeExtract 72 0 + 75: 48(float) GroupBroadcast 63 74 73 + 76: 48(float) CompositeExtract 72 1 + 77: 48(float) GroupBroadcast 63 76 73 + 78: 68(fvec2) CompositeConstruct 75 77 + 79: 69(ptr) AccessChain 55(data) 66 57 + 80: 49(fvec4) Load 79 + 81: 49(fvec4) VectorShuffle 80 78 4 5 2 3 + Store 79 81 + 82: 6(int) Load 8(invocation) + 85: 69(ptr) AccessChain 55(data) 83 57 + 86: 49(fvec4) Load 85 + 87: 84(fvec3) VectorShuffle 86 86 0 1 2 + 88: 6(int) Load 8(invocation) + 89: 48(float) CompositeExtract 87 0 + 90: 48(float) GroupBroadcast 63 89 88 + 91: 48(float) CompositeExtract 87 1 + 92: 48(float) GroupBroadcast 63 91 88 + 93: 48(float) CompositeExtract 87 2 + 94: 48(float) GroupBroadcast 63 93 88 + 95: 84(fvec3) CompositeConstruct 90 92 94 + 96: 69(ptr) AccessChain 55(data) 82 57 + 97: 49(fvec4) Load 96 + 98: 49(fvec4) VectorShuffle 97 95 4 5 6 3 + Store 96 98 + 99: 6(int) Load 8(invocation) + 101: 69(ptr) AccessChain 55(data) 100 57 + 102: 49(fvec4) Load 101 103: 6(int) Load 8(invocation) - 106: 105(ptr) AccessChain 55(data) 67 67 - 107: 51(ivec4) Load 106 - 108: 104(ivec2) VectorShuffle 107 107 0 1 - 109: 6(int) Load 8(invocation) - 110: 104(ivec2) GroupBroadcast 63 108 109 - 111: 105(ptr) AccessChain 55(data) 103 67 - 112: 51(ivec4) Load 111 - 113: 51(ivec4) VectorShuffle 112 110 4 5 2 3 - Store 111 113 + 104: 48(float) CompositeExtract 102 0 + 105: 48(float) GroupBroadcast 63 104 103 + 106: 48(float) CompositeExtract 102 1 + 107: 48(float) GroupBroadcast 63 106 103 + 108: 48(float) CompositeExtract 102 2 + 109: 48(float) GroupBroadcast 63 108 103 + 110: 48(float) CompositeExtract 102 3 + 111: 48(float) GroupBroadcast 63 110 103 + 112: 49(fvec4) CompositeConstruct 105 107 109 111 + 113: 69(ptr) AccessChain 55(data) 99 57 + Store 113 112 114: 6(int) Load 8(invocation) - 116: 105(ptr) AccessChain 55(data) 79 67 - 117: 51(ivec4) Load 116 - 118: 115(ivec3) VectorShuffle 117 117 0 1 2 - 119: 6(int) Load 8(invocation) - 120: 115(ivec3) GroupBroadcast 63 118 119 - 121: 105(ptr) AccessChain 55(data) 114 67 - 122: 51(ivec4) Load 121 - 123: 51(ivec4) VectorShuffle 122 120 4 5 6 3 - Store 121 123 - 124: 6(int) Load 8(invocation) - 125: 105(ptr) AccessChain 55(data) 90 67 - 126: 51(ivec4) Load 125 + 116: 115(ptr) AccessChain 55(data) 57 67 58 + 117: 50(int) Load 116 + 118: 6(int) Load 8(invocation) + 119: 50(int) GroupBroadcast 63 117 118 + 120: 115(ptr) AccessChain 55(data) 114 67 58 + Store 120 119 + 121: 6(int) Load 8(invocation) + 124: 123(ptr) AccessChain 55(data) 67 67 + 125: 51(ivec4) Load 124 + 126: 122(ivec2) VectorShuffle 125 125 0 1 127: 6(int) Load 8(invocation) - 128: 51(ivec4) GroupBroadcast 63 126 127 - 129: 105(ptr) AccessChain 55(data) 124 67 - Store 129 128 - 130: 6(int) Load 8(invocation) - 132: 131(ptr) AccessChain 55(data) 57 79 58 - 133: 6(int) Load 132 - 134: 6(int) Load 8(invocation) - 135: 6(int) GroupBroadcast 63 133 134 - 136: 131(ptr) AccessChain 55(data) 130 79 58 - Store 136 135 - 137: 6(int) Load 8(invocation) - 139: 138(ptr) AccessChain 55(data) 67 79 - 140: 38(ivec4) Load 139 - 141: 42(ivec2) VectorShuffle 140 140 0 1 - 142: 6(int) Load 8(invocation) - 143: 42(ivec2) GroupBroadcast 63 141 142 - 144: 138(ptr) AccessChain 55(data) 137 79 - 145: 38(ivec4) Load 144 - 146: 38(ivec4) VectorShuffle 145 143 4 5 2 3 - Store 144 146 - 147: 6(int) Load 8(invocation) - 149: 138(ptr) AccessChain 55(data) 79 79 - 150: 38(ivec4) Load 149 - 151: 148(ivec3) VectorShuffle 150 150 0 1 2 + 128: 50(int) CompositeExtract 126 0 + 129: 50(int) GroupBroadcast 63 128 127 + 130: 50(int) CompositeExtract 126 1 + 131: 50(int) GroupBroadcast 63 130 127 + 132: 122(ivec2) CompositeConstruct 129 131 + 133: 123(ptr) AccessChain 55(data) 121 67 + 134: 51(ivec4) Load 133 + 135: 51(ivec4) VectorShuffle 134 132 4 5 2 3 + Store 133 135 + 136: 6(int) Load 8(invocation) + 138: 123(ptr) AccessChain 55(data) 83 67 + 139: 51(ivec4) Load 138 + 140: 137(ivec3) VectorShuffle 139 139 0 1 2 + 141: 6(int) Load 8(invocation) + 142: 50(int) CompositeExtract 140 0 + 143: 50(int) GroupBroadcast 63 142 141 + 144: 50(int) CompositeExtract 140 1 + 145: 50(int) GroupBroadcast 63 144 141 + 146: 50(int) CompositeExtract 140 2 + 147: 50(int) GroupBroadcast 63 146 141 + 148: 137(ivec3) CompositeConstruct 143 145 147 + 149: 123(ptr) AccessChain 55(data) 136 67 + 150: 51(ivec4) Load 149 + 151: 51(ivec4) VectorShuffle 150 148 4 5 6 3 + Store 149 151 152: 6(int) Load 8(invocation) - 153: 148(ivec3) GroupBroadcast 63 151 152 - 154: 138(ptr) AccessChain 55(data) 147 79 - 155: 38(ivec4) Load 154 - 156: 38(ivec4) VectorShuffle 155 153 4 5 6 3 - Store 154 156 - 157: 6(int) Load 8(invocation) - 158: 138(ptr) AccessChain 55(data) 90 79 - 159: 38(ivec4) Load 158 - 160: 6(int) Load 8(invocation) - 161: 38(ivec4) GroupBroadcast 63 159 160 - 162: 138(ptr) AccessChain 55(data) 157 79 - Store 162 161 - Branch 47 - 163: Label - 164: 6(int) Load 8(invocation) - 165: 59(ptr) AccessChain 55(data) 57 57 58 - 166: 48(float) Load 165 - 167: 48(float) SubgroupFirstInvocationKHR 166 - 168: 59(ptr) AccessChain 55(data) 164 57 58 - Store 168 167 - 169: 6(int) Load 8(invocation) - 170: 69(ptr) AccessChain 55(data) 67 57 - 171: 49(fvec4) Load 170 - 172: 68(fvec2) VectorShuffle 171 171 0 1 - 173: 68(fvec2) SubgroupFirstInvocationKHR 172 - 174: 69(ptr) AccessChain 55(data) 169 57 - 175: 49(fvec4) Load 174 - 176: 49(fvec4) VectorShuffle 175 173 4 5 2 3 - Store 174 176 - 177: 6(int) Load 8(invocation) - 178: 69(ptr) AccessChain 55(data) 79 57 - 179: 49(fvec4) Load 178 - 180: 80(fvec3) VectorShuffle 179 179 0 1 2 - 181: 80(fvec3) SubgroupFirstInvocationKHR 180 - 182: 69(ptr) AccessChain 55(data) 177 57 - 183: 49(fvec4) Load 182 - 184: 49(fvec4) VectorShuffle 183 181 4 5 6 3 - Store 182 184 - 185: 6(int) Load 8(invocation) - 186: 69(ptr) AccessChain 55(data) 90 57 - 187: 49(fvec4) Load 186 - 188: 49(fvec4) SubgroupFirstInvocationKHR 187 - 189: 69(ptr) AccessChain 55(data) 185 57 - Store 189 188 - 190: 6(int) Load 8(invocation) - 191: 97(ptr) AccessChain 55(data) 57 67 58 - 192: 50(int) Load 191 - 193: 50(int) SubgroupFirstInvocationKHR 192 - 194: 97(ptr) AccessChain 55(data) 190 67 58 - Store 194 193 - 195: 6(int) Load 8(invocation) - 196: 105(ptr) AccessChain 55(data) 67 67 - 197: 51(ivec4) Load 196 - 198: 104(ivec2) VectorShuffle 197 197 0 1 - 199: 104(ivec2) SubgroupFirstInvocationKHR 198 - 200: 105(ptr) AccessChain 55(data) 195 67 - 201: 51(ivec4) Load 200 - 202: 51(ivec4) VectorShuffle 201 199 4 5 2 3 + 153: 123(ptr) AccessChain 55(data) 100 67 + 154: 51(ivec4) Load 153 + 155: 6(int) Load 8(invocation) + 156: 50(int) CompositeExtract 154 0 + 157: 50(int) GroupBroadcast 63 156 155 + 158: 50(int) CompositeExtract 154 1 + 159: 50(int) GroupBroadcast 63 158 155 + 160: 50(int) CompositeExtract 154 2 + 161: 50(int) GroupBroadcast 63 160 155 + 162: 50(int) CompositeExtract 154 3 + 163: 50(int) GroupBroadcast 63 162 155 + 164: 51(ivec4) CompositeConstruct 157 159 161 163 + 165: 123(ptr) AccessChain 55(data) 152 67 + Store 165 164 + 166: 6(int) Load 8(invocation) + 168: 167(ptr) AccessChain 55(data) 57 83 58 + 169: 6(int) Load 168 + 170: 6(int) Load 8(invocation) + 171: 6(int) GroupBroadcast 63 169 170 + 172: 167(ptr) AccessChain 55(data) 166 83 58 + Store 172 171 + 173: 6(int) Load 8(invocation) + 175: 174(ptr) AccessChain 55(data) 67 83 + 176: 38(ivec4) Load 175 + 177: 42(ivec2) VectorShuffle 176 176 0 1 + 178: 6(int) Load 8(invocation) + 179: 6(int) CompositeExtract 177 0 + 180: 6(int) GroupBroadcast 63 179 178 + 181: 6(int) CompositeExtract 177 1 + 182: 6(int) GroupBroadcast 63 181 178 + 183: 42(ivec2) CompositeConstruct 180 182 + 184: 174(ptr) AccessChain 55(data) 173 83 + 185: 38(ivec4) Load 184 + 186: 38(ivec4) VectorShuffle 185 183 4 5 2 3 + Store 184 186 + 187: 6(int) Load 8(invocation) + 189: 174(ptr) AccessChain 55(data) 83 83 + 190: 38(ivec4) Load 189 + 191: 188(ivec3) VectorShuffle 190 190 0 1 2 + 192: 6(int) Load 8(invocation) + 193: 6(int) CompositeExtract 191 0 + 194: 6(int) GroupBroadcast 63 193 192 + 195: 6(int) CompositeExtract 191 1 + 196: 6(int) GroupBroadcast 63 195 192 + 197: 6(int) CompositeExtract 191 2 + 198: 6(int) GroupBroadcast 63 197 192 + 199: 188(ivec3) CompositeConstruct 194 196 198 + 200: 174(ptr) AccessChain 55(data) 187 83 + 201: 38(ivec4) Load 200 + 202: 38(ivec4) VectorShuffle 201 199 4 5 6 3 Store 200 202 203: 6(int) Load 8(invocation) - 204: 105(ptr) AccessChain 55(data) 79 67 - 205: 51(ivec4) Load 204 - 206: 115(ivec3) VectorShuffle 205 205 0 1 2 - 207: 115(ivec3) SubgroupFirstInvocationKHR 206 - 208: 105(ptr) AccessChain 55(data) 203 67 - 209: 51(ivec4) Load 208 - 210: 51(ivec4) VectorShuffle 209 207 4 5 6 3 - Store 208 210 - 211: 6(int) Load 8(invocation) - 212: 105(ptr) AccessChain 55(data) 90 67 - 213: 51(ivec4) Load 212 - 214: 51(ivec4) SubgroupFirstInvocationKHR 213 - 215: 105(ptr) AccessChain 55(data) 211 67 - Store 215 214 - 216: 6(int) Load 8(invocation) - 217: 131(ptr) AccessChain 55(data) 57 79 58 - 218: 6(int) Load 217 - 219: 6(int) SubgroupFirstInvocationKHR 218 - 220: 131(ptr) AccessChain 55(data) 216 79 58 - Store 220 219 - 221: 6(int) Load 8(invocation) - 222: 138(ptr) AccessChain 55(data) 67 79 - 223: 38(ivec4) Load 222 - 224: 42(ivec2) VectorShuffle 223 223 0 1 - 225: 42(ivec2) SubgroupFirstInvocationKHR 224 - 226: 138(ptr) AccessChain 55(data) 221 79 - 227: 38(ivec4) Load 226 - 228: 38(ivec4) VectorShuffle 227 225 4 5 2 3 - Store 226 228 - 229: 6(int) Load 8(invocation) - 230: 138(ptr) AccessChain 55(data) 79 79 - 231: 38(ivec4) Load 230 - 232: 148(ivec3) VectorShuffle 231 231 0 1 2 - 233: 148(ivec3) SubgroupFirstInvocationKHR 232 - 234: 138(ptr) AccessChain 55(data) 229 79 - 235: 38(ivec4) Load 234 - 236: 38(ivec4) VectorShuffle 235 233 4 5 6 3 - Store 234 236 - 237: 6(int) Load 8(invocation) - 238: 138(ptr) AccessChain 55(data) 90 79 - 239: 38(ivec4) Load 238 - 240: 38(ivec4) SubgroupFirstInvocationKHR 239 - 241: 138(ptr) AccessChain 55(data) 237 79 - Store 241 240 + 204: 174(ptr) AccessChain 55(data) 100 83 + 205: 38(ivec4) Load 204 + 206: 6(int) Load 8(invocation) + 207: 6(int) CompositeExtract 205 0 + 208: 6(int) GroupBroadcast 63 207 206 + 209: 6(int) CompositeExtract 205 1 + 210: 6(int) GroupBroadcast 63 209 206 + 211: 6(int) CompositeExtract 205 2 + 212: 6(int) GroupBroadcast 63 211 206 + 213: 6(int) CompositeExtract 205 3 + 214: 6(int) GroupBroadcast 63 213 206 + 215: 38(ivec4) CompositeConstruct 208 210 212 214 + 216: 174(ptr) AccessChain 55(data) 203 83 + Store 216 215 + Branch 47 + 217: Label + 218: 6(int) Load 8(invocation) + 219: 59(ptr) AccessChain 55(data) 57 57 58 + 220: 48(float) Load 219 + 221: 48(float) SubgroupFirstInvocationKHR 220 + 222: 59(ptr) AccessChain 55(data) 218 57 58 + Store 222 221 + 223: 6(int) Load 8(invocation) + 224: 69(ptr) AccessChain 55(data) 67 57 + 225: 49(fvec4) Load 224 + 226: 68(fvec2) VectorShuffle 225 225 0 1 + 227: 68(fvec2) SubgroupFirstInvocationKHR 226 + 228: 69(ptr) AccessChain 55(data) 223 57 + 229: 49(fvec4) Load 228 + 230: 49(fvec4) VectorShuffle 229 227 4 5 2 3 + Store 228 230 + 231: 6(int) Load 8(invocation) + 232: 69(ptr) AccessChain 55(data) 83 57 + 233: 49(fvec4) Load 232 + 234: 84(fvec3) VectorShuffle 233 233 0 1 2 + 235: 84(fvec3) SubgroupFirstInvocationKHR 234 + 236: 69(ptr) AccessChain 55(data) 231 57 + 237: 49(fvec4) Load 236 + 238: 49(fvec4) VectorShuffle 237 235 4 5 6 3 + Store 236 238 + 239: 6(int) Load 8(invocation) + 240: 69(ptr) AccessChain 55(data) 100 57 + 241: 49(fvec4) Load 240 + 242: 49(fvec4) SubgroupFirstInvocationKHR 241 + 243: 69(ptr) AccessChain 55(data) 239 57 + Store 243 242 + 244: 6(int) Load 8(invocation) + 245: 115(ptr) AccessChain 55(data) 57 67 58 + 246: 50(int) Load 245 + 247: 50(int) SubgroupFirstInvocationKHR 246 + 248: 115(ptr) AccessChain 55(data) 244 67 58 + Store 248 247 + 249: 6(int) Load 8(invocation) + 250: 123(ptr) AccessChain 55(data) 67 67 + 251: 51(ivec4) Load 250 + 252: 122(ivec2) VectorShuffle 251 251 0 1 + 253: 122(ivec2) SubgroupFirstInvocationKHR 252 + 254: 123(ptr) AccessChain 55(data) 249 67 + 255: 51(ivec4) Load 254 + 256: 51(ivec4) VectorShuffle 255 253 4 5 2 3 + Store 254 256 + 257: 6(int) Load 8(invocation) + 258: 123(ptr) AccessChain 55(data) 83 67 + 259: 51(ivec4) Load 258 + 260: 137(ivec3) VectorShuffle 259 259 0 1 2 + 261: 137(ivec3) SubgroupFirstInvocationKHR 260 + 262: 123(ptr) AccessChain 55(data) 257 67 + 263: 51(ivec4) Load 262 + 264: 51(ivec4) VectorShuffle 263 261 4 5 6 3 + Store 262 264 + 265: 6(int) Load 8(invocation) + 266: 123(ptr) AccessChain 55(data) 100 67 + 267: 51(ivec4) Load 266 + 268: 51(ivec4) SubgroupFirstInvocationKHR 267 + 269: 123(ptr) AccessChain 55(data) 265 67 + Store 269 268 + 270: 6(int) Load 8(invocation) + 271: 167(ptr) AccessChain 55(data) 57 83 58 + 272: 6(int) Load 271 + 273: 6(int) SubgroupFirstInvocationKHR 272 + 274: 167(ptr) AccessChain 55(data) 270 83 58 + Store 274 273 + 275: 6(int) Load 8(invocation) + 276: 174(ptr) AccessChain 55(data) 67 83 + 277: 38(ivec4) Load 276 + 278: 42(ivec2) VectorShuffle 277 277 0 1 + 279: 42(ivec2) SubgroupFirstInvocationKHR 278 + 280: 174(ptr) AccessChain 55(data) 275 83 + 281: 38(ivec4) Load 280 + 282: 38(ivec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 284: 174(ptr) AccessChain 55(data) 83 83 + 285: 38(ivec4) Load 284 + 286: 188(ivec3) VectorShuffle 285 285 0 1 2 + 287: 188(ivec3) SubgroupFirstInvocationKHR 286 + 288: 174(ptr) AccessChain 55(data) 283 83 + 289: 38(ivec4) Load 288 + 290: 38(ivec4) VectorShuffle 289 287 4 5 6 3 + Store 288 290 + 291: 6(int) Load 8(invocation) + 292: 174(ptr) AccessChain 55(data) 100 83 + 293: 38(ivec4) Load 292 + 294: 38(ivec4) SubgroupFirstInvocationKHR 293 + 295: 174(ptr) AccessChain 55(data) 291 83 + Store 295 294 Branch 47 47: Label Return From ad0752e8faf365b5265b832cb524c107452d6521 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Mon, 26 Sep 2016 17:02:44 -0600 Subject: [PATCH 009/130] GLSL: Add binding map tests This PR adds a GLSL equivalent to the HLSL binding mapping tests for offsets and auto-numbering. The shaders are as equivalent as possible. The bindings of the base results match exactly between the two. --- .../spv.glsl.register.autoassign.frag.out | 228 ++++++++++++++++++ .../spv.glsl.register.noautoassign.frag.out | 222 +++++++++++++++++ Test/spv.glsl.register.autoassign.frag | 68 ++++++ Test/spv.glsl.register.noautoassign.frag | 68 ++++++ gtests/Spv.FromFile.cpp | 32 ++- 5 files changed, 614 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/spv.glsl.register.autoassign.frag.out create mode 100644 Test/baseResults/spv.glsl.register.noautoassign.frag.out create mode 100644 Test/spv.glsl.register.autoassign.frag create mode 100644 Test/spv.glsl.register.noautoassign.frag diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out new file mode 100644 index 00000000..a96b904b --- /dev/null +++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -0,0 +1,228 @@ +spv.glsl.register.autoassign.frag +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 142 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 137 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "myblock" + MemberName 95(myblock) 0 "mystruct" + MemberName 95(myblock) 1 "myvec4_a" + MemberName 95(myblock) 2 "myvec4_b" + MemberName 95(myblock) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + 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 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 27(g_tTex2) Binding 1 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 29(g_sSamp2) Binding 2 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 64(g_tTex4) Binding 3 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 69(g_sSamp4) Binding 4 + Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 84(g_tTex5) Binding 6 + Decorate 86(g_sSamp5) DescriptorSet 0 + Decorate 86(g_sSamp5) Binding 8 + MemberDecorate 93(MyStruct_t) 0 Offset 0 + MemberDecorate 93(MyStruct_t) 1 Offset 4 + MemberDecorate 93(MyStruct_t) 2 Offset 16 + 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 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 141(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypeVector 40(int) 4 + 95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95(myblock) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136: TypePointer Output 7(fvec4) + 137(FragColor): 136(ptr) Variable Output +141(g_tTex_unused3): 16(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 138: 7(fvec4) FunctionCall 9(Func1() + 139: 7(fvec4) FunctionCall 11(Func2() + 140: 7(fvec4) FAdd 138 139 + Store 137(FragColor) 140 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 + FunctionEnd diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out new file mode 100644 index 00000000..05bf3cf0 --- /dev/null +++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out @@ -0,0 +1,222 @@ +spv.glsl.register.noautoassign.frag +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 142 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 137 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "myblock" + MemberName 95(myblock) 0 "mystruct" + MemberName 95(myblock) 1 "myvec4_a" + MemberName 95(myblock) 2 "myvec4_b" + MemberName 95(myblock) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + 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 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 84(g_tTex5) DescriptorSet 0 + 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 + 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 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 141(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypeVector 40(int) 4 + 95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95(myblock) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136: TypePointer Output 7(fvec4) + 137(FragColor): 136(ptr) Variable Output +141(g_tTex_unused3): 16(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 138: 7(fvec4) FunctionCall 9(Func1() + 139: 7(fvec4) FunctionCall 11(Func2() + 140: 7(fvec4) FAdd 138 139 + Store 137(FragColor) 140 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 + FunctionEnd diff --git a/Test/spv.glsl.register.autoassign.frag b/Test/spv.glsl.register.autoassign.frag new file mode 100644 index 00000000..f754d8aa --- /dev/null +++ b/Test/spv.glsl.register.autoassign.frag @@ -0,0 +1,68 @@ +#version 450 + +uniform layout(binding=0) sampler g_sSamp1; +uniform sampler g_sSamp2; +uniform layout(binding=2) sampler g_sSamp3[2]; +uniform sampler g_sSamp4[3]; +uniform sampler g_sSamp5; + +uniform sampler g_sSamp_unused1; +uniform sampler g_sSamp_unused2; + +uniform layout(binding=1) texture1D g_tTex1; +uniform texture1D g_tTex2; +uniform layout(binding=3) texture1D g_tTex3[2]; +uniform texture1D g_tTex4[3]; +uniform texture1D g_tTex5; + +uniform layout(binding=0) texture1D g_tTex_unused1; +uniform layout(binding=2) texture1D g_tTex_unused2; +uniform texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + vec3 c; +}; + +uniform layout(binding=4) myblock { + MyStruct_t mystruct; + vec4 myvec4_a; + vec4 myvec4_b; + ivec4 myint4_a; +}; + +vec4 Func1() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex2, g_sSamp2), 0.2) + + texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) + + texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) + + texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) + + texture(sampler1D(g_tTex5, g_sSamp5), 0.5) + + mystruct.c[1]; +} + +vec4 Func2() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3); +} + +// Not called from entry point: +vec4 Func2_unused() +{ + return + texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) + + texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2); +} + +out vec4 FragColor; + +void main() +{ + FragColor = Func1() + Func2(); +} diff --git a/Test/spv.glsl.register.noautoassign.frag b/Test/spv.glsl.register.noautoassign.frag new file mode 100644 index 00000000..f754d8aa --- /dev/null +++ b/Test/spv.glsl.register.noautoassign.frag @@ -0,0 +1,68 @@ +#version 450 + +uniform layout(binding=0) sampler g_sSamp1; +uniform sampler g_sSamp2; +uniform layout(binding=2) sampler g_sSamp3[2]; +uniform sampler g_sSamp4[3]; +uniform sampler g_sSamp5; + +uniform sampler g_sSamp_unused1; +uniform sampler g_sSamp_unused2; + +uniform layout(binding=1) texture1D g_tTex1; +uniform texture1D g_tTex2; +uniform layout(binding=3) texture1D g_tTex3[2]; +uniform texture1D g_tTex4[3]; +uniform texture1D g_tTex5; + +uniform layout(binding=0) texture1D g_tTex_unused1; +uniform layout(binding=2) texture1D g_tTex_unused2; +uniform texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + vec3 c; +}; + +uniform layout(binding=4) myblock { + MyStruct_t mystruct; + vec4 myvec4_a; + vec4 myvec4_b; + ivec4 myint4_a; +}; + +vec4 Func1() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex2, g_sSamp2), 0.2) + + texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) + + texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) + + texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) + + texture(sampler1D(g_tTex5, g_sSamp5), 0.5) + + mystruct.c[1]; +} + +vec4 Func2() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3); +} + +// Not called from entry point: +vec4 Func2_unused() +{ + return + texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) + + texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2); +} + +out vec4 FragColor; + +void main() +{ + FragColor = Func1() + Func2(); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 9dd21676..749daa06 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -1,4 +1,4 @@ -// + // // Copyright (C) 2016 Google, Inc. // // All rights reserved. @@ -65,7 +65,8 @@ using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; using VulkanAstSemantics = GlslangTest<::testing::TestWithParam>; -using HlslSemantics = GlslangTest<::testing::TestWithParam>; +using HlslIoMap = GlslangTest<::testing::TestWithParam>; +using GlslIoMap = GlslangTest<::testing::TestWithParam>; // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate SPIR-V. @@ -112,7 +113,7 @@ TEST_P(VulkanAstSemantics, FromFile) } // HLSL-level Vulkan semantics tests. -TEST_P(HlslSemantics, FromFile) +TEST_P(HlslIoMap, FromFile) { loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, Source::HLSL, Semantics::Vulkan, @@ -124,6 +125,19 @@ TEST_P(HlslSemantics, FromFile) GetParam().flattenUniforms); } +// GLSL-level Vulkan semantics tests. +TEST_P(GlslIoMap, FromFile) +{ + loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, + Source::GLSL, Semantics::Vulkan, + Target::Spv, GetParam().entryPoint, + GetParam().baseSamplerBinding, + GetParam().baseTextureBinding, + GetParam().baseUboBinding, + GetParam().autoMapBindings, + GetParam().flattenUniforms); +} + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToSpirvTest, @@ -251,7 +265,7 @@ INSTANTIATE_TEST_CASE_P( // clang-format off INSTANTIATE_TEST_CASE_P( - Hlsl, HlslSemantics, + Hlsl, HlslIoMap, ::testing::ValuesIn(std::vector{ { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false }, { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, @@ -260,6 +274,16 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffixIoMap ); +// clang-format off +INSTANTIATE_TEST_CASE_P( + Hlsl, GlslIoMap, + ::testing::ValuesIn(std::vector{ + { "spv.glsl.register.autoassign.frag", "main", 5, 10, 15, true, false }, + { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 15, false, false }, + }), + FileNameAsCustomTestSuffixIoMap +); + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileOpenGLToSpirvTest, From daff1a2523faf36df291bae95f6c44889e193747 Mon Sep 17 00:00:00 2001 From: Dominik Witczak Date: Tue, 27 Sep 2016 09:51:34 +0200 Subject: [PATCH 010/130] #517: Enable AMD extensions by default --- CMakeLists.txt | 2 +- Test/baseResults/300.vert.out | 2 +- Test/baseResults/420.vert.out | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c03edd7c..33b4764d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.8.11) set_property(GLOBAL PROPERTY USE_FOLDERS ON) -option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" OFF) +option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" ON) enable_testing() diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out index 66a06517..ecfa3d50 100644 --- a/Test/baseResults/300.vert.out +++ b/Test/baseResults/300.vert.out @@ -9,7 +9,7 @@ ERROR: 0:12: '' : vertex input cannot be further qualified ERROR: 0:13: '' : interpolation qualifiers must appear before storage and precision qualifiers ERROR: 0:14: '' : in/out must appear before const ERROR: 0:15: '' : precision qualifier must appear as last qualifier -ERROR: 0:16: '' : can only have one interpolation qualifier (flat, smooth, noperspective) +ERROR: 0:16: '' : can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD) ERROR: 0:17: 'sample' : Reserved word. ERROR: 0:17: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:18: 'uniform' : too many storage qualifiers diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out index a234970c..5636e7a1 100644 --- a/Test/baseResults/420.vert.out +++ b/Test/baseResults/420.vert.out @@ -4,7 +4,7 @@ ERROR: 0:2: '#version' : must occur first in shader WARNING: 0:3: varying deprecated in version 130; may be removed in future release ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420 ERROR: 0:7: '' : vertex input cannot be further qualified -ERROR: 0:11: '' : can only have one interpolation qualifier (flat, smooth, noperspective) +ERROR: 0:11: '' : can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD) ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:13: 'uniform' : too many storage qualifiers ERROR: 0:18: '=' : global const initializers must be constant 'const int' From 04b3e8746fa363b05ece9b314c8e3a067f971bbe Mon Sep 17 00:00:00 2001 From: Maciej Jesionowski Date: Mon, 26 Sep 2016 16:49:09 +0200 Subject: [PATCH 011/130] SPV: PrimitiveId in frag shader will emit Geometry capability Using PrimitiveId in a fragment shader requires declaring an OpCapability with either Geometry or Tessellation. --- SPIRV/GlslangToSpv.cpp | 8 +++++++- Test/baseResults/spv.400.frag.out | 14 ++++++++++++-- Test/spv.400.frag | 2 ++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index c79b6c21..34cdc5c2 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -499,11 +499,17 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex; case glslang::EbvBaseVertex: case glslang::EbvBaseInstance: + case glslang::EbvDrawId: // TODO: Add SPIR-V builtin ID. logger->missingFunctionality("shader draw parameters"); return spv::BuiltInMax; - case glslang::EbvPrimitiveId: return spv::BuiltInPrimitiveId; + + case glslang::EbvPrimitiveId: + if (glslangIntermediate->getStage() == EShLangFragment) + builder.addCapability(spv::CapabilityGeometry); + return spv::BuiltInPrimitiveId; + case glslang::EbvInvocationId: return spv::BuiltInInvocationId; case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner; case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter; diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out index f06b0fcd..7858845e 100644 --- a/Test/baseResults/spv.400.frag.out +++ b/Test/baseResults/spv.400.frag.out @@ -7,16 +7,17 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 1114 +// Id's are bound by 1118 Capability Shader + Capability Geometry Capability Float64 Capability ImageGatherExtended Capability ClipDistance Capability SampledRect 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 + EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116 ExecutionMode 4 OriginUpperLeft Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" @@ -55,6 +56,8 @@ Linked fragment stage: Name 1099 "vl2" Name 1105 "uo" Name 1107 "u" + Name 1115 "id" + Name 1116 "gl_PrimitiveID" Decorate 17(u2drs) DescriptorSet 0 Decorate 1025(arrayedSampler) DescriptorSet 0 Decorate 1027(i) Flat @@ -64,6 +67,8 @@ Linked fragment stage: Decorate 1097(gl_FragCoord) BuiltIn FragCoord Decorate 1099(vl2) Location 6 Decorate 1107(u) Flat + Decorate 1116(gl_PrimitiveID) Flat + Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 @@ -185,9 +190,12 @@ Linked fragment stage: 1105(uo): 1104(ptr) Variable Output 1106: TypePointer Input 32(int) 1107(u): 1106(ptr) Variable Input + 1114: TypePointer Function 23(int) +1116(gl_PrimitiveID): 1026(ptr) Variable Input 4(main): 2 Function None 3 5: Label 1019(v): 1018(ptr) Variable Function + 1115(id): 1114(ptr) Variable Function 1028: 23(int) Load 1027(i) 1030: 1029(ptr) AccessChain 1025(arrayedSampler) 1028 1031: 1021 Load 1030 @@ -242,6 +250,8 @@ Linked fragment stage: Store 1105(uo) 1111 1112: 2 FunctionCall 6(foo23() 1113: 2 FunctionCall 8(doubles() + 1117: 23(int) Load 1116(gl_PrimitiveID) + Store 1115(id) 1117 Return FunctionEnd 6(foo23(): 2 Function None 3 diff --git a/Test/spv.400.frag b/Test/spv.400.frag index 05b4370b..d64c4700 100644 --- a/Test/spv.400.frag +++ b/Test/spv.400.frag @@ -259,5 +259,7 @@ void main() uo = u % i; foo23(); doubles(); + + int id = gl_PrimitiveID; } From 265c0618b147478a6364d99ad4f00b33779675c7 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Tue, 27 Sep 2016 10:57:35 -0600 Subject: [PATCH 012/130] HLSL: allow implicit array sizing. In HLSL array sizes need not be provided explicitly in all circumstances. For example, this is valid (note no number between the [ ]): // no explicit array size uniform float g_array[] = { 1, 2, 3, 4, 5 }; This PR does not attempt to validate most invalid cases. A new test is added to verify the resulting linker objects. --- .../hlsl.array.implicit-size.frag.out | 264 ++++++++++++++++++ Test/hlsl.array.implicit-size.frag | 31 ++ gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 29 +- 4 files changed, 316 insertions(+), 9 deletions(-) create mode 100644 Test/baseResults/hlsl.array.implicit-size.frag.out create mode 100644 Test/hlsl.array.implicit-size.frag diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out new file mode 100644 index 00000000..6345c89c --- /dev/null +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -0,0 +1,264 @@ +hlsl.array.implicit-size.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:26 Function Parameters: +0:26 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp 3-element array of float) +0:28 'l_array' (temp 3-element array of float) +0:28 Constant: +0:28 1.000000 +0:28 2.000000 +0:28 3.000000 +0:30 move second child to first child (temp 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (out structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Construct vec4 (temp 4-component vector of float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 direct index (temp float) +0:30 'g_array' (uniform 5-element array of float) +0:30 1.000000 +0:30 2.000000 +0:30 3.000000 +0:30 4.000000 +0:30 5.000000 +0:30 Constant: +0:30 0 (const int) +0:30 direct index (temp float) +0:30 'g_array' (uniform 5-element array of float) +0:30 1.000000 +0:30 2.000000 +0:30 3.000000 +0:30 4.000000 +0:30 5.000000 +0:30 Constant: +0:30 4 (const int) +0:30 direct index (temp float) +0:30 'l_array' (temp 3-element array of float) +0:30 Constant: +0:30 1 (const int) +0:30 f: direct index for structure (temp float) +0:30 direct index (temp structure{temp int i, temp float f}) +0:30 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) +0:30 1 (const int) +0:30 2.000000 +0:30 3 (const int) +0:30 4.000000 +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 indirect index (temp float) +0:30 'g_array' (uniform 5-element array of float) +0:30 1.000000 +0:30 2.000000 +0:30 3.000000 +0:30 4.000000 +0:30 5.000000 +0:30 'idx' (temp void) +0:? Linker Objects +0:? 'g_array' (uniform 5-element array of float) +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:? 5.000000 +0:? 'g_array_unused' (uniform 7-element array of float) +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:? 5.000000 +0:? 6.000000 +0:? 7.000000 +0:? 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) +0:? 1 (const int) +0:? 2.000000 +0:? 3 (const int) +0:? 4.000000 + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:26 Function Parameters: +0:26 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp 3-element array of float) +0:28 'l_array' (temp 3-element array of float) +0:28 Constant: +0:28 1.000000 +0:28 2.000000 +0:28 3.000000 +0:30 move second child to first child (temp 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (out structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Construct vec4 (temp 4-component vector of float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 direct index (temp float) +0:30 'g_array' (uniform 5-element array of float) +0:30 1.000000 +0:30 2.000000 +0:30 3.000000 +0:30 4.000000 +0:30 5.000000 +0:30 Constant: +0:30 0 (const int) +0:30 direct index (temp float) +0:30 'g_array' (uniform 5-element array of float) +0:30 1.000000 +0:30 2.000000 +0:30 3.000000 +0:30 4.000000 +0:30 5.000000 +0:30 Constant: +0:30 4 (const int) +0:30 direct index (temp float) +0:30 'l_array' (temp 3-element array of float) +0:30 Constant: +0:30 1 (const int) +0:30 f: direct index for structure (temp float) +0:30 direct index (temp structure{temp int i, temp float f}) +0:30 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) +0:30 1 (const int) +0:30 2.000000 +0:30 3 (const int) +0:30 4.000000 +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 indirect index (temp float) +0:30 'g_array' (uniform 5-element array of float) +0:30 1.000000 +0:30 2.000000 +0:30 3.000000 +0:30 4.000000 +0:30 5.000000 +0:30 'idx' (temp void) +0:? Linker Objects +0:? 'g_array' (uniform 5-element array of float) +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:? 5.000000 +0:? 'g_array_unused' (uniform 7-element array of float) +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:? 5.000000 +0:? 6.000000 +0:? 7.000000 +0:? 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) +0:? 1 (const int) +0:? 2.000000 +0:? 3 (const int) +0:? 4.000000 + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 62 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "PixelShaderFunction" + ExecutionMode 4 OriginUpperLeft + Name 4 "PixelShaderFunction" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "color" + Name 12 "main(struct-PS_OUTPUT-vf41;" + Name 11 "ps_output" + Name 18 "l_array" + Name 28 "g_array" + Name 41 "mystruct" + MemberName 41(mystruct) 0 "i" + MemberName 41(mystruct) 1 "f" + Name 45 "g_mystruct" + Name 50 "idx" + Name 61 "g_array_unused" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8(PS_OUTPUT): TypeStruct 7(fvec4) + 9: TypePointer Function 8(PS_OUTPUT) + 10: TypeFunction 2 9(ptr) + 14: TypeInt 32 0 + 15: 14(int) Constant 3 + 16: TypeArray 6(float) 15 + 17: TypePointer Function 16 + 19: 6(float) Constant 1065353216 + 20: 6(float) Constant 1073741824 + 21: 6(float) Constant 1077936128 + 22: 16 ConstantComposite 19 20 21 + 23: TypeInt 32 1 + 24: 23(int) Constant 0 + 25: 14(int) Constant 5 + 26: TypeArray 6(float) 25 + 27: TypePointer UniformConstant 26 + 28(g_array): 27(ptr) Variable UniformConstant + 29: TypePointer UniformConstant 6(float) + 32: 23(int) Constant 4 + 36: 23(int) Constant 1 + 37: TypePointer Function 6(float) + 41(mystruct): TypeStruct 23(int) 6(float) + 42: 14(int) Constant 2 + 43: TypeArray 41(mystruct) 42 + 44: TypePointer UniformConstant 43 + 45(g_mystruct): 44(ptr) Variable UniformConstant + 49: TypePointer Function 2 + 56: TypePointer Function 7(fvec4) + 58: 14(int) Constant 7 + 59: TypeArray 6(float) 58 + 60: TypePointer UniformConstant 59 +61(g_array_unused): 60(ptr) Variable UniformConstant +4(PixelShaderFunction): 2 Function None 3 + 5: Label + FunctionEnd +12(main(struct-PS_OUTPUT-vf41;): 2 Function None 10 + 11(ps_output): 9(ptr) FunctionParameter + 13: Label + 18(l_array): 17(ptr) Variable Function + 50(idx): 49(ptr) Variable Function + Store 18(l_array) 22 + 30: 29(ptr) AccessChain 28(g_array) 24 + 31: 6(float) Load 30 + 33: 29(ptr) AccessChain 28(g_array) 32 + 34: 6(float) Load 33 + 35: 6(float) FAdd 31 34 + 38: 37(ptr) AccessChain 18(l_array) 36 + 39: 6(float) Load 38 + 40: 6(float) FAdd 35 39 + 46: 29(ptr) AccessChain 45(g_mystruct) 24 36 + 47: 6(float) Load 46 + 48: 6(float) FAdd 40 47 + 51: 2 Load 50(idx) + 52: 29(ptr) AccessChain 28(g_array) 51 + 53: 6(float) Load 52 + 54: 6(float) FAdd 48 53 + 55: 7(fvec4) CompositeConstruct 54 54 54 54 + 57: 56(ptr) AccessChain 11(ps_output) 24 + Store 57 55 + Return + FunctionEnd diff --git a/Test/hlsl.array.implicit-size.frag b/Test/hlsl.array.implicit-size.frag new file mode 100644 index 00000000..11f93b5e --- /dev/null +++ b/Test/hlsl.array.implicit-size.frag @@ -0,0 +1,31 @@ + +// implicit sized array +uniform float g_array [ ] = { 1, 2, 3, 4, 5 }; + +// Unused implicit sized array +uniform float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 }; + +// Test implicit size arrayed structs +uniform struct mystruct { + int i; + float f; +} g_mystruct[] = { + { 1, 2.0 }, + { 3, 4.0 }, +}; + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +// INVALID: implicit size requires an initializer expression. +// uniform float bad[]; + +// INVALID: function parameters cannot be implicitly sized +// void BadFunction(int a[]) { } + +void main(out PS_OUTPUT ps_output) +{ + // implicit sized local array + float l_array[] = { 1, 2, 3 }; + + ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx]; +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 55450a74..2e191ba2 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -81,6 +81,7 @@ INSTANTIATE_TEST_CASE_P( ToSpirv, HlslCompileTest, ::testing::ValuesIn(std::vector{ {"hlsl.array.frag", "PixelShaderFunction"}, + {"hlsl.array.implicit-size.frag", "PixelShaderFunction"}, {"hlsl.assoc.frag", "PixelShaderFunction"}, {"hlsl.attribute.frag", "PixelShaderFunction"}, {"hlsl.buffer.frag", "PixelShaderFunction"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 30d42f10..48698e5a 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -1515,8 +1515,14 @@ bool HlslGrammar::acceptParameterDeclaration(TFunction& function) // array_specifier TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); - if (arraySizes) + if (arraySizes) { + if (arraySizes->isImplicit()) { + parseContext.error(token.loc, "function parameter array cannot be implicitly sized", "", ""); + return false; + } + type->newArraySizes(*arraySizes); + } // post_decls acceptPostDecls(type->getQualifier()); @@ -2601,6 +2607,7 @@ bool HlslGrammar::acceptDefaultLabel(TIntermNode*& statement) // array_specifier // : LEFT_BRACKET integer_expression RGHT_BRACKET post_decls // optional +// : LEFT_BRACKET RGHT_BRACKET post_decls // optional // void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes) { @@ -2610,21 +2617,25 @@ void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes) return; TSourceLoc loc = token.loc; - TIntermTyped* sizeExpr; - if (! acceptAssignmentExpression(sizeExpr)) { - expected("array-sizing expression"); - return; - } + TIntermTyped* sizeExpr = nullptr; + + // Array sizing expression is optional. If ommitted, array is implicitly sized. + const bool hasArraySize = acceptAssignmentExpression(sizeExpr); if (! acceptTokenClass(EHTokRightBracket)) { expected("]"); return; } - TArraySize arraySize; - parseContext.arraySizeCheck(loc, sizeExpr, arraySize); arraySizes = new TArraySizes; - arraySizes->addInnerSize(arraySize); + + if (hasArraySize) { + TArraySize arraySize; + parseContext.arraySizeCheck(loc, sizeExpr, arraySize); + arraySizes->addInnerSize(arraySize); + } else { + arraySizes->addInnerSize(); // implicitly sized + } } // post_decls From e82061de0838e759403b8eb9a178c6d375934ca6 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 27 Sep 2016 14:38:57 -0600 Subject: [PATCH 013/130] HLSL: Rationalize combination of type arrayness and name arrayness. --- glslang/Include/revision.h | 4 +-- hlsl/hlslGrammar.cpp | 54 +++++++++++++++++++++++++------------- hlsl/hlslParseHelper.cpp | 28 +++----------------- hlsl/hlslParseHelper.h | 2 +- 4 files changed, 43 insertions(+), 45 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 811e161b..7806c77c 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1507" -#define GLSLANG_DATE "25-Sep-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1523" +#define GLSLANG_DATE "27-Sep-2016" diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 48698e5a..85c2c697 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -271,7 +271,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) // typedef bool typedefDecl = acceptTokenClass(EHTokTypedef); - TType type; + TType declaredType; // DX9 sampler declaration use a different syntax // DX9 shaders need to run through HLSL compiler (fxc) via a back compat mode, it isn't going to @@ -280,21 +280,21 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) // As such, the sampler keyword in D3D10+ turns into an automatic sampler type, and is commonly used // For that reason, this line is commented out - // if (acceptSamplerDeclarationDX9(type)) + // if (acceptSamplerDeclarationDX9(declaredType)) // return true; // fully_specified_type - if (! acceptFullySpecifiedType(type)) + if (! acceptFullySpecifiedType(declaredType)) return false; - if (type.getQualifier().storage == EvqTemporary && parseContext.symbolTable.atGlobalLevel()) { - if (type.getBasicType() == EbtSampler) { + if (declaredType.getQualifier().storage == EvqTemporary && parseContext.symbolTable.atGlobalLevel()) { + if (declaredType.getBasicType() == EbtSampler) { // Sampler/textures are uniform by default (if no explicit qualifier is present) in // HLSL. This line silently converts samplers *explicitly* declared static to uniform, // which is incorrect but harmless. - type.getQualifier().storage = EvqUniform; + declaredType.getQualifier().storage = EvqUniform; } else { - type.getQualifier().storage = EvqGlobal; + declaredType.getQualifier().storage = EvqGlobal; } } @@ -302,7 +302,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) HlslToken idToken; while (acceptIdentifier(idToken)) { // function_parameters - TFunction& function = *new TFunction(idToken.string, type); + TFunction& function = *new TFunction(idToken.string, declaredType); if (acceptFunctionParameters(function)) { // post_decls acceptPostDecls(function.getWritableType().getQualifier()); @@ -320,20 +320,38 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) parseContext.handleFunctionDeclarator(idToken.loc, function, true); } } else { - // a variable declaration + // A variable declaration. + // We can handle multiple variables per type declaration, so + // the number of types can expand when arrayness is different. + TType variableType; + variableType.shallowCopy(declaredType); - // array_specifier + // recognize array_specifier TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); + // Fix arrayness in the variableType + if (declaredType.isImplicitlySizedArray()) { + // Because "int[] a = int[2](...), b = int[3](...)" makes two arrays a and b + // of different sizes, for this case sharing the shallow copy of arrayness + // with the parseType oversubscribes it, so get a deep copy of the arrayness. + variableType.newArraySizes(declaredType.getArraySizes()); + } + if (arraySizes || variableType.isArray()) { + // In the most general case, arrayness is potentially coming both from the + // declared type and from the variable: "int[] a[];" or just one or the other. + // Merge it all to the variableType, so all arrayness is part of the variableType. + parseContext.arrayDimMerge(variableType, arraySizes); + } + // samplers accept immediate sampler state - if (type.getBasicType() == EbtSampler) { + if (variableType.getBasicType() == EbtSampler) { if (! acceptSamplerState()) return false; } // post_decls - acceptPostDecls(type.getQualifier()); + acceptPostDecls(variableType.getQualifier()); // EQUAL assignment_expression TIntermTyped* expressionNode = nullptr; @@ -347,16 +365,16 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) } if (typedefDecl) - parseContext.declareTypedef(idToken.loc, *idToken.string, type, arraySizes); - else if (type.getBasicType() == EbtBlock) - parseContext.declareBlock(idToken.loc, type, idToken.string); + parseContext.declareTypedef(idToken.loc, *idToken.string, variableType, arraySizes); + else if (variableType.getBasicType() == EbtBlock) + parseContext.declareBlock(idToken.loc, variableType, idToken.string); else { // Declare the variable and add any initializer code to the AST. // The top-level node is always made into an aggregate, as that's // historically how the AST has been. node = intermediate.growAggregate(node, - parseContext.declareVariable(idToken.loc, *idToken.string, type, - arraySizes, expressionNode), + parseContext.declareVariable(idToken.loc, *idToken.string, variableType, + expressionNode), idToken.loc); } } @@ -412,7 +430,7 @@ bool HlslGrammar::acceptControlDeclaration(TIntermNode*& node) return false; } - node = parseContext.declareVariable(idToken.loc, *idToken.string, type, 0, expressionNode); + node = parseContext.declareVariable(idToken.loc, *idToken.string, type, expressionNode); return true; } diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 4afbd924..34fd2025 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4160,11 +4160,6 @@ void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier TType type; type.deepCopy(parseType); - // Arrayness is potentially coming both from the type and from the - // variable: "int[] a[];" or just one or the other. - // Merge it all to the type, so all arrayness is part of the type. - arrayDimMerge(type, arraySizes); - TVariable* typeSymbol = new TVariable(&identifier, type, true); if (! symbolTable.insert(*typeSymbol)) error(loc, "name already defined", "typedef", identifier.c_str()); @@ -4181,7 +4176,7 @@ void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier // 'parseType' is the type part of the declaration (to the left) // 'arraySizes' is the arrayness tagged on the identifier (to the right) // -TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, const TType& parseType, TArraySizes* arraySizes, TIntermTyped* initializer) +TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, TType& type, TIntermTyped* initializer) { // TODO: things scoped within an annotation need their own name space; // haven't done that yet @@ -4189,18 +4184,9 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i return nullptr; // TODO: strings are not yet handled - if (parseType.getBasicType() == EbtString) + if (type.getBasicType() == EbtString) return nullptr; - TType type; - type.shallowCopy(parseType); - if (type.isImplicitlySizedArray()) { - // Because "int[] a = int[2](...), b = int[3](...)" makes two arrays a and b - // of different sizes, for this case sharing the shallow copy of arrayness - // with the parseType oversubscribes it, so get a deep copy of the arrayness. - type.newArraySizes(*parseType.getArraySizes()); - } - if (voidErrorCheck(loc, identifier, type.getBasicType())) return nullptr; @@ -4213,16 +4199,10 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i bool flattenVar = false; // Declare the variable - if (arraySizes || type.isArray()) { - // Arrayness is potentially coming both from the type and from the - // variable: "int[] a[];" or just one or the other. - // Merge it all to the type, so all arrayness is part of the type. - arrayDimMerge(type, arraySizes); // Safe if there are no arraySizes - + if (type.isArray()) { + // array case declareArray(loc, identifier, type, symbol, newDeclaration); - flattenVar = shouldFlatten(type); - if (flattenVar) flatten(loc, *symbol->getAsVariable()); } else { diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index b7d33237..7b7b95dc 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -140,7 +140,7 @@ public: const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn); void declareTypedef(const TSourceLoc&, TString& identifier, const TType&, TArraySizes* typeArray = 0); - TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, const TType&, TArraySizes* typeArray = 0, TIntermTyped* initializer = 0); + TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0); 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); From 6dbc0a7a33eac420c0b9ce3b6c53140fb13122a8 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 27 Sep 2016 19:13:05 -0600 Subject: [PATCH 014/130] Support a uniform block to hold global uniform variables. Used initially just by HLSL, for $Global. Could be an option for GLSL -> Vulkan. --- glslang/Include/revision.h | 2 +- .../MachineIndependent/ParseContextBase.cpp | 50 +++++++++++++++++ glslang/MachineIndependent/ParseHelper.h | 18 ++++++- hlsl/hlslGrammar.cpp | 53 ++++++++++--------- hlsl/hlslParseHelper.cpp | 29 +++++----- hlsl/hlslParseHelper.h | 5 +- 6 files changed, 117 insertions(+), 40 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 7806c77c..fb515df0 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1523" +#define GLSLANG_REVISION "Overload400-PrecQual.1524" #define GLSLANG_DATE "27-Sep-2016" diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 4c1d02a8..54715ce1 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -181,4 +181,54 @@ const TFunction* TParseContextBase::selectFunction( return incumbent; } +// +// Make the passed-in variable information become a member of the +// global uniform block. If this doesn't exist yet, make it. +// +void TParseContextBase::growGlobalUniformBlock(TSourceLoc& loc, TType& memberType, TString& memberName) +{ + // make the global block, if not yet made + if (globalUniformBlock == nullptr) { + TString& blockName = *NewPoolTString(getGlobalUniformBlockName()); + TQualifier blockQualifier; + blockQualifier.clear(); + blockQualifier.storage = EvqUniform; + TType blockType(new TTypeList, blockName, blockQualifier); + TString* instanceName = NewPoolTString(""); + globalUniformBlock = new TVariable(instanceName, blockType, true); + globalUniformBlockAdded = false; + } + + // add the requested member as a member to the block + TType* type = new TType; + type->shallowCopy(memberType); + type->setFieldName(memberName); + TTypeLoc typeLoc = {type, loc}; + globalUniformBlock->getType().getWritableStruct()->push_back(typeLoc); + globalUniformBlockChanged = true; +} + +// +// Insert into the symbol table the global uniform block created in +// growGlobalUniformBlock(). The variables added as members won't be +// found unless this is done. +// +bool TParseContextBase::insertGlobalUniformBlock() +{ + if (globalUniformBlock == nullptr) + return true; + + if (globalUniformBlockAdded) + return ! globalUniformBlockChanged; + + globalUniformBlockChanged = false; + globalUniformBlockAdded = symbolTable.insert(*globalUniformBlock); + if (globalUniformBlockAdded) { + intermediate.addSymbolLinkageNode(linkage, *globalUniformBlock); + finalizeGlobalUniformBlockLayout(*globalUniformBlock); + } + + return globalUniformBlockAdded; +} + } // end namespace glslang diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index aa92954b..b007ebbb 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -78,7 +78,8 @@ public: TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), symbolTable(symbolTable), - linkage(nullptr), scanContext(nullptr), ppContext(nullptr) { } + linkage(nullptr), scanContext(nullptr), ppContext(nullptr), + globalUniformBlock(nullptr) { } virtual ~TParseContextBase() { } virtual void setLimits(const TBuiltInResource&) = 0; @@ -126,6 +127,13 @@ public: TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile + // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) + // TODO: This could perhaps get its own object, but the current design doesn't work + // yet when new uniform variables are declared between function definitions, so + // this is pending getting a fully functional design. + virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName); + virtual bool insertGlobalUniformBlock(); + protected: TParseContextBase(TParseContextBase&); TParseContextBase& operator=(TParseContextBase&); @@ -147,6 +155,14 @@ protected: std::function, std::function, /* output */ bool& tie); + + // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) + TVariable* globalUniformBlock; // the actual block, inserted into the symbol table + bool globalUniformBlockAdded; // true once inserted into the symbol table + bool globalUniformBlockChanged; // true if members have changed + // override this to set the language-specific name + virtual const char* getGlobalUniformBlockName() { return ""; } + virtual void finalizeGlobalUniformBlockLayout(TVariable&) { } }; // diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 85c2c697..9652129c 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -287,17 +287,6 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) if (! acceptFullySpecifiedType(declaredType)) return false; - if (declaredType.getQualifier().storage == EvqTemporary && parseContext.symbolTable.atGlobalLevel()) { - if (declaredType.getBasicType() == EbtSampler) { - // Sampler/textures are uniform by default (if no explicit qualifier is present) in - // HLSL. This line silently converts samplers *explicitly* declared static to uniform, - // which is incorrect but harmless. - declaredType.getQualifier().storage = EvqUniform; - } else { - declaredType.getQualifier().storage = EvqGlobal; - } - } - // identifier HlslToken idToken; while (acceptIdentifier(idToken)) { @@ -320,7 +309,10 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) parseContext.handleFunctionDeclarator(idToken.loc, function, true); } } else { - // A variable declaration. + // A variable declaration. Fix the storage qualifier if it's a global. + if (declaredType.getQualifier().storage == EvqTemporary && parseContext.symbolTable.atGlobalLevel()) + declaredType.getQualifier().storage = EvqUniform; + // We can handle multiple variables per type declaration, so // the number of types can expand when arrayness is different. TType variableType; @@ -364,18 +356,29 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) } } - if (typedefDecl) - parseContext.declareTypedef(idToken.loc, *idToken.string, variableType, arraySizes); - else if (variableType.getBasicType() == EbtBlock) - parseContext.declareBlock(idToken.loc, variableType, idToken.string); - else { - // Declare the variable and add any initializer code to the AST. - // The top-level node is always made into an aggregate, as that's - // historically how the AST has been. - node = intermediate.growAggregate(node, - parseContext.declareVariable(idToken.loc, *idToken.string, variableType, - expressionNode), - idToken.loc); + // Hand off the actual declaration + + // TODO: things scoped within an annotation need their own name space; + // TODO: strings are not yet handled. + if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) { + if (typedefDecl) + parseContext.declareTypedef(idToken.loc, *idToken.string, variableType); + else if (variableType.getBasicType() == EbtBlock) + parseContext.declareBlock(idToken.loc, variableType, idToken.string); + else { + if (variableType.getQualifier().storage == EvqUniform && variableType.getBasicType() != EbtSampler) { + // this isn't really an individual variable, but a member of the $Global buffer + parseContext.growGlobalUniformBlock(idToken.loc, variableType, *idToken.string); + } else { + // Declare the variable and add any initializer code to the AST. + // The top-level node is always made into an aggregate, as that's + // historically how the AST has been. + node = intermediate.growAggregate(node, + parseContext.declareVariable(idToken.loc, *idToken.string, variableType, + expressionNode), + idToken.loc); + } + } } } @@ -473,7 +476,7 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier) do { switch (peek()) { case EHTokStatic: - // normal glslang default + qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; break; case EHTokExtern: // TODO: no meaning in glslang? diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 34fd2025..65f7aa26 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -957,6 +957,11 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l } else remapNonEntryPointIO(function); + // Insert the $Global constant buffer. + // TODO: this design fails if new members are declared between function definitions. + if (! insertGlobalUniformBlock()) + error(loc, "failed to insert the global constant buffer", "uniform", ""); + // // New symbol table scope for body of function plus its arguments // @@ -4178,15 +4183,6 @@ void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier // TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, TType& type, TIntermTyped* initializer) { - // TODO: things scoped within an annotation need their own name space; - // haven't done that yet - if (annotationNestingLevel > 0) - return nullptr; - - // TODO: strings are not yet handled - if (type.getBasicType() == EbtString) - return nullptr; - if (voidErrorCheck(loc, identifier, type.getBasicType())) return nullptr; @@ -4832,6 +4828,13 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS intermediate.addSymbolLinkageNode(linkage, variable); } +void HlslParseContext::finalizeGlobalUniformBlockLayout(TVariable& block) +{ + block.getWritableType().getQualifier().layoutPacking = ElpStd140; + block.getWritableType().getQualifier().layoutMatrix = ElmRowMajor; + fixBlockUniformOffsets(block.getType().getQualifier(), *block.getWritableType().getWritableStruct()); +} + // // "For a block, this process applies to the entire block, or until the first member // is reached that has a location layout qualifier. When a block member is declared with a location @@ -4912,7 +4915,7 @@ void HlslParseContext::fixBlockXfbOffsets(TQualifier& qualifier, TTypeList& type // Also, compute and save the total size of the block. For the block's size, arrayness // is not taken into account, as each element is backed by a separate buffer. // -void HlslParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typeList) +void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TTypeList& typeList) { if (! qualifier.isUniformOrBuffer()) return; @@ -4930,8 +4933,10 @@ void HlslParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& // modify just the children's view of matrix layout, if there is one for this member TLayoutMatrix subMatrixLayout = typeList[member].type->getQualifier().layoutMatrix; int dummyStride; - int memberAlignment = intermediate.getBaseAlignment(*typeList[member].type, memberSize, dummyStride, qualifier.layoutPacking == ElpStd140, - subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : qualifier.layoutMatrix == ElmRowMajor); + int memberAlignment = intermediate.getBaseAlignment(*typeList[member].type, memberSize, dummyStride, + qualifier.layoutPacking == ElpStd140, + subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor + : qualifier.layoutMatrix == ElmRowMajor); if (memberQualifier.hasOffset()) { // "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." diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 7b7b95dc..657858a6 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -51,6 +51,7 @@ public: void setLimits(const TBuiltInResource&); bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false); + virtual const char* getGlobalUniformBlockName() { return "$Global"; } void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); @@ -145,9 +146,10 @@ public: 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, TArraySizes* arraySizes = 0); + void finalizeGlobalUniformBlockLayout(TVariable& block); void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation); void fixBlockXfbOffsets(TQualifier&, TTypeList&); - void fixBlockUniformOffsets(TQualifier&, TTypeList&); + void fixBlockUniformOffsets(const TQualifier&, TTypeList&); void addQualifierToExisting(const TSourceLoc&, TQualifier, const TString& identifier); void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&); void updateStandaloneQualifierDefaults(const TSourceLoc&, const TPublicType&); @@ -160,6 +162,7 @@ public: void unnestLooping() { --loopNestingLevel; } void nestAnnotations() { ++annotationNestingLevel; } void unnestAnnotations() { --annotationNestingLevel; } + int getAnnotationNestingLevel() { return annotationNestingLevel; } void pushScope() { symbolTable.push(); } void popScope() { symbolTable.pop(0); } From 4e55988a47c1e5922434dc56b2f7a74d06cab1e5 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 27 Sep 2016 23:09:32 -0600 Subject: [PATCH 015/130] HLSL Tests: Tests for previous commit, to make it easier to see what's changing. --- Test/baseResults/hlsl.array.flatten.frag.out | 304 +-- Test/baseResults/hlsl.array.frag.out | 189 +- Test/baseResults/hlsl.assoc.frag.out | 4 +- Test/baseResults/hlsl.attribute.frag.out | 4 +- Test/baseResults/hlsl.buffer.frag.out | 4 +- .../hlsl.calculatelod.dx10.frag.out | 4 +- .../hlsl.calculatelodunclamped.dx10.frag.out | 4 +- Test/baseResults/hlsl.cast.frag.out | 4 +- Test/baseResults/hlsl.conditional.frag.out | 4 +- Test/baseResults/hlsl.constructexpr.frag.out | 4 +- Test/baseResults/hlsl.depthGreater.frag.out | 4 +- Test/baseResults/hlsl.depthLess.frag.out | 4 +- Test/baseResults/hlsl.discard.frag.out | 12 +- Test/baseResults/hlsl.doLoop.frag.out | 4 +- Test/baseResults/hlsl.entry-in.frag.out | 16 +- Test/baseResults/hlsl.entry-out.frag.out | 4 +- Test/baseResults/hlsl.float1.frag.out | 4 +- Test/baseResults/hlsl.float4.frag.out | 99 +- Test/baseResults/hlsl.forLoop.frag.out | 4 +- .../hlsl.gather.array.dx10.frag.out | 4 +- .../hlsl.gather.basic.dx10.frag.out | 4 +- .../hlsl.gather.basic.dx10.vert.out | 4 +- .../hlsl.gather.offset.dx10.frag.out | 4 +- .../hlsl.gather.offsetarray.dx10.frag.out | 4 +- .../hlsl.gatherRGBA.array.dx10.frag.out | 859 ++++--- .../hlsl.gatherRGBA.basic.dx10.frag.out | 895 ++++--- .../hlsl.gatherRGBA.offset.dx10.frag.out | 1732 +++++++++----- .../hlsl.gatherRGBA.offsetarray.dx10.frag.out | 1696 ++++++++----- .../hlsl.getdimensions.dx10.frag.out | 4 +- .../hlsl.getdimensions.dx10.vert.out | 4 +- .../hlsl.getsampleposition.dx10.frag.out | 4 +- Test/baseResults/hlsl.if.frag.out | 4 +- Test/baseResults/hlsl.init.frag.out | 4 +- Test/baseResults/hlsl.init2.frag.out | 12 +- Test/baseResults/hlsl.inoutquals.frag.out | 12 +- .../hlsl.intrinsics.barriers.comp.out | 4 +- Test/baseResults/hlsl.intrinsics.comp.out | 20 +- .../hlsl.intrinsics.double.frag.out | 4 +- .../hlsl.intrinsics.evalfns.frag.out | 4 +- .../hlsl.intrinsics.f1632.frag.out | 20 +- Test/baseResults/hlsl.intrinsics.frag.out | 52 +- Test/baseResults/hlsl.intrinsics.lit.frag.out | 4 +- .../hlsl.intrinsics.negative.comp.out | 20 +- .../hlsl.intrinsics.negative.frag.out | 32 +- .../hlsl.intrinsics.negative.vert.out | 32 +- Test/baseResults/hlsl.intrinsics.vert.out | 48 +- Test/baseResults/hlsl.layout.frag.out | 4 +- Test/baseResults/hlsl.load.2dms.dx10.frag.out | 489 ++-- .../baseResults/hlsl.load.array.dx10.frag.out | 536 +++-- .../baseResults/hlsl.load.basic.dx10.frag.out | 658 ++--- .../baseResults/hlsl.load.basic.dx10.vert.out | 635 +++-- .../hlsl.load.buffer.dx10.frag.out | 245 +- .../hlsl.load.offset.dx10.frag.out | 777 +++--- .../hlsl.load.offsetarray.dx10.frag.out | 621 +++-- Test/baseResults/hlsl.matType.frag.out | 89 +- Test/baseResults/hlsl.matrixindex.frag.out | 141 +- Test/baseResults/hlsl.max.frag.out | 4 +- Test/baseResults/hlsl.multiEntry.vert.out | 12 +- .../baseResults/hlsl.numericsuffixes.frag.out | 4 +- Test/baseResults/hlsl.overload.frag.out | 420 ++-- Test/baseResults/hlsl.pp.line.frag.out | 4 +- Test/baseResults/hlsl.precedence.frag.out | 4 +- Test/baseResults/hlsl.precedence2.frag.out | 4 +- Test/baseResults/hlsl.precise.frag.out | 8 +- Test/baseResults/hlsl.promotions.frag.out | 2112 +++++++++++------ Test/baseResults/hlsl.reflection.vert.out | 89 +- .../hlsl.sample.array.dx10.frag.out | 4 +- .../hlsl.sample.basic.dx10.frag.out | 4 +- .../hlsl.sample.offset.dx10.frag.out | 4 +- .../hlsl.sample.offsetarray.dx10.frag.out | 4 +- .../hlsl.samplebias.array.dx10.frag.out | 4 +- .../hlsl.samplebias.basic.dx10.frag.out | 4 +- .../hlsl.samplebias.offset.dx10.frag.out | 4 +- .../hlsl.samplebias.offsetarray.dx10.frag.out | 4 +- .../hlsl.samplecmp.array.dx10.frag.out | 4 +- .../hlsl.samplecmp.basic.dx10.frag.out | 4 +- .../hlsl.samplecmp.offset.dx10.frag.out | 4 +- .../hlsl.samplecmp.offsetarray.dx10.frag.out | 4 +- ...lsl.samplecmplevelzero.array.dx10.frag.out | 4 +- ...lsl.samplecmplevelzero.basic.dx10.frag.out | 4 +- ...sl.samplecmplevelzero.offset.dx10.frag.out | 4 +- ...mplecmplevelzero.offsetarray.dx10.frag.out | 4 +- .../hlsl.samplegrad.array.dx10.frag.out | 4 +- .../hlsl.samplegrad.basic.dx10.frag.out | 4 +- .../hlsl.samplegrad.basic.dx10.vert.out | 4 +- .../hlsl.samplegrad.offset.dx10.frag.out | 4 +- .../hlsl.samplegrad.offsetarray.dx10.frag.out | 4 +- .../hlsl.samplelevel.array.dx10.frag.out | 4 +- .../hlsl.samplelevel.basic.dx10.frag.out | 4 +- .../hlsl.samplelevel.basic.dx10.vert.out | 4 +- .../hlsl.samplelevel.offset.dx10.frag.out | 4 +- ...hlsl.samplelevel.offsetarray.dx10.frag.out | 4 +- Test/baseResults/hlsl.scope.frag.out | 4 +- Test/baseResults/hlsl.semicolons.frag.out | 12 +- Test/baseResults/hlsl.shapeConv.frag.out | 4 +- Test/baseResults/hlsl.sin.frag.out | 4 +- Test/baseResults/hlsl.string.frag.out | 4 +- Test/baseResults/hlsl.stringtoken.frag.out | 21 +- Test/baseResults/hlsl.struct.frag.out | 194 +- Test/baseResults/hlsl.structin.vert.out | 4 +- Test/baseResults/hlsl.switch.frag.out | 4 +- Test/baseResults/hlsl.swizzle.frag.out | 4 +- Test/baseResults/hlsl.templatetypes.frag.out | 4 +- Test/baseResults/hlsl.typedef.frag.out | 8 +- Test/baseResults/hlsl.void.frag.out | 20 +- Test/baseResults/hlsl.whileLoop.frag.out | 4 +- .../spv.register.autoassign.frag.out | 171 +- .../spv.register.noautoassign.frag.out | 170 +- Test/hlsl.array.flatten.frag | 2 +- Test/hlsl.float1.frag | 4 +- Test/hlsl.float4.frag | 6 +- Test/hlsl.init.frag | 20 +- Test/hlsl.intrinsics.comp | 2 +- Test/hlsl.intrinsics.frag | 2 +- Test/hlsl.intrinsics.negative.vert | 24 +- Test/hlsl.precise.frag | 2 +- Test/hlsl.struct.frag | 4 +- Test/hlsl.swizzle.frag | 2 +- glslang/Include/revision.h | 2 +- 119 files changed, 8321 insertions(+), 5503 deletions(-) diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index eedd698f..e7487598 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -2,7 +2,7 @@ hlsl.array.flatten.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:17 Function Definition: TestFn1( (global 4-component vector of float) +0:17 Function Definition: TestFn1( (temp 4-component vector of float) 0:17 Function Parameters: 0:? Sequence 0:18 Branch: Return with expression @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:? 'g_samp[1]' (uniform sampler) 0:18 Constant: 0:18 0.200000 -0:22 Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:22 Function Definition: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) 0:22 Function Parameters: 0:22 'l_tex' (in 3-element array of texture1D) 0:22 'l_samp' (in 3-element array of sampler) @@ -39,7 +39,7 @@ gl_FragCoord origin is upper left 0:26 3 (const int) 0:26 4 (const int) 0:26 5 (const int) -0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) 0:31 Function Parameters: 0:31 'ps_output' (out structure{temp 4-component vector of float color}) 0:? Sequence @@ -84,36 +84,17 @@ gl_FragCoord origin is upper left 0:34 2 (const int) 0:? 'g_tex[2]' (uniform texture1D) 0:35 Sequence -0:? Sequence -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 0 (const int) -0:? 'g_floats[0]' (uniform float) -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 1 (const int) -0:? 'g_floats[1]' (uniform float) -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 2 (const int) -0:? 'g_floats[2]' (uniform float) -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 3 (const int) -0:? 'g_floats[3]' (uniform float) +0:35 move second child to first child (temp 4-element array of float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 g_floats: direct index for structure (layout(offset=384 ) uniform 4-element array of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:35 Constant: +0:35 2 (const uint) 0:37 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:37 add (temp 4-component vector of float) -0:37 Function Call: TestFn1( (global 4-component vector of float) -0:37 Function Call: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:37 Function Call: TestFn1( (temp 4-component vector of float) +0:37 Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) 0:? Comma (temp 3-element array of texture1D) 0:? Sequence 0:? move second child to first child (temp texture1D) @@ -169,18 +150,7 @@ gl_FragCoord origin is upper left 0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) 0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) 0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) -0:? 'g_mats[0]' (uniform 3X3 matrix of float) -0:? 'g_mats[1]' (uniform 3X3 matrix of float) -0:? 'g_mats[2]' (uniform 3X3 matrix of float) -0:? 'g_mats[3]' (uniform 3X3 matrix of float) -0:? 'g_mats_explicit[0]' (layout(binding=10 ) uniform 3X3 matrix of float) -0:? 'g_mats_explicit[1]' (layout(binding=11 ) uniform 3X3 matrix of float) -0:? 'g_mats_explicit[2]' (layout(binding=12 ) uniform 3X3 matrix of float) -0:? 'g_mats_explicit[3]' (layout(binding=13 ) uniform 3X3 matrix of float) -0:? 'g_floats[0]' (uniform float) -0:? 'g_floats[1]' (uniform float) -0:? 'g_floats[2]' (uniform float) -0:? 'g_floats[3]' (uniform float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) 0:? 'not_flattened_a' (global 5-element array of int) 0:? 'color' (layout(location=0 ) out 4-component vector of float) @@ -191,7 +161,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:17 Function Definition: TestFn1( (global 4-component vector of float) +0:17 Function Definition: TestFn1( (temp 4-component vector of float) 0:17 Function Parameters: 0:? Sequence 0:18 Branch: Return with expression @@ -201,7 +171,7 @@ gl_FragCoord origin is upper left 0:? 'g_samp[1]' (uniform sampler) 0:18 Constant: 0:18 0.200000 -0:22 Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:22 Function Definition: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) 0:22 Function Parameters: 0:22 'l_tex' (in 3-element array of texture1D) 0:22 'l_samp' (in 3-element array of sampler) @@ -228,7 +198,7 @@ gl_FragCoord origin is upper left 0:26 3 (const int) 0:26 4 (const int) 0:26 5 (const int) -0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) 0:31 Function Parameters: 0:31 'ps_output' (out structure{temp 4-component vector of float color}) 0:? Sequence @@ -273,36 +243,17 @@ gl_FragCoord origin is upper left 0:34 2 (const int) 0:? 'g_tex[2]' (uniform texture1D) 0:35 Sequence -0:? Sequence -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 0 (const int) -0:? 'g_floats[0]' (uniform float) -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 1 (const int) -0:? 'g_floats[1]' (uniform float) -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 2 (const int) -0:? 'g_floats[2]' (uniform float) -0:35 move second child to first child (temp float) -0:35 direct index (temp float) -0:35 'local_float_array' (temp 4-element array of float) -0:35 Constant: -0:35 3 (const int) -0:? 'g_floats[3]' (uniform float) +0:35 move second child to first child (temp 4-element array of float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 g_floats: direct index for structure (layout(offset=384 ) uniform 4-element array of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:35 Constant: +0:35 2 (const uint) 0:37 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:37 add (temp 4-component vector of float) -0:37 Function Call: TestFn1( (global 4-component vector of float) -0:37 Function Call: TestFn2(t11[3];p1[3]; (global 4-component vector of float) +0:37 Function Call: TestFn1( (temp 4-component vector of float) +0:37 Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) 0:? Comma (temp 3-element array of texture1D) 0:? Sequence 0:? move second child to first child (temp texture1D) @@ -358,30 +309,19 @@ gl_FragCoord origin is upper left 0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) 0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) 0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) -0:? 'g_mats[0]' (uniform 3X3 matrix of float) -0:? 'g_mats[1]' (uniform 3X3 matrix of float) -0:? 'g_mats[2]' (uniform 3X3 matrix of float) -0:? 'g_mats[3]' (uniform 3X3 matrix of float) -0:? 'g_mats_explicit[0]' (layout(binding=10 ) uniform 3X3 matrix of float) -0:? 'g_mats_explicit[1]' (layout(binding=11 ) uniform 3X3 matrix of float) -0:? 'g_mats_explicit[2]' (layout(binding=12 ) uniform 3X3 matrix of float) -0:? 'g_mats_explicit[3]' (layout(binding=13 ) uniform 3X3 matrix of float) -0:? 'g_floats[0]' (uniform float) -0:? 'g_floats[1]' (uniform float) -0:? 'g_floats[2]' (uniform float) -0:? 'g_floats[3]' (uniform float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) 0:? 'not_flattened_a' (global 5-element array of int) 0:? 'color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 128 +// Id's are bound by 123 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 93 + EntryPoint Fragment 4 "main" 99 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "TestFn1(" @@ -398,50 +338,51 @@ gl_FragCoord origin is upper left Name 66 "g_tex[0]" Name 71 "g_tex[2]" Name 77 "local_float_array" - Name 79 "g_floats[0]" - Name 83 "g_floats[1]" - Name 86 "g_floats[2]" - Name 89 "g_floats[3]" - Name 93 "color" - Name 95 "aggShadow" - Name 102 "aggShadow" - Name 111 "g_tex_explicit[0]" - Name 112 "g_tex_explicit[1]" - Name 113 "g_tex_explicit[2]" - Name 114 "g_samp_explicit[0]" - Name 115 "g_samp_explicit[1]" - Name 116 "g_samp_explicit[2]" - Name 120 "g_mats[0]" - Name 121 "g_mats[1]" - Name 122 "g_mats[2]" - Name 123 "g_mats[3]" - Name 124 "g_mats_explicit[0]" - Name 125 "g_mats_explicit[1]" - Name 126 "g_mats_explicit[2]" - Name 127 "g_mats_explicit[3]" + Name 83 "$Global" + MemberName 83($Global) 0 "g_mats" + MemberName 83($Global) 1 "g_mats_explicit" + MemberName 83($Global) 2 "g_floats" + Name 85 "" + Name 99 "color" + Name 101 "aggShadow" + Name 108 "aggShadow" + Name 117 "g_tex_explicit[0]" + Name 118 "g_tex_explicit[1]" + Name 119 "g_tex_explicit[2]" + Name 120 "g_samp_explicit[0]" + Name 121 "g_samp_explicit[1]" + Name 122 "g_samp_explicit[2]" Decorate 36(g_tex[1]) DescriptorSet 0 Decorate 39(g_samp[1]) DescriptorSet 0 Decorate 57(g_samp[0]) DescriptorSet 0 Decorate 62(g_samp[2]) DescriptorSet 0 Decorate 66(g_tex[0]) DescriptorSet 0 Decorate 71(g_tex[2]) DescriptorSet 0 - Decorate 93(color) Location 0 - Decorate 111(g_tex_explicit[0]) DescriptorSet 0 - Decorate 111(g_tex_explicit[0]) Binding 1 - Decorate 112(g_tex_explicit[1]) DescriptorSet 0 - Decorate 112(g_tex_explicit[1]) Binding 2 - Decorate 113(g_tex_explicit[2]) DescriptorSet 0 - Decorate 113(g_tex_explicit[2]) Binding 3 - Decorate 114(g_samp_explicit[0]) DescriptorSet 0 - Decorate 114(g_samp_explicit[0]) Binding 5 - Decorate 115(g_samp_explicit[1]) DescriptorSet 0 - Decorate 115(g_samp_explicit[1]) Binding 6 - Decorate 116(g_samp_explicit[2]) DescriptorSet 0 - Decorate 116(g_samp_explicit[2]) Binding 7 - Decorate 124(g_mats_explicit[0]) Binding 10 - Decorate 125(g_mats_explicit[1]) Binding 11 - Decorate 126(g_mats_explicit[2]) Binding 12 - Decorate 127(g_mats_explicit[3]) Binding 13 + Decorate 80 ArrayStride 48 + Decorate 81 ArrayStride 48 + Decorate 82 ArrayStride 16 + MemberDecorate 83($Global) 0 RowMajor + MemberDecorate 83($Global) 0 Offset 0 + MemberDecorate 83($Global) 0 MatrixStride 16 + MemberDecorate 83($Global) 1 RowMajor + MemberDecorate 83($Global) 1 Offset 192 + MemberDecorate 83($Global) 1 MatrixStride 16 + MemberDecorate 83($Global) 2 Offset 384 + Decorate 83($Global) Block + Decorate 85 DescriptorSet 0 + Decorate 99(color) Location 0 + Decorate 117(g_tex_explicit[0]) DescriptorSet 0 + Decorate 117(g_tex_explicit[0]) Binding 1 + Decorate 118(g_tex_explicit[1]) DescriptorSet 0 + Decorate 118(g_tex_explicit[1]) Binding 2 + Decorate 119(g_tex_explicit[2]) DescriptorSet 0 + Decorate 119(g_tex_explicit[2]) Binding 3 + Decorate 120(g_samp_explicit[0]) DescriptorSet 0 + Decorate 120(g_samp_explicit[0]) Binding 5 + Decorate 121(g_samp_explicit[1]) DescriptorSet 0 + Decorate 121(g_samp_explicit[1]) Binding 6 + Decorate 122(g_samp_explicit[2]) DescriptorSet 0 + Decorate 122(g_samp_explicit[2]) Binding 7 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -483,33 +424,26 @@ gl_FragCoord origin is upper left 74: 12(int) Constant 4 75: TypeArray 6(float) 74 76: TypePointer Function 75 - 78: TypePointer UniformConstant 6(float) - 79(g_floats[0]): 78(ptr) Variable UniformConstant - 81: TypePointer Function 6(float) - 83(g_floats[1]): 78(ptr) Variable UniformConstant - 86(g_floats[2]): 78(ptr) Variable UniformConstant - 89(g_floats[3]): 78(ptr) Variable UniformConstant - 92: TypePointer Output 7(fvec4) - 93(color): 92(ptr) Variable Output - 95(aggShadow): 15(ptr) Variable UniformConstant - 102(aggShadow): 18(ptr) Variable UniformConstant -111(g_tex_explicit[0]): 35(ptr) Variable UniformConstant -112(g_tex_explicit[1]): 35(ptr) Variable UniformConstant -113(g_tex_explicit[2]): 35(ptr) Variable UniformConstant -114(g_samp_explicit[0]): 38(ptr) Variable UniformConstant -115(g_samp_explicit[1]): 38(ptr) Variable UniformConstant -116(g_samp_explicit[2]): 38(ptr) Variable UniformConstant - 117: TypeVector 6(float) 3 - 118: TypeMatrix 117(fvec3) 3 - 119: TypePointer UniformConstant 118 - 120(g_mats[0]): 119(ptr) Variable UniformConstant - 121(g_mats[1]): 119(ptr) Variable UniformConstant - 122(g_mats[2]): 119(ptr) Variable UniformConstant - 123(g_mats[3]): 119(ptr) Variable UniformConstant -124(g_mats_explicit[0]): 119(ptr) Variable UniformConstant -125(g_mats_explicit[1]): 119(ptr) Variable UniformConstant -126(g_mats_explicit[2]): 119(ptr) Variable UniformConstant -127(g_mats_explicit[3]): 119(ptr) Variable UniformConstant + 78: TypeVector 6(float) 3 + 79: TypeMatrix 78(fvec3) 3 + 80: TypeArray 79 74 + 81: TypeArray 79 74 + 82: TypeArray 6(float) 74 + 83($Global): TypeStruct 80 81 82 + 84: TypePointer Uniform 83($Global) + 85: 84(ptr) Variable Uniform + 86: TypePointer Uniform 82 + 90: TypePointer Function 6(float) + 98: TypePointer Output 7(fvec4) + 99(color): 98(ptr) Variable Output + 101(aggShadow): 15(ptr) Variable UniformConstant + 108(aggShadow): 18(ptr) Variable UniformConstant +117(g_tex_explicit[0]): 35(ptr) Variable UniformConstant +118(g_tex_explicit[1]): 35(ptr) Variable UniformConstant +119(g_tex_explicit[2]): 35(ptr) Variable UniformConstant +120(g_samp_explicit[0]): 38(ptr) Variable UniformConstant +121(g_samp_explicit[1]): 38(ptr) Variable UniformConstant +122(g_samp_explicit[2]): 38(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 77(local_float_array): 76(ptr) Variable Function @@ -532,40 +466,42 @@ gl_FragCoord origin is upper left 72: 11 Load 71(g_tex[2]) 73: 35(ptr) AccessChain 65(local_texture_array) 30 Store 73 72 - 80: 6(float) Load 79(g_floats[0]) - 82: 81(ptr) AccessChain 77(local_float_array) 56 - Store 82 80 - 84: 6(float) Load 83(g_floats[1]) - 85: 81(ptr) AccessChain 77(local_float_array) 29 - Store 85 84 - 87: 6(float) Load 86(g_floats[2]) - 88: 81(ptr) AccessChain 77(local_float_array) 30 - Store 88 87 - 90: 6(float) Load 89(g_floats[3]) - 91: 81(ptr) AccessChain 77(local_float_array) 31 - Store 91 90 - 94: 7(fvec4) FunctionCall 9(TestFn1() - 96: 11 Load 66(g_tex[0]) - 97: 35(ptr) AccessChain 95(aggShadow) 56 + 87: 86(ptr) AccessChain 85 30 + 88: 82 Load 87 + 89: 6(float) CompositeExtract 88 0 + 91: 90(ptr) AccessChain 77(local_float_array) 56 + Store 91 89 + 92: 6(float) CompositeExtract 88 1 + 93: 90(ptr) AccessChain 77(local_float_array) 29 + Store 93 92 + 94: 6(float) CompositeExtract 88 2 + 95: 90(ptr) AccessChain 77(local_float_array) 30 + Store 95 94 + 96: 6(float) CompositeExtract 88 3 + 97: 90(ptr) AccessChain 77(local_float_array) 31 Store 97 96 - 98: 11 Load 36(g_tex[1]) - 99: 35(ptr) AccessChain 95(aggShadow) 29 - Store 99 98 - 100: 11 Load 71(g_tex[2]) - 101: 35(ptr) AccessChain 95(aggShadow) 30 - Store 101 100 - 103: 16 Load 57(g_samp[0]) - 104: 38(ptr) AccessChain 102(aggShadow) 56 - Store 104 103 - 105: 16 Load 39(g_samp[1]) - 106: 38(ptr) AccessChain 102(aggShadow) 29 - Store 106 105 - 107: 16 Load 62(g_samp[2]) - 108: 38(ptr) AccessChain 102(aggShadow) 30 - Store 108 107 - 109: 7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 95(aggShadow) 102(aggShadow) - 110: 7(fvec4) FAdd 94 109 - Store 93(color) 110 + 100: 7(fvec4) FunctionCall 9(TestFn1() + 102: 11 Load 66(g_tex[0]) + 103: 35(ptr) AccessChain 101(aggShadow) 56 + Store 103 102 + 104: 11 Load 36(g_tex[1]) + 105: 35(ptr) AccessChain 101(aggShadow) 29 + Store 105 104 + 106: 11 Load 71(g_tex[2]) + 107: 35(ptr) AccessChain 101(aggShadow) 30 + Store 107 106 + 109: 16 Load 57(g_samp[0]) + 110: 38(ptr) AccessChain 108(aggShadow) 56 + Store 110 109 + 111: 16 Load 39(g_samp[1]) + 112: 38(ptr) AccessChain 108(aggShadow) 29 + Store 112 111 + 113: 16 Load 62(g_samp[2]) + 114: 38(ptr) AccessChain 108(aggShadow) 30 + Store 114 113 + 115: 7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 101(aggShadow) 108(aggShadow) + 116: 7(fvec4) FAdd 100 115 + Store 99(color) 116 Return FunctionEnd 9(TestFn1(): 7(fvec4) Function None 8 diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out index 359f62f8..00aedb3d 100755 --- a/Test/baseResults/hlsl.array.frag.out +++ b/Test/baseResults/hlsl.array.frag.out @@ -2,7 +2,7 @@ hlsl.array.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float) +0:8 Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float) 0:8 Function Parameters: 0:8 'i' (layout(location=0 ) in int) 0:8 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) @@ -16,12 +16,18 @@ gl_FragCoord origin is upper left 0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float) -0:10 direct index (temp 4-component vector of float) -0:10 'a' (global 4-element array of 4-component vector of float) +0:10 direct index (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) 0:10 Constant: 0:10 1 (const int) -0:10 indirect index (temp 4-component vector of float) -0:10 'a' (global 4-element array of 4-component vector of float) +0:10 indirect index (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) 0:10 'i' (layout(location=0 ) in int) 0:10 direct index (layout(location=1 ) temp 4-component vector of float) 0:10 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) @@ -39,17 +45,19 @@ gl_FragCoord origin is upper left 0:10 'i' (layout(location=0 ) in int) 0:10 indirect index (temp 4-component vector of float) 0:10 m: direct index for structure (temp 7-element array of 4-component vector of float) -0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m}) -0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m}) +0:10 indirect index (layout(offset=64 ) temp structure{temp 7-element array of 4-component vector of float m}) +0:10 s: direct index for structure (layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m}) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 1 (const uint) 0:10 'i' (layout(location=0 ) in int) 0:10 Constant: 0:10 0 (const int) 0:10 'i' (layout(location=0 ) in int) 0:10 Branch: Return 0:? Linker Objects -0:? 'a' (global 4-element array of 4-component vector of float) -0:? 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) 0:? 'i' (layout(location=0 ) in int) 0:? 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) @@ -60,7 +68,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float) +0:8 Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float) 0:8 Function Parameters: 0:8 'i' (layout(location=0 ) in int) 0:8 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) @@ -74,12 +82,18 @@ gl_FragCoord origin is upper left 0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float) 0:10 add (temp 4-component vector of float) -0:10 direct index (temp 4-component vector of float) -0:10 'a' (global 4-element array of 4-component vector of float) +0:10 direct index (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) 0:10 Constant: 0:10 1 (const int) -0:10 indirect index (temp 4-component vector of float) -0:10 'a' (global 4-element array of 4-component vector of float) +0:10 indirect index (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) 0:10 'i' (layout(location=0 ) in int) 0:10 direct index (layout(location=1 ) temp 4-component vector of float) 0:10 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) @@ -97,41 +111,53 @@ gl_FragCoord origin is upper left 0:10 'i' (layout(location=0 ) in int) 0:10 indirect index (temp 4-component vector of float) 0:10 m: direct index for structure (temp 7-element array of 4-component vector of float) -0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m}) -0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m}) +0:10 indirect index (layout(offset=64 ) temp structure{temp 7-element array of 4-component vector of float m}) +0:10 s: direct index for structure (layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m}) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 1 (const uint) 0:10 'i' (layout(location=0 ) in int) 0:10 Constant: 0:10 0 (const int) 0:10 'i' (layout(location=0 ) in int) 0:10 Branch: Return 0:? Linker Objects -0:? 'a' (global 4-element array of 4-component vector of float) -0:? 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) 0:? 'i' (layout(location=0 ) in int) 0:? 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 66 +// Id's are bound by 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 9 21 29 + EntryPoint Fragment 4 "PixelShaderFunction" 9 28 36 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 9 "@entryPointOutput" - Name 14 "a" - Name 21 "i" - Name 29 "input" - Name 42 "b" - Name 54 "" - MemberName 54 0 "m" - Name 58 "s" + Name 15 "" + MemberName 15 0 "m" + Name 18 "$Global" + MemberName 18($Global) 0 "a" + MemberName 18($Global) 1 "s" + Name 20 "" + Name 28 "i" + Name 36 "input" + Name 49 "b" Decorate 9(@entryPointOutput) Location 0 - Decorate 21(i) Location 0 - Decorate 29(input) Location 1 + Decorate 12 ArrayStride 16 + Decorate 14 ArrayStride 16 + MemberDecorate 15 0 Offset 0 + Decorate 17 ArrayStride 112 + MemberDecorate 18($Global) 0 Offset 0 + MemberDecorate 18($Global) 1 Offset 64 + Decorate 18($Global) Block + Decorate 20 DescriptorSet 0 + Decorate 28(i) Location 0 + Decorate 36(input) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -141,60 +167,59 @@ gl_FragCoord origin is upper left 10: TypeInt 32 0 11: 10(int) Constant 4 12: TypeArray 7(fvec4) 11 - 13: TypePointer Private 12 - 14(a): 13(ptr) Variable Private - 15: TypeInt 32 1 - 16: 15(int) Constant 1 - 17: TypePointer Private 7(fvec4) - 20: TypePointer Input 15(int) - 21(i): 20(ptr) Variable Input - 26: 10(int) Constant 3 - 27: TypeArray 7(fvec4) 26 - 28: TypePointer Input 27 - 29(input): 28(ptr) Variable Input - 30: 15(int) Constant 2 - 31: TypePointer Input 7(fvec4) - 39: 10(int) Constant 10 - 40: TypeArray 7(fvec4) 39 - 41: TypePointer Function 40 - 43: 15(int) Constant 5 - 44: TypePointer Function 7(fvec4) - 52: 10(int) Constant 7 - 53: TypeArray 7(fvec4) 52 - 54: TypeStruct 53 - 55: 10(int) Constant 11 - 56: TypeArray 54(struct) 55 - 57: TypePointer Private 56 - 58(s): 57(ptr) Variable Private - 60: 15(int) Constant 0 + 13: 10(int) Constant 7 + 14: TypeArray 7(fvec4) 13 + 15: TypeStruct 14 + 16: 10(int) Constant 11 + 17: TypeArray 15(struct) 16 + 18($Global): TypeStruct 12 17 + 19: TypePointer Uniform 18($Global) + 20: 19(ptr) Variable Uniform + 21: TypeInt 32 1 + 22: 21(int) Constant 0 + 23: 21(int) Constant 1 + 24: TypePointer Uniform 7(fvec4) + 27: TypePointer Input 21(int) + 28(i): 27(ptr) Variable Input + 33: 10(int) Constant 3 + 34: TypeArray 7(fvec4) 33 + 35: TypePointer Input 34 + 36(input): 35(ptr) Variable Input + 37: 21(int) Constant 2 + 38: TypePointer Input 7(fvec4) + 46: 10(int) Constant 10 + 47: TypeArray 7(fvec4) 46 + 48: TypePointer Function 47 + 50: 21(int) Constant 5 + 51: TypePointer Function 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label - 42(b): 41(ptr) Variable Function - 18: 17(ptr) AccessChain 14(a) 16 - 19: 7(fvec4) Load 18 - 22: 15(int) Load 21(i) - 23: 17(ptr) AccessChain 14(a) 22 - 24: 7(fvec4) Load 23 - 25: 7(fvec4) FAdd 19 24 - 32: 31(ptr) AccessChain 29(input) 30 - 33: 7(fvec4) Load 32 - 34: 7(fvec4) FAdd 25 33 - 35: 15(int) Load 21(i) - 36: 31(ptr) AccessChain 29(input) 35 - 37: 7(fvec4) Load 36 - 38: 7(fvec4) FAdd 34 37 - 45: 44(ptr) AccessChain 42(b) 43 - 46: 7(fvec4) Load 45 - 47: 7(fvec4) FAdd 38 46 - 48: 15(int) Load 21(i) - 49: 44(ptr) AccessChain 42(b) 48 - 50: 7(fvec4) Load 49 - 51: 7(fvec4) FAdd 47 50 - 59: 15(int) Load 21(i) - 61: 15(int) Load 21(i) - 62: 17(ptr) AccessChain 58(s) 59 60 61 - 63: 7(fvec4) Load 62 - 64: 7(fvec4) FAdd 51 63 - Store 9(@entryPointOutput) 64 + 49(b): 48(ptr) Variable Function + 25: 24(ptr) AccessChain 20 22 23 + 26: 7(fvec4) Load 25 + 29: 21(int) Load 28(i) + 30: 24(ptr) AccessChain 20 22 29 + 31: 7(fvec4) Load 30 + 32: 7(fvec4) FAdd 26 31 + 39: 38(ptr) AccessChain 36(input) 37 + 40: 7(fvec4) Load 39 + 41: 7(fvec4) FAdd 32 40 + 42: 21(int) Load 28(i) + 43: 38(ptr) AccessChain 36(input) 42 + 44: 7(fvec4) Load 43 + 45: 7(fvec4) FAdd 41 44 + 52: 51(ptr) AccessChain 49(b) 50 + 53: 7(fvec4) Load 52 + 54: 7(fvec4) FAdd 45 53 + 55: 21(int) Load 28(i) + 56: 51(ptr) AccessChain 49(b) 55 + 57: 7(fvec4) Load 56 + 58: 7(fvec4) FAdd 54 57 + 59: 21(int) Load 28(i) + 60: 21(int) Load 28(i) + 61: 24(ptr) AccessChain 20 23 59 22 60 + 62: 7(fvec4) Load 61 + 63: 7(fvec4) FAdd 58 62 + Store 9(@entryPointOutput) 63 Return FunctionEnd diff --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out index d54d4674..bcd16036 100755 --- a/Test/baseResults/hlsl.assoc.frag.out +++ b/Test/baseResults/hlsl.assoc.frag.out @@ -2,7 +2,7 @@ hlsl.assoc.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float) +0:8 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:8 Function Parameters: 0:8 'a1' (layout(location=0 ) in 4-component vector of float) 0:8 'a2' (layout(location=1 ) in 4-component vector of float) @@ -47,7 +47,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float) +0:8 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:8 Function Parameters: 0:8 'a1' (layout(location=0 ) in 4-component vector of float) 0:8 'a2' (layout(location=1 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out index 38421a88..a3ce657d 100755 --- a/Test/baseResults/hlsl.attribute.frag.out +++ b/Test/baseResults/hlsl.attribute.frag.out @@ -2,7 +2,7 @@ hlsl.attribute.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global void) +0:2 Function Definition: PixelShaderFunction(vf4; (temp void) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -21,7 +21,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global void) +0:2 Function Definition: PixelShaderFunction(vf4; (temp void) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 6d7b6105..97ea9a5b 100755 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -2,7 +2,7 @@ hlsl.buffer.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:30 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:30 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:30 Function Parameters: 0:30 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -46,7 +46,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:30 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:30 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:30 Function Parameters: 0:30 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index 68eee1a0..30af5920 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.calculatelod.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence @@ -176,7 +176,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out index 9370e14a..92d84f92 100644 --- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out @@ -14,7 +14,7 @@ ERROR: 9 compilation errors. No code generated. Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence @@ -188,7 +188,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence diff --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out index 3bef95f0..bf7183f2 100755 --- a/Test/baseResults/hlsl.cast.frag.out +++ b/Test/baseResults/hlsl.cast.frag.out @@ -2,7 +2,7 @@ hlsl.cast.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -33,7 +33,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out index f6c00fe6..32edbda7 100755 --- a/Test/baseResults/hlsl.conditional.frag.out +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -2,7 +2,7 @@ hlsl.conditional.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -119,7 +119,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out index 956e1bb0..1595a08d 100644 --- a/Test/baseResults/hlsl.constructexpr.frag.out +++ b/Test/baseResults/hlsl.constructexpr.frag.out @@ -2,7 +2,7 @@ hlsl.constructexpr.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:4 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:4 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:4 Function Parameters: 0:? Sequence 0:6 Constant: @@ -53,7 +53,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:4 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:4 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:4 Function Parameters: 0:? Sequence 0:6 Constant: diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out index 6a44a2f9..0b532460 100755 --- a/Test/baseResults/hlsl.depthGreater.frag.out +++ b/Test/baseResults/hlsl.depthGreater.frag.out @@ -3,7 +3,7 @@ Shader version: 450 gl_FragCoord origin is upper left using depth_greater 0:? Sequence -0:2 Function Definition: PixelShaderFunction(f1; (global void) +0:2 Function Definition: PixelShaderFunction(f1; (temp void) 0:2 Function Parameters: 0:2 'depth' (out float FragDepth) 0:? Sequence @@ -22,7 +22,7 @@ Shader version: 450 gl_FragCoord origin is upper left using depth_greater 0:? Sequence -0:2 Function Definition: PixelShaderFunction(f1; (global void) +0:2 Function Definition: PixelShaderFunction(f1; (temp void) 0:2 Function Parameters: 0:2 'depth' (out float FragDepth) 0:? Sequence diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out index b1307ce2..ec664e10 100755 --- a/Test/baseResults/hlsl.depthLess.frag.out +++ b/Test/baseResults/hlsl.depthLess.frag.out @@ -3,7 +3,7 @@ Shader version: 450 gl_FragCoord origin is upper left using depth_less 0:? Sequence -0:2 Function Definition: PixelShaderFunction( (global float FragDepth) +0:2 Function Definition: PixelShaderFunction( (temp float FragDepth) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence @@ -23,7 +23,7 @@ Shader version: 450 gl_FragCoord origin is upper left using depth_less 0:? Sequence -0:2 Function Definition: PixelShaderFunction( (global float FragDepth) +0:2 Function Definition: PixelShaderFunction( (temp float FragDepth) 0:2 Function Parameters: 0:? Sequence 0:3 Sequence diff --git a/Test/baseResults/hlsl.discard.frag.out b/Test/baseResults/hlsl.discard.frag.out index 9601c7d1..9b4f2c72 100755 --- a/Test/baseResults/hlsl.discard.frag.out +++ b/Test/baseResults/hlsl.discard.frag.out @@ -2,7 +2,7 @@ hlsl.discard.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: foo(f1; (global void) +0:2 Function Definition: foo(f1; (temp void) 0:2 Function Parameters: 0:2 'f' (in float) 0:? Sequence @@ -14,11 +14,11 @@ gl_FragCoord origin is upper left 0:3 1.000000 0:3 true case 0:4 Branch: Kill -0:8 Function Definition: PixelShaderFunction(vf4; (global void) +0:8 Function Definition: PixelShaderFunction(vf4; (temp void) 0:8 Function Parameters: 0:8 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:9 Function Call: foo(f1; (global void) +0:9 Function Call: foo(f1; (temp void) 0:9 direct index (temp float) 0:9 'input' (layout(location=0 ) in 4-component vector of float) 0:9 Constant: @@ -49,7 +49,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: foo(f1; (global void) +0:2 Function Definition: foo(f1; (temp void) 0:2 Function Parameters: 0:2 'f' (in float) 0:? Sequence @@ -61,11 +61,11 @@ gl_FragCoord origin is upper left 0:3 1.000000 0:3 true case 0:4 Branch: Kill -0:8 Function Definition: PixelShaderFunction(vf4; (global void) +0:8 Function Definition: PixelShaderFunction(vf4; (temp void) 0:8 Function Parameters: 0:8 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:9 Function Call: foo(f1; (global void) +0:9 Function Call: foo(f1; (temp void) 0:9 direct index (temp float) 0:9 'input' (layout(location=0 ) in 4-component vector of float) 0:9 Constant: diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out index 019f43d7..2d5a8fbf 100755 --- a/Test/baseResults/hlsl.doLoop.frag.out +++ b/Test/baseResults/hlsl.doLoop.frag.out @@ -2,7 +2,7 @@ hlsl.doLoop.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -38,7 +38,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out index 8572fa1c..b2ab8cbe 100755 --- a/Test/baseResults/hlsl.entry-in.frag.out +++ b/Test/baseResults/hlsl.entry-in.frag.out @@ -2,7 +2,7 @@ hlsl.entry-in.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; (global float) +0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; (temp float) 0:8 Function Parameters: 0:8 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) -0:13 Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (global 4-component vector of float) +0:13 Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float) 0:13 Function Parameters: 0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence @@ -48,12 +48,12 @@ gl_FragCoord origin is upper left 0:16 Sequence 0:16 move second child to first child (temp float) 0:16 'ret1' (temp float) -0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float) +0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) 0:16 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:17 Sequence 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) -0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float) +0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) 0:? Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:? move second child to first child (temp 2-component vector of float) @@ -100,7 +100,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; (global float) +0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; (temp float) 0:8 Function Parameters: 0:8 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence @@ -120,7 +120,7 @@ gl_FragCoord origin is upper left 0:9 1 (const int) 0:9 Constant: 0:9 0 (const int) -0:13 Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (global 4-component vector of float) +0:13 Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float) 0:13 Function Parameters: 0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence @@ -146,12 +146,12 @@ gl_FragCoord origin is upper left 0:16 Sequence 0:16 move second child to first child (temp float) 0:16 'ret1' (temp float) -0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float) +0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) 0:16 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:17 Sequence 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) -0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float) +0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) 0:? Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:? move second child to first child (temp 2-component vector of float) diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out index 81926dd1..d15741f7 100755 --- a/Test/baseResults/hlsl.entry-out.frag.out +++ b/Test/baseResults/hlsl.entry-out.frag.out @@ -2,7 +2,7 @@ hlsl.entry-out.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (global 4-component vector of float) +0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) 0:7 Function Parameters: 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 'out1' (layout(location=1 ) out 4-component vector of float) @@ -72,7 +72,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (global 4-component vector of float) +0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) 0:7 Function Parameters: 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 'out1' (layout(location=1 ) out 4-component vector of float) diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out index 313be0b5..83a243fc 100755 --- a/Test/baseResults/hlsl.float1.frag.out +++ b/Test/baseResults/hlsl.float1.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:2 'scalar' (global float) 0:2 Constant: 0:2 2.000000 -0:5 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float) +0:5 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:5 Function Parameters: 0:5 'inFloat1' (in 1-component vector of float) 0:5 'inScalar' (in float) @@ -46,7 +46,7 @@ gl_FragCoord origin is upper left 0:2 'scalar' (global float) 0:2 Constant: 0:2 2.000000 -0:5 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float) +0:5 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:5 Function Parameters: 0:5 'inFloat1' (in 1-component vector of float) 0:5 'inScalar' (in float) diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out index 85b3c9b4..6caac247 100755 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -5,28 +5,19 @@ WARNING: 0:6: 'register' : ignoring shader_profile Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 4-component vector of float) -0:1 'AmbientColor' (global 4-component vector of float) -0:? Constant: -0:? 1.000000 -0:? 0.500000 -0:? 0.000000 -0:? 1.000000 -0:9 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) +0:9 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' (in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) -0:10 'AmbientColor' (global 4-component vector of float) +0:10 AmbientColor: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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}) +0:10 Constant: +0:10 0 (const uint) 0:? Linker Objects -0:? 'AmbientColor' (global 4-component vector of float) -0:? 'ff1' (global bool Face) -0:? 'ff2' (layout(offset=4 ) global 4-component vector of float) -0:? 'ff3' (layout(binding=0 offset=4 ) global 4-component vector of float) -0:? 'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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}) Linked fragment stage: @@ -35,32 +26,23 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 4-component vector of float) -0:1 'AmbientColor' (global 4-component vector of float) -0:? Constant: -0:? 1.000000 -0:? 0.500000 -0:? 0.000000 -0:? 1.000000 -0:9 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) +0:9 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' (in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) -0:10 'AmbientColor' (global 4-component vector of float) +0:10 AmbientColor: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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}) +0:10 Constant: +0:10 0 (const uint) 0:? Linker Objects -0:? 'AmbientColor' (global 4-component vector of float) -0:? 'ff1' (global bool Face) -0:? 'ff2' (layout(offset=4 ) global 4-component vector of float) -0:? 'ff3' (layout(binding=0 offset=4 ) global 4-component vector of float) -0:? 'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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): 80001 -// Id's are bound by 30 +// Id's are bound by 26 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -70,44 +52,43 @@ gl_FragCoord origin is upper left Name 4 "PixelShaderFunction" Name 11 "ShaderFunction(vf4;" Name 10 "input" - Name 14 "AmbientColor" - Name 26 "ff1" - Name 27 "ff2" - Name 28 "ff3" - Name 29 "ff4" - Decorate 26(ff1) BuiltIn FrontFacing - Decorate 27(ff2) Offset 4 - Decorate 28(ff3) Offset 4 - Decorate 28(ff3) Binding 0 - Decorate 29(ff4) Offset 4 - Decorate 29(ff4) Binding 1 + Name 15 "$Global" + MemberName 15($Global) 0 "AmbientColor" + MemberName 15($Global) 1 "ff1" + MemberName 15($Global) 2 "ff2" + MemberName 15($Global) 3 "ff3" + MemberName 15($Global) 4 "ff4" + Name 17 "" + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 16 + MemberDecorate 15($Global) 1 BuiltIn FrontFacing + 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 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) - 13: TypePointer Private 7(fvec4) -14(AmbientColor): 13(ptr) Variable Private - 15: 6(float) Constant 1065353216 - 16: 6(float) Constant 1056964608 - 17: 6(float) Constant 0 - 18: 7(fvec4) ConstantComposite 15 16 17 15 - 24: TypeBool - 25: TypePointer Private 24(bool) - 26(ff1): 25(ptr) Variable Private - 27(ff2): 13(ptr) Variable Private - 28(ff3): 13(ptr) Variable Private - 29(ff4): 13(ptr) Variable Private + 14: TypeInt 32 0 + 15($Global): TypeStruct 7(fvec4) 14(int) 6(float) 7(fvec4) 7(fvec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: TypeInt 32 1 + 19: 18(int) Constant 0 + 20: TypePointer Uniform 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label - Store 14(AmbientColor) 18 FunctionEnd 11(ShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label - 19: 7(fvec4) Load 10(input) - 20: 7(fvec4) Load 14(AmbientColor) - 21: 7(fvec4) FMul 19 20 - ReturnValue 21 + 13: 7(fvec4) Load 10(input) + 21: 20(ptr) AccessChain 17 19 + 22: 7(fvec4) Load 21 + 23: 7(fvec4) FMul 13 22 + ReturnValue 23 FunctionEnd diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out index ba8e32e7..cc475784 100755 --- a/Test/baseResults/hlsl.forLoop.frag.out +++ b/Test/baseResults/hlsl.forLoop.frag.out @@ -2,7 +2,7 @@ hlsl.forLoop.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -124,7 +124,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out index d2545cca..a686c11b 100644 --- a/Test/baseResults/hlsl.gather.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gather.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:29 Sequence @@ -128,7 +128,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:29 Sequence diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out index 52648f70..e28ad34a 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gather.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:34 Sequence @@ -126,7 +126,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:34 Sequence diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index 1f01fc3e..92672356 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.gather.basic.dx10.vert Shader version: 450 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence @@ -110,7 +110,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out index ac317915..86a201cc 100644 --- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gather.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence @@ -101,7 +101,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out index bf8f3822..2bda352c 100644 --- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gather.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:25 Sequence @@ -98,7 +98,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:25 Sequence diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out index 026fd1b7..c9f6bbd7 100644 --- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gatherRGBA.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence @@ -12,7 +12,10 @@ gl_FragCoord origin is upper left 0:33 Construct combined texture-sampler (temp sampler2DArray) 0:33 'g_tTex2df4a' (uniform texture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:33 'c3' (uniform 3-component vector of float) +0:33 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:33 Constant: +0:33 2 (const uint) 0:33 Constant: 0:33 0 (const int) 0:34 Sequence @@ -22,7 +25,10 @@ gl_FragCoord origin is upper left 0:34 Construct combined texture-sampler (temp isampler2DArray) 0:34 'g_tTex2di4a' (uniform itexture2DArray) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:34 'c3' (uniform 3-component vector of float) +0:34 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:34 Constant: +0:34 2 (const uint) 0:34 Constant: 0:34 0 (const int) 0:35 Sequence @@ -32,7 +38,10 @@ gl_FragCoord origin is upper left 0:35 Construct combined texture-sampler (temp usampler2DArray) 0:35 'g_tTex2du4a' (uniform utexture2DArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:35 'c3' (uniform 3-component vector of float) +0:35 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:35 Constant: +0:35 2 (const uint) 0:35 Constant: 0:35 0 (const int) 0:37 Sequence @@ -42,7 +51,10 @@ gl_FragCoord origin is upper left 0:37 Construct combined texture-sampler (temp sampler2DArray) 0:37 'g_tTex2df4a' (uniform texture2DArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:37 'c3' (uniform 3-component vector of float) +0:37 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:37 Constant: +0:37 2 (const uint) 0:37 Constant: 0:37 1 (const int) 0:38 Sequence @@ -52,7 +64,10 @@ gl_FragCoord origin is upper left 0:38 Construct combined texture-sampler (temp isampler2DArray) 0:38 'g_tTex2di4a' (uniform itexture2DArray) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:38 'c3' (uniform 3-component vector of float) +0:38 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:38 Constant: +0:38 2 (const uint) 0:38 Constant: 0:38 1 (const int) 0:39 Sequence @@ -62,7 +77,10 @@ gl_FragCoord origin is upper left 0:39 Construct combined texture-sampler (temp usampler2DArray) 0:39 'g_tTex2du4a' (uniform utexture2DArray) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:39 'c3' (uniform 3-component vector of float) +0:39 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 2 (const uint) 0:39 Constant: 0:39 1 (const int) 0:41 Sequence @@ -72,7 +90,10 @@ gl_FragCoord origin is upper left 0:41 Construct combined texture-sampler (temp sampler2DArray) 0:41 'g_tTex2df4a' (uniform texture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:41 'c3' (uniform 3-component vector of float) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 2 (const uint) 0:41 Constant: 0:41 2 (const int) 0:42 Sequence @@ -82,7 +103,10 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp isampler2DArray) 0:42 'g_tTex2di4a' (uniform itexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 'c3' (uniform 3-component vector of float) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:42 Constant: +0:42 2 (const uint) 0:42 Constant: 0:42 2 (const int) 0:43 Sequence @@ -92,7 +116,10 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp usampler2DArray) 0:43 'g_tTex2du4a' (uniform utexture2DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 'c3' (uniform 3-component vector of float) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 2 (const uint) 0:43 Constant: 0:43 2 (const int) 0:45 Sequence @@ -102,7 +129,10 @@ gl_FragCoord origin is upper left 0:45 Construct combined texture-sampler (temp sampler2DArray) 0:45 'g_tTex2df4a' (uniform texture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:45 'c3' (uniform 3-component vector of float) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 2 (const uint) 0:45 Constant: 0:45 3 (const int) 0:46 Sequence @@ -112,7 +142,10 @@ gl_FragCoord origin is upper left 0:46 Construct combined texture-sampler (temp isampler2DArray) 0:46 'g_tTex2di4a' (uniform itexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:46 'c3' (uniform 3-component vector of float) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:46 Constant: +0:46 2 (const uint) 0:46 Constant: 0:46 3 (const int) 0:47 Sequence @@ -122,7 +155,10 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp usampler2DArray) 0:47 'g_tTex2du4a' (uniform utexture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 'c3' (uniform 3-component vector of float) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) 0:51 Sequence @@ -132,7 +168,10 @@ gl_FragCoord origin is upper left 0:51 Construct combined texture-sampler (temp samplerCubeArray) 0:51 'g_tTexcdf4a' (uniform textureCubeArray) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:51 'c4' (uniform 4-component vector of float) +0:51 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 3 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence @@ -142,7 +181,10 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp isamplerCubeArray) 0:52 'g_tTexcdi4a' (uniform itextureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 'c4' (uniform 4-component vector of float) +0:52 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 3 (const uint) 0:52 Constant: 0:52 0 (const int) 0:53 Sequence @@ -152,7 +194,10 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp usamplerCubeArray) 0:53 'g_tTexcdu4a' (uniform utextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 'c4' (uniform 4-component vector of float) +0:53 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 3 (const uint) 0:53 Constant: 0:53 0 (const int) 0:55 Sequence @@ -162,7 +207,10 @@ gl_FragCoord origin is upper left 0:55 Construct combined texture-sampler (temp samplerCubeArray) 0:55 'g_tTexcdf4a' (uniform textureCubeArray) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:55 'c4' (uniform 4-component vector of float) +0:55 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:55 Constant: +0:55 3 (const uint) 0:55 Constant: 0:55 1 (const int) 0:56 Sequence @@ -172,7 +220,10 @@ gl_FragCoord origin is upper left 0:56 Construct combined texture-sampler (temp isamplerCubeArray) 0:56 'g_tTexcdi4a' (uniform itextureCubeArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:56 'c4' (uniform 4-component vector of float) +0:56 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:56 Constant: +0:56 3 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence @@ -182,7 +233,10 @@ gl_FragCoord origin is upper left 0:57 Construct combined texture-sampler (temp usamplerCubeArray) 0:57 'g_tTexcdu4a' (uniform utextureCubeArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:57 'c4' (uniform 4-component vector of float) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Constant: 0:57 1 (const int) 0:59 Sequence @@ -192,7 +246,10 @@ gl_FragCoord origin is upper left 0:59 Construct combined texture-sampler (temp samplerCubeArray) 0:59 'g_tTexcdf4a' (uniform textureCubeArray) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:59 'c4' (uniform 4-component vector of float) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Constant: 0:59 2 (const int) 0:60 Sequence @@ -202,7 +259,10 @@ gl_FragCoord origin is upper left 0:60 Construct combined texture-sampler (temp isamplerCubeArray) 0:60 'g_tTexcdi4a' (uniform itextureCubeArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:60 'c4' (uniform 4-component vector of float) +0:60 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:60 Constant: +0:60 3 (const uint) 0:60 Constant: 0:60 2 (const int) 0:61 Sequence @@ -212,7 +272,10 @@ gl_FragCoord origin is upper left 0:61 Construct combined texture-sampler (temp usamplerCubeArray) 0:61 'g_tTexcdu4a' (uniform utextureCubeArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:61 'c4' (uniform 4-component vector of float) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 3 (const uint) 0:61 Constant: 0:61 2 (const int) 0:63 Sequence @@ -222,7 +285,10 @@ gl_FragCoord origin is upper left 0:63 Construct combined texture-sampler (temp samplerCubeArray) 0:63 'g_tTexcdf4a' (uniform textureCubeArray) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:63 'c4' (uniform 4-component vector of float) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 Sequence @@ -232,7 +298,10 @@ gl_FragCoord origin is upper left 0:64 Construct combined texture-sampler (temp isamplerCubeArray) 0:64 'g_tTexcdi4a' (uniform itextureCubeArray) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:64 'c4' (uniform 4-component vector of float) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:65 Sequence @@ -242,7 +311,10 @@ gl_FragCoord origin is upper left 0:65 Construct combined texture-sampler (temp usamplerCubeArray) 0:65 'g_tTexcdu4a' (uniform utextureCubeArray) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:65 'c4' (uniform 4-component vector of float) +0:65 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 3 (const uint) 0:65 Constant: 0:65 3 (const int) 0:67 move second child to first child (temp 4-component vector of float) @@ -289,12 +361,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) Linked fragment stage: @@ -303,7 +372,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence @@ -313,7 +382,10 @@ gl_FragCoord origin is upper left 0:33 Construct combined texture-sampler (temp sampler2DArray) 0:33 'g_tTex2df4a' (uniform texture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:33 'c3' (uniform 3-component vector of float) +0:33 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:33 Constant: +0:33 2 (const uint) 0:33 Constant: 0:33 0 (const int) 0:34 Sequence @@ -323,7 +395,10 @@ gl_FragCoord origin is upper left 0:34 Construct combined texture-sampler (temp isampler2DArray) 0:34 'g_tTex2di4a' (uniform itexture2DArray) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:34 'c3' (uniform 3-component vector of float) +0:34 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:34 Constant: +0:34 2 (const uint) 0:34 Constant: 0:34 0 (const int) 0:35 Sequence @@ -333,7 +408,10 @@ gl_FragCoord origin is upper left 0:35 Construct combined texture-sampler (temp usampler2DArray) 0:35 'g_tTex2du4a' (uniform utexture2DArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:35 'c3' (uniform 3-component vector of float) +0:35 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:35 Constant: +0:35 2 (const uint) 0:35 Constant: 0:35 0 (const int) 0:37 Sequence @@ -343,7 +421,10 @@ gl_FragCoord origin is upper left 0:37 Construct combined texture-sampler (temp sampler2DArray) 0:37 'g_tTex2df4a' (uniform texture2DArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:37 'c3' (uniform 3-component vector of float) +0:37 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:37 Constant: +0:37 2 (const uint) 0:37 Constant: 0:37 1 (const int) 0:38 Sequence @@ -353,7 +434,10 @@ gl_FragCoord origin is upper left 0:38 Construct combined texture-sampler (temp isampler2DArray) 0:38 'g_tTex2di4a' (uniform itexture2DArray) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:38 'c3' (uniform 3-component vector of float) +0:38 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:38 Constant: +0:38 2 (const uint) 0:38 Constant: 0:38 1 (const int) 0:39 Sequence @@ -363,7 +447,10 @@ gl_FragCoord origin is upper left 0:39 Construct combined texture-sampler (temp usampler2DArray) 0:39 'g_tTex2du4a' (uniform utexture2DArray) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:39 'c3' (uniform 3-component vector of float) +0:39 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 2 (const uint) 0:39 Constant: 0:39 1 (const int) 0:41 Sequence @@ -373,7 +460,10 @@ gl_FragCoord origin is upper left 0:41 Construct combined texture-sampler (temp sampler2DArray) 0:41 'g_tTex2df4a' (uniform texture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:41 'c3' (uniform 3-component vector of float) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 2 (const uint) 0:41 Constant: 0:41 2 (const int) 0:42 Sequence @@ -383,7 +473,10 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp isampler2DArray) 0:42 'g_tTex2di4a' (uniform itexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 'c3' (uniform 3-component vector of float) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:42 Constant: +0:42 2 (const uint) 0:42 Constant: 0:42 2 (const int) 0:43 Sequence @@ -393,7 +486,10 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp usampler2DArray) 0:43 'g_tTex2du4a' (uniform utexture2DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 'c3' (uniform 3-component vector of float) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 2 (const uint) 0:43 Constant: 0:43 2 (const int) 0:45 Sequence @@ -403,7 +499,10 @@ gl_FragCoord origin is upper left 0:45 Construct combined texture-sampler (temp sampler2DArray) 0:45 'g_tTex2df4a' (uniform texture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:45 'c3' (uniform 3-component vector of float) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 2 (const uint) 0:45 Constant: 0:45 3 (const int) 0:46 Sequence @@ -413,7 +512,10 @@ gl_FragCoord origin is upper left 0:46 Construct combined texture-sampler (temp isampler2DArray) 0:46 'g_tTex2di4a' (uniform itexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:46 'c3' (uniform 3-component vector of float) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:46 Constant: +0:46 2 (const uint) 0:46 Constant: 0:46 3 (const int) 0:47 Sequence @@ -423,7 +525,10 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp usampler2DArray) 0:47 'g_tTex2du4a' (uniform utexture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 'c3' (uniform 3-component vector of float) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) 0:51 Sequence @@ -433,7 +538,10 @@ gl_FragCoord origin is upper left 0:51 Construct combined texture-sampler (temp samplerCubeArray) 0:51 'g_tTexcdf4a' (uniform textureCubeArray) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:51 'c4' (uniform 4-component vector of float) +0:51 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 3 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence @@ -443,7 +551,10 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp isamplerCubeArray) 0:52 'g_tTexcdi4a' (uniform itextureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 'c4' (uniform 4-component vector of float) +0:52 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 3 (const uint) 0:52 Constant: 0:52 0 (const int) 0:53 Sequence @@ -453,7 +564,10 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp usamplerCubeArray) 0:53 'g_tTexcdu4a' (uniform utextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 'c4' (uniform 4-component vector of float) +0:53 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 3 (const uint) 0:53 Constant: 0:53 0 (const int) 0:55 Sequence @@ -463,7 +577,10 @@ gl_FragCoord origin is upper left 0:55 Construct combined texture-sampler (temp samplerCubeArray) 0:55 'g_tTexcdf4a' (uniform textureCubeArray) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:55 'c4' (uniform 4-component vector of float) +0:55 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:55 Constant: +0:55 3 (const uint) 0:55 Constant: 0:55 1 (const int) 0:56 Sequence @@ -473,7 +590,10 @@ gl_FragCoord origin is upper left 0:56 Construct combined texture-sampler (temp isamplerCubeArray) 0:56 'g_tTexcdi4a' (uniform itextureCubeArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:56 'c4' (uniform 4-component vector of float) +0:56 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:56 Constant: +0:56 3 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence @@ -483,7 +603,10 @@ gl_FragCoord origin is upper left 0:57 Construct combined texture-sampler (temp usamplerCubeArray) 0:57 'g_tTexcdu4a' (uniform utextureCubeArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:57 'c4' (uniform 4-component vector of float) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Constant: 0:57 1 (const int) 0:59 Sequence @@ -493,7 +616,10 @@ gl_FragCoord origin is upper left 0:59 Construct combined texture-sampler (temp samplerCubeArray) 0:59 'g_tTexcdf4a' (uniform textureCubeArray) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:59 'c4' (uniform 4-component vector of float) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Constant: 0:59 2 (const int) 0:60 Sequence @@ -503,7 +629,10 @@ gl_FragCoord origin is upper left 0:60 Construct combined texture-sampler (temp isamplerCubeArray) 0:60 'g_tTexcdi4a' (uniform itextureCubeArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:60 'c4' (uniform 4-component vector of float) +0:60 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:60 Constant: +0:60 3 (const uint) 0:60 Constant: 0:60 2 (const int) 0:61 Sequence @@ -513,7 +642,10 @@ gl_FragCoord origin is upper left 0:61 Construct combined texture-sampler (temp usamplerCubeArray) 0:61 'g_tTexcdu4a' (uniform utextureCubeArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:61 'c4' (uniform 4-component vector of float) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 3 (const uint) 0:61 Constant: 0:61 2 (const int) 0:63 Sequence @@ -523,7 +655,10 @@ gl_FragCoord origin is upper left 0:63 Construct combined texture-sampler (temp samplerCubeArray) 0:63 'g_tTexcdf4a' (uniform textureCubeArray) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:63 'c4' (uniform 4-component vector of float) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 Sequence @@ -533,7 +668,10 @@ gl_FragCoord origin is upper left 0:64 Construct combined texture-sampler (temp isamplerCubeArray) 0:64 'g_tTexcdi4a' (uniform itextureCubeArray) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:64 'c4' (uniform 4-component vector of float) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:65 Sequence @@ -543,7 +681,10 @@ gl_FragCoord origin is upper left 0:65 Construct combined texture-sampler (temp usamplerCubeArray) 0:65 'g_tTexcdu4a' (uniform utextureCubeArray) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:65 'c4' (uniform 4-component vector of float) +0:65 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 3 (const uint) 0:65 Constant: 0:65 3 (const int) 0:67 move second child to first child (temp 4-component vector of float) @@ -590,85 +731,90 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 227 +// Id's are bound by 248 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 204 208 + EntryPoint Fragment 4 "main" 230 234 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "txval00" Name 12 "g_tTex2df4a" Name 16 "g_sSamp" - Name 22 "c3" - Name 29 "txval01" - Name 32 "g_tTex2di4a" - Name 42 "txval02" - Name 45 "g_tTex2du4a" - Name 52 "txval10" - Name 59 "txval11" - Name 65 "txval12" - Name 71 "txval20" - Name 78 "txval21" - Name 84 "txval22" - Name 90 "txval30" - Name 97 "txval31" - Name 103 "txval32" - Name 109 "txval40" - Name 112 "g_tTexcdf4a" - Name 118 "c4" - Name 121 "txval41" - Name 124 "g_tTexcdi4a" - Name 131 "txval42" - Name 134 "g_tTexcdu4a" - Name 141 "txval50" - Name 147 "txval51" - Name 153 "txval52" - Name 159 "txval60" - Name 165 "txval61" - Name 171 "txval62" - Name 177 "txval70" - Name 183 "txval71" - Name 189 "txval72" - Name 195 "PS_OUTPUT" - MemberName 195(PS_OUTPUT) 0 "Color" - MemberName 195(PS_OUTPUT) 1 "Depth" - Name 197 "psout" - Name 204 "Color" - Name 208 "Depth" - Name 212 "g_sSamp2d" - Name 215 "g_tTex1df4a" - Name 218 "g_tTex1di4a" - Name 221 "g_tTex1du4a" - Name 223 "c1" - Name 226 "c2" + Name 22 "$Global" + MemberName 22($Global) 0 "c1" + MemberName 22($Global) 1 "c2" + MemberName 22($Global) 2 "c3" + MemberName 22($Global) 3 "c4" + Name 24 "" + Name 34 "txval01" + Name 37 "g_tTex2di4a" + Name 48 "txval02" + Name 51 "g_tTex2du4a" + Name 59 "txval10" + Name 67 "txval11" + Name 74 "txval12" + Name 81 "txval20" + Name 88 "txval21" + Name 95 "txval22" + Name 102 "txval30" + Name 110 "txval31" + Name 117 "txval32" + Name 124 "txval40" + Name 127 "g_tTexcdf4a" + Name 136 "txval41" + Name 139 "g_tTexcdi4a" + Name 147 "txval42" + Name 150 "g_tTexcdu4a" + Name 158 "txval50" + Name 165 "txval51" + Name 172 "txval52" + Name 179 "txval60" + Name 186 "txval61" + Name 193 "txval62" + Name 200 "txval70" + Name 207 "txval71" + Name 214 "txval72" + Name 221 "PS_OUTPUT" + MemberName 221(PS_OUTPUT) 0 "Color" + MemberName 221(PS_OUTPUT) 1 "Depth" + Name 223 "psout" + Name 230 "Color" + Name 234 "Depth" + Name 238 "g_sSamp2d" + Name 241 "g_tTex1df4a" + Name 244 "g_tTex1di4a" + Name 247 "g_tTex1du4a" Decorate 12(g_tTex2df4a) DescriptorSet 0 Decorate 16(g_sSamp) DescriptorSet 0 Decorate 16(g_sSamp) Binding 0 - Decorate 32(g_tTex2di4a) DescriptorSet 0 - Decorate 45(g_tTex2du4a) DescriptorSet 0 - Decorate 112(g_tTexcdf4a) DescriptorSet 0 - Decorate 124(g_tTexcdi4a) DescriptorSet 0 - Decorate 134(g_tTexcdu4a) DescriptorSet 0 - Decorate 204(Color) Location 0 - Decorate 208(Depth) BuiltIn FragDepth - Decorate 212(g_sSamp2d) DescriptorSet 0 - Decorate 215(g_tTex1df4a) DescriptorSet 0 - Decorate 215(g_tTex1df4a) Binding 0 - Decorate 218(g_tTex1di4a) DescriptorSet 0 - Decorate 221(g_tTex1du4a) DescriptorSet 0 + MemberDecorate 22($Global) 0 Offset 0 + MemberDecorate 22($Global) 1 Offset 8 + MemberDecorate 22($Global) 2 Offset 16 + MemberDecorate 22($Global) 3 Offset 32 + Decorate 22($Global) Block + Decorate 24 DescriptorSet 0 + Decorate 37(g_tTex2di4a) DescriptorSet 0 + Decorate 51(g_tTex2du4a) DescriptorSet 0 + Decorate 127(g_tTexcdf4a) DescriptorSet 0 + Decorate 139(g_tTexcdi4a) DescriptorSet 0 + Decorate 150(g_tTexcdu4a) DescriptorSet 0 + Decorate 230(Color) Location 0 + Decorate 234(Depth) BuiltIn FragDepth + Decorate 238(g_sSamp2d) DescriptorSet 0 + Decorate 241(g_tTex1df4a) DescriptorSet 0 + Decorate 241(g_tTex1df4a) Binding 0 + Decorate 244(g_tTex1di4a) DescriptorSet 0 + Decorate 247(g_tTex1du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -681,245 +827,266 @@ gl_FragCoord origin is upper left 15: TypePointer UniformConstant 14 16(g_sSamp): 15(ptr) Variable UniformConstant 18: TypeSampledImage 10 - 20: TypeVector 6(float) 3 - 21: TypePointer UniformConstant 20(fvec3) - 22(c3): 21(ptr) Variable UniformConstant - 24: TypeInt 32 1 - 25: 24(int) Constant 0 - 27: TypeVector 24(int) 4 - 28: TypePointer Function 27(ivec4) - 30: TypeImage 24(int) 2D array sampled format:Unknown - 31: TypePointer UniformConstant 30 - 32(g_tTex2di4a): 31(ptr) Variable UniformConstant - 35: TypeSampledImage 30 - 39: TypeInt 32 0 - 40: TypeVector 39(int) 4 - 41: TypePointer Function 40(ivec4) - 43: TypeImage 39(int) 2D array sampled format:Unknown - 44: TypePointer UniformConstant 43 - 45(g_tTex2du4a): 44(ptr) Variable UniformConstant - 48: TypeSampledImage 43 - 57: 24(int) Constant 1 - 76: 24(int) Constant 2 - 95: 24(int) Constant 3 - 110: TypeImage 6(float) Cube array sampled format:Unknown - 111: TypePointer UniformConstant 110 -112(g_tTexcdf4a): 111(ptr) Variable UniformConstant - 115: TypeSampledImage 110 - 117: TypePointer UniformConstant 7(fvec4) - 118(c4): 117(ptr) Variable UniformConstant - 122: TypeImage 24(int) Cube array sampled format:Unknown - 123: TypePointer UniformConstant 122 -124(g_tTexcdi4a): 123(ptr) Variable UniformConstant - 127: TypeSampledImage 122 - 132: TypeImage 39(int) Cube array sampled format:Unknown - 133: TypePointer UniformConstant 132 -134(g_tTexcdu4a): 133(ptr) Variable UniformConstant - 137: TypeSampledImage 132 - 195(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) - 196: TypePointer Function 195(PS_OUTPUT) - 198: 6(float) Constant 1065353216 - 199: 7(fvec4) ConstantComposite 198 198 198 198 - 201: TypePointer Function 6(float) - 203: TypePointer Output 7(fvec4) - 204(Color): 203(ptr) Variable Output - 207: TypePointer Output 6(float) - 208(Depth): 207(ptr) Variable Output - 212(g_sSamp2d): 15(ptr) Variable UniformConstant - 213: TypeImage 6(float) 1D array sampled format:Unknown - 214: TypePointer UniformConstant 213 -215(g_tTex1df4a): 214(ptr) Variable UniformConstant - 216: TypeImage 24(int) 1D array sampled format:Unknown - 217: TypePointer UniformConstant 216 -218(g_tTex1di4a): 217(ptr) Variable UniformConstant - 219: TypeImage 39(int) 1D array sampled format:Unknown - 220: TypePointer UniformConstant 219 -221(g_tTex1du4a): 220(ptr) Variable UniformConstant - 222: TypePointer UniformConstant 6(float) - 223(c1): 222(ptr) Variable UniformConstant - 224: TypeVector 6(float) 2 - 225: TypePointer UniformConstant 224(fvec2) - 226(c2): 225(ptr) Variable UniformConstant + 20: TypeVector 6(float) 2 + 21: TypeVector 6(float) 3 + 22($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) + 23: TypePointer Uniform 22($Global) + 24: 23(ptr) Variable Uniform + 25: TypeInt 32 1 + 26: 25(int) Constant 2 + 27: TypePointer Uniform 21(fvec3) + 30: 25(int) Constant 0 + 32: TypeVector 25(int) 4 + 33: TypePointer Function 32(ivec4) + 35: TypeImage 25(int) 2D array sampled format:Unknown + 36: TypePointer UniformConstant 35 + 37(g_tTex2di4a): 36(ptr) Variable UniformConstant + 40: TypeSampledImage 35 + 45: TypeInt 32 0 + 46: TypeVector 45(int) 4 + 47: TypePointer Function 46(ivec4) + 49: TypeImage 45(int) 2D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2du4a): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 65: 25(int) Constant 1 + 108: 25(int) Constant 3 + 125: TypeImage 6(float) Cube array sampled format:Unknown + 126: TypePointer UniformConstant 125 +127(g_tTexcdf4a): 126(ptr) Variable UniformConstant + 130: TypeSampledImage 125 + 132: TypePointer Uniform 7(fvec4) + 137: TypeImage 25(int) Cube array sampled format:Unknown + 138: TypePointer UniformConstant 137 +139(g_tTexcdi4a): 138(ptr) Variable UniformConstant + 142: TypeSampledImage 137 + 148: TypeImage 45(int) Cube array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTexcdu4a): 149(ptr) Variable UniformConstant + 153: TypeSampledImage 148 + 221(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 222: TypePointer Function 221(PS_OUTPUT) + 224: 6(float) Constant 1065353216 + 225: 7(fvec4) ConstantComposite 224 224 224 224 + 227: TypePointer Function 6(float) + 229: TypePointer Output 7(fvec4) + 230(Color): 229(ptr) Variable Output + 233: TypePointer Output 6(float) + 234(Depth): 233(ptr) Variable Output + 238(g_sSamp2d): 15(ptr) Variable UniformConstant + 239: TypeImage 6(float) 1D array sampled format:Unknown + 240: TypePointer UniformConstant 239 +241(g_tTex1df4a): 240(ptr) Variable UniformConstant + 242: TypeImage 25(int) 1D array sampled format:Unknown + 243: TypePointer UniformConstant 242 +244(g_tTex1di4a): 243(ptr) Variable UniformConstant + 245: TypeImage 45(int) 1D array sampled format:Unknown + 246: TypePointer UniformConstant 245 +247(g_tTex1du4a): 246(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(txval00): 8(ptr) Variable Function - 29(txval01): 28(ptr) Variable Function - 42(txval02): 41(ptr) Variable Function - 52(txval10): 8(ptr) Variable Function - 59(txval11): 28(ptr) Variable Function - 65(txval12): 41(ptr) Variable Function - 71(txval20): 8(ptr) Variable Function - 78(txval21): 28(ptr) Variable Function - 84(txval22): 41(ptr) Variable Function - 90(txval30): 8(ptr) Variable Function - 97(txval31): 28(ptr) Variable Function - 103(txval32): 41(ptr) Variable Function - 109(txval40): 8(ptr) Variable Function - 121(txval41): 28(ptr) Variable Function - 131(txval42): 41(ptr) Variable Function - 141(txval50): 8(ptr) Variable Function - 147(txval51): 28(ptr) Variable Function - 153(txval52): 41(ptr) Variable Function - 159(txval60): 8(ptr) Variable Function - 165(txval61): 28(ptr) Variable Function - 171(txval62): 41(ptr) Variable Function - 177(txval70): 8(ptr) Variable Function - 183(txval71): 28(ptr) Variable Function - 189(txval72): 41(ptr) Variable Function - 197(psout): 196(ptr) Variable Function + 34(txval01): 33(ptr) Variable Function + 48(txval02): 47(ptr) Variable Function + 59(txval10): 8(ptr) Variable Function + 67(txval11): 33(ptr) Variable Function + 74(txval12): 47(ptr) Variable Function + 81(txval20): 8(ptr) Variable Function + 88(txval21): 33(ptr) Variable Function + 95(txval22): 47(ptr) Variable Function + 102(txval30): 8(ptr) Variable Function + 110(txval31): 33(ptr) Variable Function + 117(txval32): 47(ptr) Variable Function + 124(txval40): 8(ptr) Variable Function + 136(txval41): 33(ptr) Variable Function + 147(txval42): 47(ptr) Variable Function + 158(txval50): 8(ptr) Variable Function + 165(txval51): 33(ptr) Variable Function + 172(txval52): 47(ptr) Variable Function + 179(txval60): 8(ptr) Variable Function + 186(txval61): 33(ptr) Variable Function + 193(txval62): 47(ptr) Variable Function + 200(txval70): 8(ptr) Variable Function + 207(txval71): 33(ptr) Variable Function + 214(txval72): 47(ptr) Variable Function + 223(psout): 222(ptr) Variable Function 13: 10 Load 12(g_tTex2df4a) 17: 14 Load 16(g_sSamp) 19: 18 SampledImage 13 17 - 23: 20(fvec3) Load 22(c3) - 26: 7(fvec4) ImageGather 19 23 25 - Store 9(txval00) 26 - 33: 30 Load 32(g_tTex2di4a) - 34: 14 Load 16(g_sSamp) - 36: 35 SampledImage 33 34 - 37: 20(fvec3) Load 22(c3) - 38: 27(ivec4) ImageGather 36 37 25 - Store 29(txval01) 38 - 46: 43 Load 45(g_tTex2du4a) - 47: 14 Load 16(g_sSamp) - 49: 48 SampledImage 46 47 - 50: 20(fvec3) Load 22(c3) - 51: 40(ivec4) ImageGather 49 50 25 - Store 42(txval02) 51 - 53: 10 Load 12(g_tTex2df4a) - 54: 14 Load 16(g_sSamp) - 55: 18 SampledImage 53 54 - 56: 20(fvec3) Load 22(c3) - 58: 7(fvec4) ImageGather 55 56 57 - Store 52(txval10) 58 - 60: 30 Load 32(g_tTex2di4a) + 28: 27(ptr) AccessChain 24 26 + 29: 21(fvec3) Load 28 + 31: 7(fvec4) ImageGather 19 29 30 + Store 9(txval00) 31 + 38: 35 Load 37(g_tTex2di4a) + 39: 14 Load 16(g_sSamp) + 41: 40 SampledImage 38 39 + 42: 27(ptr) AccessChain 24 26 + 43: 21(fvec3) Load 42 + 44: 32(ivec4) ImageGather 41 43 30 + Store 34(txval01) 44 + 52: 49 Load 51(g_tTex2du4a) + 53: 14 Load 16(g_sSamp) + 55: 54 SampledImage 52 53 + 56: 27(ptr) AccessChain 24 26 + 57: 21(fvec3) Load 56 + 58: 46(ivec4) ImageGather 55 57 30 + Store 48(txval02) 58 + 60: 10 Load 12(g_tTex2df4a) 61: 14 Load 16(g_sSamp) - 62: 35 SampledImage 60 61 - 63: 20(fvec3) Load 22(c3) - 64: 27(ivec4) ImageGather 62 63 57 - Store 59(txval11) 64 - 66: 43 Load 45(g_tTex2du4a) - 67: 14 Load 16(g_sSamp) - 68: 48 SampledImage 66 67 - 69: 20(fvec3) Load 22(c3) - 70: 40(ivec4) ImageGather 68 69 57 - Store 65(txval12) 70 - 72: 10 Load 12(g_tTex2df4a) - 73: 14 Load 16(g_sSamp) - 74: 18 SampledImage 72 73 - 75: 20(fvec3) Load 22(c3) - 77: 7(fvec4) ImageGather 74 75 76 - Store 71(txval20) 77 - 79: 30 Load 32(g_tTex2di4a) - 80: 14 Load 16(g_sSamp) - 81: 35 SampledImage 79 80 - 82: 20(fvec3) Load 22(c3) - 83: 27(ivec4) ImageGather 81 82 76 - Store 78(txval21) 83 - 85: 43 Load 45(g_tTex2du4a) - 86: 14 Load 16(g_sSamp) - 87: 48 SampledImage 85 86 - 88: 20(fvec3) Load 22(c3) - 89: 40(ivec4) ImageGather 87 88 76 - Store 84(txval22) 89 - 91: 10 Load 12(g_tTex2df4a) - 92: 14 Load 16(g_sSamp) - 93: 18 SampledImage 91 92 - 94: 20(fvec3) Load 22(c3) - 96: 7(fvec4) ImageGather 93 94 95 - Store 90(txval30) 96 - 98: 30 Load 32(g_tTex2di4a) - 99: 14 Load 16(g_sSamp) - 100: 35 SampledImage 98 99 - 101: 20(fvec3) Load 22(c3) - 102: 27(ivec4) ImageGather 100 101 95 - Store 97(txval31) 102 - 104: 43 Load 45(g_tTex2du4a) - 105: 14 Load 16(g_sSamp) - 106: 48 SampledImage 104 105 - 107: 20(fvec3) Load 22(c3) - 108: 40(ivec4) ImageGather 106 107 95 - Store 103(txval32) 108 - 113: 110 Load 112(g_tTexcdf4a) - 114: 14 Load 16(g_sSamp) - 116: 115 SampledImage 113 114 - 119: 7(fvec4) Load 118(c4) - 120: 7(fvec4) ImageGather 116 119 25 - Store 109(txval40) 120 - 125: 122 Load 124(g_tTexcdi4a) - 126: 14 Load 16(g_sSamp) - 128: 127 SampledImage 125 126 - 129: 7(fvec4) Load 118(c4) - 130: 27(ivec4) ImageGather 128 129 25 - Store 121(txval41) 130 - 135: 132 Load 134(g_tTexcdu4a) - 136: 14 Load 16(g_sSamp) - 138: 137 SampledImage 135 136 - 139: 7(fvec4) Load 118(c4) - 140: 40(ivec4) ImageGather 138 139 25 - Store 131(txval42) 140 - 142: 110 Load 112(g_tTexcdf4a) - 143: 14 Load 16(g_sSamp) - 144: 115 SampledImage 142 143 - 145: 7(fvec4) Load 118(c4) - 146: 7(fvec4) ImageGather 144 145 57 - Store 141(txval50) 146 - 148: 122 Load 124(g_tTexcdi4a) - 149: 14 Load 16(g_sSamp) - 150: 127 SampledImage 148 149 - 151: 7(fvec4) Load 118(c4) - 152: 27(ivec4) ImageGather 150 151 57 - Store 147(txval51) 152 - 154: 132 Load 134(g_tTexcdu4a) - 155: 14 Load 16(g_sSamp) - 156: 137 SampledImage 154 155 - 157: 7(fvec4) Load 118(c4) - 158: 40(ivec4) ImageGather 156 157 57 - Store 153(txval52) 158 - 160: 110 Load 112(g_tTexcdf4a) - 161: 14 Load 16(g_sSamp) - 162: 115 SampledImage 160 161 - 163: 7(fvec4) Load 118(c4) - 164: 7(fvec4) ImageGather 162 163 76 - Store 159(txval60) 164 - 166: 122 Load 124(g_tTexcdi4a) + 62: 18 SampledImage 60 61 + 63: 27(ptr) AccessChain 24 26 + 64: 21(fvec3) Load 63 + 66: 7(fvec4) ImageGather 62 64 65 + Store 59(txval10) 66 + 68: 35 Load 37(g_tTex2di4a) + 69: 14 Load 16(g_sSamp) + 70: 40 SampledImage 68 69 + 71: 27(ptr) AccessChain 24 26 + 72: 21(fvec3) Load 71 + 73: 32(ivec4) ImageGather 70 72 65 + Store 67(txval11) 73 + 75: 49 Load 51(g_tTex2du4a) + 76: 14 Load 16(g_sSamp) + 77: 54 SampledImage 75 76 + 78: 27(ptr) AccessChain 24 26 + 79: 21(fvec3) Load 78 + 80: 46(ivec4) ImageGather 77 79 65 + Store 74(txval12) 80 + 82: 10 Load 12(g_tTex2df4a) + 83: 14 Load 16(g_sSamp) + 84: 18 SampledImage 82 83 + 85: 27(ptr) AccessChain 24 26 + 86: 21(fvec3) Load 85 + 87: 7(fvec4) ImageGather 84 86 26 + Store 81(txval20) 87 + 89: 35 Load 37(g_tTex2di4a) + 90: 14 Load 16(g_sSamp) + 91: 40 SampledImage 89 90 + 92: 27(ptr) AccessChain 24 26 + 93: 21(fvec3) Load 92 + 94: 32(ivec4) ImageGather 91 93 26 + Store 88(txval21) 94 + 96: 49 Load 51(g_tTex2du4a) + 97: 14 Load 16(g_sSamp) + 98: 54 SampledImage 96 97 + 99: 27(ptr) AccessChain 24 26 + 100: 21(fvec3) Load 99 + 101: 46(ivec4) ImageGather 98 100 26 + Store 95(txval22) 101 + 103: 10 Load 12(g_tTex2df4a) + 104: 14 Load 16(g_sSamp) + 105: 18 SampledImage 103 104 + 106: 27(ptr) AccessChain 24 26 + 107: 21(fvec3) Load 106 + 109: 7(fvec4) ImageGather 105 107 108 + Store 102(txval30) 109 + 111: 35 Load 37(g_tTex2di4a) + 112: 14 Load 16(g_sSamp) + 113: 40 SampledImage 111 112 + 114: 27(ptr) AccessChain 24 26 + 115: 21(fvec3) Load 114 + 116: 32(ivec4) ImageGather 113 115 108 + Store 110(txval31) 116 + 118: 49 Load 51(g_tTex2du4a) + 119: 14 Load 16(g_sSamp) + 120: 54 SampledImage 118 119 + 121: 27(ptr) AccessChain 24 26 + 122: 21(fvec3) Load 121 + 123: 46(ivec4) ImageGather 120 122 108 + Store 117(txval32) 123 + 128: 125 Load 127(g_tTexcdf4a) + 129: 14 Load 16(g_sSamp) + 131: 130 SampledImage 128 129 + 133: 132(ptr) AccessChain 24 108 + 134: 7(fvec4) Load 133 + 135: 7(fvec4) ImageGather 131 134 30 + Store 124(txval40) 135 + 140: 137 Load 139(g_tTexcdi4a) + 141: 14 Load 16(g_sSamp) + 143: 142 SampledImage 140 141 + 144: 132(ptr) AccessChain 24 108 + 145: 7(fvec4) Load 144 + 146: 32(ivec4) ImageGather 143 145 30 + Store 136(txval41) 146 + 151: 148 Load 150(g_tTexcdu4a) + 152: 14 Load 16(g_sSamp) + 154: 153 SampledImage 151 152 + 155: 132(ptr) AccessChain 24 108 + 156: 7(fvec4) Load 155 + 157: 46(ivec4) ImageGather 154 156 30 + Store 147(txval42) 157 + 159: 125 Load 127(g_tTexcdf4a) + 160: 14 Load 16(g_sSamp) + 161: 130 SampledImage 159 160 + 162: 132(ptr) AccessChain 24 108 + 163: 7(fvec4) Load 162 + 164: 7(fvec4) ImageGather 161 163 65 + Store 158(txval50) 164 + 166: 137 Load 139(g_tTexcdi4a) 167: 14 Load 16(g_sSamp) - 168: 127 SampledImage 166 167 - 169: 7(fvec4) Load 118(c4) - 170: 27(ivec4) ImageGather 168 169 76 - Store 165(txval61) 170 - 172: 132 Load 134(g_tTexcdu4a) - 173: 14 Load 16(g_sSamp) - 174: 137 SampledImage 172 173 - 175: 7(fvec4) Load 118(c4) - 176: 40(ivec4) ImageGather 174 175 76 - Store 171(txval62) 176 - 178: 110 Load 112(g_tTexcdf4a) - 179: 14 Load 16(g_sSamp) - 180: 115 SampledImage 178 179 - 181: 7(fvec4) Load 118(c4) - 182: 7(fvec4) ImageGather 180 181 95 - Store 177(txval70) 182 - 184: 122 Load 124(g_tTexcdi4a) - 185: 14 Load 16(g_sSamp) - 186: 127 SampledImage 184 185 - 187: 7(fvec4) Load 118(c4) - 188: 27(ivec4) ImageGather 186 187 95 - Store 183(txval71) 188 - 190: 132 Load 134(g_tTexcdu4a) - 191: 14 Load 16(g_sSamp) - 192: 137 SampledImage 190 191 - 193: 7(fvec4) Load 118(c4) - 194: 40(ivec4) ImageGather 192 193 95 - Store 189(txval72) 194 - 200: 8(ptr) AccessChain 197(psout) 25 - Store 200 199 - 202: 201(ptr) AccessChain 197(psout) 57 - Store 202 198 - 205: 8(ptr) AccessChain 197(psout) 25 - 206: 7(fvec4) Load 205 - Store 204(Color) 206 - 209: 201(ptr) AccessChain 197(psout) 57 - 210: 6(float) Load 209 - Store 208(Depth) 210 + 168: 142 SampledImage 166 167 + 169: 132(ptr) AccessChain 24 108 + 170: 7(fvec4) Load 169 + 171: 32(ivec4) ImageGather 168 170 65 + Store 165(txval51) 171 + 173: 148 Load 150(g_tTexcdu4a) + 174: 14 Load 16(g_sSamp) + 175: 153 SampledImage 173 174 + 176: 132(ptr) AccessChain 24 108 + 177: 7(fvec4) Load 176 + 178: 46(ivec4) ImageGather 175 177 65 + Store 172(txval52) 178 + 180: 125 Load 127(g_tTexcdf4a) + 181: 14 Load 16(g_sSamp) + 182: 130 SampledImage 180 181 + 183: 132(ptr) AccessChain 24 108 + 184: 7(fvec4) Load 183 + 185: 7(fvec4) ImageGather 182 184 26 + Store 179(txval60) 185 + 187: 137 Load 139(g_tTexcdi4a) + 188: 14 Load 16(g_sSamp) + 189: 142 SampledImage 187 188 + 190: 132(ptr) AccessChain 24 108 + 191: 7(fvec4) Load 190 + 192: 32(ivec4) ImageGather 189 191 26 + Store 186(txval61) 192 + 194: 148 Load 150(g_tTexcdu4a) + 195: 14 Load 16(g_sSamp) + 196: 153 SampledImage 194 195 + 197: 132(ptr) AccessChain 24 108 + 198: 7(fvec4) Load 197 + 199: 46(ivec4) ImageGather 196 198 26 + Store 193(txval62) 199 + 201: 125 Load 127(g_tTexcdf4a) + 202: 14 Load 16(g_sSamp) + 203: 130 SampledImage 201 202 + 204: 132(ptr) AccessChain 24 108 + 205: 7(fvec4) Load 204 + 206: 7(fvec4) ImageGather 203 205 108 + Store 200(txval70) 206 + 208: 137 Load 139(g_tTexcdi4a) + 209: 14 Load 16(g_sSamp) + 210: 142 SampledImage 208 209 + 211: 132(ptr) AccessChain 24 108 + 212: 7(fvec4) Load 211 + 213: 32(ivec4) ImageGather 210 212 108 + Store 207(txval71) 213 + 215: 148 Load 150(g_tTexcdu4a) + 216: 14 Load 16(g_sSamp) + 217: 153 SampledImage 215 216 + 218: 132(ptr) AccessChain 24 108 + 219: 7(fvec4) Load 218 + 220: 46(ivec4) ImageGather 217 219 108 + Store 214(txval72) 220 + 226: 8(ptr) AccessChain 223(psout) 30 + Store 226 225 + 228: 227(ptr) AccessChain 223(psout) 65 + Store 228 224 + 231: 8(ptr) AccessChain 223(psout) 30 + 232: 7(fvec4) Load 231 + Store 230(Color) 232 + 235: 227(ptr) AccessChain 223(psout) 65 + 236: 6(float) Load 235 + Store 234(Depth) 236 Return FunctionEnd diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out index 2ec5343b..5cdf912e 100644 --- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gatherRGBA.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:34 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:34 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:34 Function Parameters: 0:? Sequence 0:39 Sequence @@ -12,7 +12,10 @@ gl_FragCoord origin is upper left 0:39 Construct combined texture-sampler (temp sampler2D) 0:39 'g_tTex2df4' (uniform texture2D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:39 'c2' (uniform 2-component vector of float) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 1 (const uint) 0:39 Constant: 0:39 0 (const int) 0:40 Sequence @@ -22,7 +25,10 @@ gl_FragCoord origin is upper left 0:40 Construct combined texture-sampler (temp isampler2D) 0:40 'g_tTex2di4' (uniform itexture2D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:40 'c2' (uniform 2-component vector of float) +0:40 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:40 Constant: +0:40 1 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence @@ -32,7 +38,10 @@ gl_FragCoord origin is upper left 0:41 Construct combined texture-sampler (temp usampler2D) 0:41 'g_tTex2du4' (uniform utexture2D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:41 'c2' (uniform 2-component vector of float) +0:41 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 1 (const uint) 0:41 Constant: 0:41 0 (const int) 0:43 Sequence @@ -42,7 +51,10 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp sampler2D) 0:43 'g_tTex2df4' (uniform texture2D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 'c2' (uniform 2-component vector of float) +0:43 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 1 (const uint) 0:43 Constant: 0:43 1 (const int) 0:44 Sequence @@ -52,7 +64,10 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp isampler2D) 0:44 'g_tTex2di4' (uniform itexture2D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 'c2' (uniform 2-component vector of float) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:44 Constant: +0:44 1 (const uint) 0:44 Constant: 0:44 1 (const int) 0:45 Sequence @@ -62,7 +77,10 @@ gl_FragCoord origin is upper left 0:45 Construct combined texture-sampler (temp usampler2D) 0:45 'g_tTex2du4' (uniform utexture2D) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:45 'c2' (uniform 2-component vector of float) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 1 (const uint) 0:45 Constant: 0:45 1 (const int) 0:47 Sequence @@ -72,7 +90,10 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2D) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 'c2' (uniform 2-component vector of float) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 1 (const uint) 0:47 Constant: 0:47 2 (const int) 0:48 Sequence @@ -82,7 +103,10 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2D) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 'c2' (uniform 2-component vector of float) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:48 Constant: +0:48 1 (const uint) 0:48 Constant: 0:48 2 (const int) 0:49 Sequence @@ -92,7 +116,10 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2D) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 'c2' (uniform 2-component vector of float) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:49 Constant: +0:49 1 (const uint) 0:49 Constant: 0:49 2 (const int) 0:51 Sequence @@ -102,7 +129,10 @@ gl_FragCoord origin is upper left 0:51 Construct combined texture-sampler (temp sampler2D) 0:51 'g_tTex2df4' (uniform texture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:51 'c2' (uniform 2-component vector of float) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Constant: 0:51 3 (const int) 0:52 Sequence @@ -112,7 +142,10 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp isampler2D) 0:52 'g_tTex2di4' (uniform itexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 'c2' (uniform 2-component vector of float) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 3 (const int) 0:53 Sequence @@ -122,7 +155,10 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp usampler2D) 0:53 'g_tTex2du4' (uniform utexture2D) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 'c2' (uniform 2-component vector of float) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 3 (const int) 0:57 Sequence @@ -132,7 +168,10 @@ gl_FragCoord origin is upper left 0:57 Construct combined texture-sampler (temp samplerCube) 0:57 'g_tTexcdf4' (uniform textureCube) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:57 'c3' (uniform 3-component vector of float) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 0 (const int) 0:58 Sequence @@ -142,7 +181,10 @@ gl_FragCoord origin is upper left 0:58 Construct combined texture-sampler (temp isamplerCube) 0:58 'g_tTexcdi4' (uniform itextureCube) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:58 'c3' (uniform 3-component vector of float) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 0 (const int) 0:59 Sequence @@ -152,7 +194,10 @@ gl_FragCoord origin is upper left 0:59 Construct combined texture-sampler (temp usamplerCube) 0:59 'g_tTexcdu4' (uniform utextureCube) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:59 'c3' (uniform 3-component vector of float) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Constant: 0:59 0 (const int) 0:61 Sequence @@ -162,7 +207,10 @@ gl_FragCoord origin is upper left 0:61 Construct combined texture-sampler (temp samplerCube) 0:61 'g_tTexcdf4' (uniform textureCube) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:61 'c3' (uniform 3-component vector of float) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 2 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence @@ -172,7 +220,10 @@ gl_FragCoord origin is upper left 0:62 Construct combined texture-sampler (temp isamplerCube) 0:62 'g_tTexcdi4' (uniform itextureCube) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:62 'c3' (uniform 3-component vector of float) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:62 Constant: +0:62 2 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence @@ -182,7 +233,10 @@ gl_FragCoord origin is upper left 0:63 Construct combined texture-sampler (temp usamplerCube) 0:63 'g_tTexcdu4' (uniform utextureCube) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:63 'c3' (uniform 3-component vector of float) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 2 (const uint) 0:63 Constant: 0:63 1 (const int) 0:65 Sequence @@ -192,7 +246,10 @@ gl_FragCoord origin is upper left 0:65 Construct combined texture-sampler (temp samplerCube) 0:65 'g_tTexcdf4' (uniform textureCube) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:65 'c3' (uniform 3-component vector of float) +0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 2 (const uint) 0:65 Constant: 0:65 2 (const int) 0:66 Sequence @@ -202,7 +259,10 @@ gl_FragCoord origin is upper left 0:66 Construct combined texture-sampler (temp isamplerCube) 0:66 'g_tTexcdi4' (uniform itextureCube) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:66 'c3' (uniform 3-component vector of float) +0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:66 Constant: +0:66 2 (const uint) 0:66 Constant: 0:66 2 (const int) 0:67 Sequence @@ -212,7 +272,10 @@ gl_FragCoord origin is upper left 0:67 Construct combined texture-sampler (temp usamplerCube) 0:67 'g_tTexcdu4' (uniform utextureCube) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:67 'c3' (uniform 3-component vector of float) +0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:67 Constant: +0:67 2 (const uint) 0:67 Constant: 0:67 2 (const int) 0:69 Sequence @@ -222,7 +285,10 @@ gl_FragCoord origin is upper left 0:69 Construct combined texture-sampler (temp samplerCube) 0:69 'g_tTexcdf4' (uniform textureCube) 0:69 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:69 'c3' (uniform 3-component vector of float) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:69 Constant: +0:69 2 (const uint) 0:69 Constant: 0:69 3 (const int) 0:70 Sequence @@ -232,7 +298,10 @@ gl_FragCoord origin is upper left 0:70 Construct combined texture-sampler (temp isamplerCube) 0:70 'g_tTexcdi4' (uniform itextureCube) 0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:70 'c3' (uniform 3-component vector of float) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:70 Constant: +0:70 2 (const uint) 0:70 Constant: 0:70 3 (const int) 0:71 Sequence @@ -242,7 +311,10 @@ gl_FragCoord origin is upper left 0:71 Construct combined texture-sampler (temp usamplerCube) 0:71 'g_tTexcdu4' (uniform utextureCube) 0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:71 'c3' (uniform 3-component vector of float) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:71 Constant: +0:71 2 (const uint) 0:71 Constant: 0:71 3 (const int) 0:73 move second child to first child (temp 4-component vector of float) @@ -293,12 +365,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) Linked fragment stage: @@ -307,7 +376,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:34 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:34 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:34 Function Parameters: 0:? Sequence 0:39 Sequence @@ -317,7 +386,10 @@ gl_FragCoord origin is upper left 0:39 Construct combined texture-sampler (temp sampler2D) 0:39 'g_tTex2df4' (uniform texture2D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:39 'c2' (uniform 2-component vector of float) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 1 (const uint) 0:39 Constant: 0:39 0 (const int) 0:40 Sequence @@ -327,7 +399,10 @@ gl_FragCoord origin is upper left 0:40 Construct combined texture-sampler (temp isampler2D) 0:40 'g_tTex2di4' (uniform itexture2D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:40 'c2' (uniform 2-component vector of float) +0:40 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:40 Constant: +0:40 1 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence @@ -337,7 +412,10 @@ gl_FragCoord origin is upper left 0:41 Construct combined texture-sampler (temp usampler2D) 0:41 'g_tTex2du4' (uniform utexture2D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:41 'c2' (uniform 2-component vector of float) +0:41 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 1 (const uint) 0:41 Constant: 0:41 0 (const int) 0:43 Sequence @@ -347,7 +425,10 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp sampler2D) 0:43 'g_tTex2df4' (uniform texture2D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 'c2' (uniform 2-component vector of float) +0:43 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 1 (const uint) 0:43 Constant: 0:43 1 (const int) 0:44 Sequence @@ -357,7 +438,10 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp isampler2D) 0:44 'g_tTex2di4' (uniform itexture2D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 'c2' (uniform 2-component vector of float) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:44 Constant: +0:44 1 (const uint) 0:44 Constant: 0:44 1 (const int) 0:45 Sequence @@ -367,7 +451,10 @@ gl_FragCoord origin is upper left 0:45 Construct combined texture-sampler (temp usampler2D) 0:45 'g_tTex2du4' (uniform utexture2D) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:45 'c2' (uniform 2-component vector of float) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 1 (const uint) 0:45 Constant: 0:45 1 (const int) 0:47 Sequence @@ -377,7 +464,10 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2D) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 'c2' (uniform 2-component vector of float) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 1 (const uint) 0:47 Constant: 0:47 2 (const int) 0:48 Sequence @@ -387,7 +477,10 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2D) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 'c2' (uniform 2-component vector of float) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:48 Constant: +0:48 1 (const uint) 0:48 Constant: 0:48 2 (const int) 0:49 Sequence @@ -397,7 +490,10 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2D) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 'c2' (uniform 2-component vector of float) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:49 Constant: +0:49 1 (const uint) 0:49 Constant: 0:49 2 (const int) 0:51 Sequence @@ -407,7 +503,10 @@ gl_FragCoord origin is upper left 0:51 Construct combined texture-sampler (temp sampler2D) 0:51 'g_tTex2df4' (uniform texture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:51 'c2' (uniform 2-component vector of float) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Constant: 0:51 3 (const int) 0:52 Sequence @@ -417,7 +516,10 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp isampler2D) 0:52 'g_tTex2di4' (uniform itexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 'c2' (uniform 2-component vector of float) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 3 (const int) 0:53 Sequence @@ -427,7 +529,10 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp usampler2D) 0:53 'g_tTex2du4' (uniform utexture2D) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 'c2' (uniform 2-component vector of float) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 3 (const int) 0:57 Sequence @@ -437,7 +542,10 @@ gl_FragCoord origin is upper left 0:57 Construct combined texture-sampler (temp samplerCube) 0:57 'g_tTexcdf4' (uniform textureCube) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:57 'c3' (uniform 3-component vector of float) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 0 (const int) 0:58 Sequence @@ -447,7 +555,10 @@ gl_FragCoord origin is upper left 0:58 Construct combined texture-sampler (temp isamplerCube) 0:58 'g_tTexcdi4' (uniform itextureCube) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:58 'c3' (uniform 3-component vector of float) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 0 (const int) 0:59 Sequence @@ -457,7 +568,10 @@ gl_FragCoord origin is upper left 0:59 Construct combined texture-sampler (temp usamplerCube) 0:59 'g_tTexcdu4' (uniform utextureCube) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:59 'c3' (uniform 3-component vector of float) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Constant: 0:59 0 (const int) 0:61 Sequence @@ -467,7 +581,10 @@ gl_FragCoord origin is upper left 0:61 Construct combined texture-sampler (temp samplerCube) 0:61 'g_tTexcdf4' (uniform textureCube) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:61 'c3' (uniform 3-component vector of float) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 2 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence @@ -477,7 +594,10 @@ gl_FragCoord origin is upper left 0:62 Construct combined texture-sampler (temp isamplerCube) 0:62 'g_tTexcdi4' (uniform itextureCube) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:62 'c3' (uniform 3-component vector of float) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:62 Constant: +0:62 2 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence @@ -487,7 +607,10 @@ gl_FragCoord origin is upper left 0:63 Construct combined texture-sampler (temp usamplerCube) 0:63 'g_tTexcdu4' (uniform utextureCube) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:63 'c3' (uniform 3-component vector of float) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 2 (const uint) 0:63 Constant: 0:63 1 (const int) 0:65 Sequence @@ -497,7 +620,10 @@ gl_FragCoord origin is upper left 0:65 Construct combined texture-sampler (temp samplerCube) 0:65 'g_tTexcdf4' (uniform textureCube) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:65 'c3' (uniform 3-component vector of float) +0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 2 (const uint) 0:65 Constant: 0:65 2 (const int) 0:66 Sequence @@ -507,7 +633,10 @@ gl_FragCoord origin is upper left 0:66 Construct combined texture-sampler (temp isamplerCube) 0:66 'g_tTexcdi4' (uniform itextureCube) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:66 'c3' (uniform 3-component vector of float) +0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:66 Constant: +0:66 2 (const uint) 0:66 Constant: 0:66 2 (const int) 0:67 Sequence @@ -517,7 +646,10 @@ gl_FragCoord origin is upper left 0:67 Construct combined texture-sampler (temp usamplerCube) 0:67 'g_tTexcdu4' (uniform utextureCube) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:67 'c3' (uniform 3-component vector of float) +0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:67 Constant: +0:67 2 (const uint) 0:67 Constant: 0:67 2 (const int) 0:69 Sequence @@ -527,7 +659,10 @@ gl_FragCoord origin is upper left 0:69 Construct combined texture-sampler (temp samplerCube) 0:69 'g_tTexcdf4' (uniform textureCube) 0:69 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:69 'c3' (uniform 3-component vector of float) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:69 Constant: +0:69 2 (const uint) 0:69 Constant: 0:69 3 (const int) 0:70 Sequence @@ -537,7 +672,10 @@ gl_FragCoord origin is upper left 0:70 Construct combined texture-sampler (temp isamplerCube) 0:70 'g_tTexcdi4' (uniform itextureCube) 0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:70 'c3' (uniform 3-component vector of float) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:70 Constant: +0:70 2 (const uint) 0:70 Constant: 0:70 3 (const int) 0:71 Sequence @@ -547,7 +685,10 @@ gl_FragCoord origin is upper left 0:71 Construct combined texture-sampler (temp usamplerCube) 0:71 'g_tTexcdu4' (uniform utextureCube) 0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:71 'c3' (uniform 3-component vector of float) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:71 Constant: +0:71 2 (const uint) 0:71 Constant: 0:71 3 (const int) 0:73 move second child to first child (temp 4-component vector of float) @@ -598,93 +739,98 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 237 +// Id's are bound by 258 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 205 209 + EntryPoint Fragment 4 "main" 230 234 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "txval00" Name 12 "g_tTex2df4" Name 16 "g_sSamp" - Name 22 "c2" - Name 29 "txval01" - Name 32 "g_tTex2di4" - Name 42 "txval02" - Name 45 "g_tTex2du4" - Name 52 "txval10" - Name 59 "txval11" - Name 65 "txval12" - Name 71 "txval20" - Name 78 "txval21" - Name 84 "txval22" - Name 90 "txval30" - Name 97 "txval31" - Name 103 "txval32" - Name 109 "txval40" - Name 112 "g_tTexcdf4" - Name 119 "c3" - Name 122 "txval41" - Name 125 "g_tTexcdi4" - Name 132 "txval42" - Name 135 "g_tTexcdu4" - Name 142 "txval50" - Name 148 "txval51" - Name 154 "txval52" - Name 160 "txval60" - Name 166 "txval61" - Name 172 "txval62" - Name 178 "txval70" - Name 184 "txval71" - Name 190 "txval72" - Name 196 "PS_OUTPUT" - MemberName 196(PS_OUTPUT) 0 "Color" - MemberName 196(PS_OUTPUT) 1 "Depth" - Name 198 "psout" - Name 205 "Color" - Name 209 "Depth" - Name 213 "g_sSamp2d" - Name 216 "g_tTex1df4a" - Name 217 "g_tTex1df4" - Name 220 "g_tTex1di4" - Name 223 "g_tTex1du4" - Name 226 "g_tTex3df4" - Name 229 "g_tTex3di4" - Name 232 "g_tTex3du4" - Name 234 "c1" - Name 236 "c4" + Name 22 "$Global" + MemberName 22($Global) 0 "c1" + MemberName 22($Global) 1 "c2" + MemberName 22($Global) 2 "c3" + MemberName 22($Global) 3 "c4" + Name 24 "" + Name 34 "txval01" + Name 37 "g_tTex2di4" + Name 48 "txval02" + Name 51 "g_tTex2du4" + Name 59 "txval10" + Name 66 "txval11" + Name 73 "txval12" + Name 80 "txval20" + Name 88 "txval21" + Name 95 "txval22" + Name 102 "txval30" + Name 110 "txval31" + Name 117 "txval32" + Name 124 "txval40" + Name 127 "g_tTexcdf4" + Name 136 "txval41" + Name 139 "g_tTexcdi4" + Name 147 "txval42" + Name 150 "g_tTexcdu4" + Name 158 "txval50" + Name 165 "txval51" + Name 172 "txval52" + Name 179 "txval60" + Name 186 "txval61" + Name 193 "txval62" + Name 200 "txval70" + Name 207 "txval71" + Name 214 "txval72" + Name 221 "PS_OUTPUT" + MemberName 221(PS_OUTPUT) 0 "Color" + MemberName 221(PS_OUTPUT) 1 "Depth" + Name 223 "psout" + Name 230 "Color" + Name 234 "Depth" + Name 238 "g_sSamp2d" + Name 241 "g_tTex1df4a" + Name 242 "g_tTex1df4" + Name 245 "g_tTex1di4" + Name 248 "g_tTex1du4" + Name 251 "g_tTex3df4" + Name 254 "g_tTex3di4" + Name 257 "g_tTex3du4" Decorate 12(g_tTex2df4) DescriptorSet 0 Decorate 16(g_sSamp) DescriptorSet 0 Decorate 16(g_sSamp) Binding 0 - Decorate 32(g_tTex2di4) DescriptorSet 0 - Decorate 45(g_tTex2du4) DescriptorSet 0 - Decorate 112(g_tTexcdf4) DescriptorSet 0 - Decorate 125(g_tTexcdi4) DescriptorSet 0 - Decorate 135(g_tTexcdu4) DescriptorSet 0 - Decorate 205(Color) Location 0 - Decorate 209(Depth) BuiltIn FragDepth - Decorate 213(g_sSamp2d) DescriptorSet 0 - Decorate 216(g_tTex1df4a) DescriptorSet 0 - Decorate 216(g_tTex1df4a) Binding 1 - Decorate 217(g_tTex1df4) DescriptorSet 0 - Decorate 217(g_tTex1df4) Binding 0 - Decorate 220(g_tTex1di4) DescriptorSet 0 - Decorate 223(g_tTex1du4) DescriptorSet 0 - Decorate 226(g_tTex3df4) DescriptorSet 0 - Decorate 229(g_tTex3di4) DescriptorSet 0 - Decorate 232(g_tTex3du4) DescriptorSet 0 + MemberDecorate 22($Global) 0 Offset 0 + MemberDecorate 22($Global) 1 Offset 8 + MemberDecorate 22($Global) 2 Offset 16 + MemberDecorate 22($Global) 3 Offset 32 + Decorate 22($Global) Block + Decorate 24 DescriptorSet 0 + Decorate 37(g_tTex2di4) DescriptorSet 0 + Decorate 51(g_tTex2du4) DescriptorSet 0 + Decorate 127(g_tTexcdf4) DescriptorSet 0 + Decorate 139(g_tTexcdi4) DescriptorSet 0 + Decorate 150(g_tTexcdu4) DescriptorSet 0 + Decorate 230(Color) Location 0 + Decorate 234(Depth) BuiltIn FragDepth + Decorate 238(g_sSamp2d) DescriptorSet 0 + Decorate 241(g_tTex1df4a) DescriptorSet 0 + Decorate 241(g_tTex1df4a) Binding 1 + Decorate 242(g_tTex1df4) DescriptorSet 0 + Decorate 242(g_tTex1df4) Binding 0 + Decorate 245(g_tTex1di4) DescriptorSet 0 + Decorate 248(g_tTex1du4) DescriptorSet 0 + Decorate 251(g_tTex3df4) DescriptorSet 0 + Decorate 254(g_tTex3di4) DescriptorSet 0 + Decorate 257(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -698,254 +844,275 @@ gl_FragCoord origin is upper left 16(g_sSamp): 15(ptr) Variable UniformConstant 18: TypeSampledImage 10 20: TypeVector 6(float) 2 - 21: TypePointer UniformConstant 20(fvec2) - 22(c2): 21(ptr) Variable UniformConstant - 24: TypeInt 32 1 - 25: 24(int) Constant 0 - 27: TypeVector 24(int) 4 - 28: TypePointer Function 27(ivec4) - 30: TypeImage 24(int) 2D sampled format:Unknown - 31: TypePointer UniformConstant 30 - 32(g_tTex2di4): 31(ptr) Variable UniformConstant - 35: TypeSampledImage 30 - 39: TypeInt 32 0 - 40: TypeVector 39(int) 4 - 41: TypePointer Function 40(ivec4) - 43: TypeImage 39(int) 2D sampled format:Unknown - 44: TypePointer UniformConstant 43 - 45(g_tTex2du4): 44(ptr) Variable UniformConstant - 48: TypeSampledImage 43 - 57: 24(int) Constant 1 - 76: 24(int) Constant 2 - 95: 24(int) Constant 3 - 110: TypeImage 6(float) Cube sampled format:Unknown - 111: TypePointer UniformConstant 110 - 112(g_tTexcdf4): 111(ptr) Variable UniformConstant - 115: TypeSampledImage 110 - 117: TypeVector 6(float) 3 - 118: TypePointer UniformConstant 117(fvec3) - 119(c3): 118(ptr) Variable UniformConstant - 123: TypeImage 24(int) Cube sampled format:Unknown - 124: TypePointer UniformConstant 123 - 125(g_tTexcdi4): 124(ptr) Variable UniformConstant - 128: TypeSampledImage 123 - 133: TypeImage 39(int) Cube sampled format:Unknown - 134: TypePointer UniformConstant 133 - 135(g_tTexcdu4): 134(ptr) Variable UniformConstant - 138: TypeSampledImage 133 - 196(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) - 197: TypePointer Function 196(PS_OUTPUT) - 199: 6(float) Constant 1065353216 - 200: 7(fvec4) ConstantComposite 199 199 199 199 - 202: TypePointer Function 6(float) - 204: TypePointer Output 7(fvec4) - 205(Color): 204(ptr) Variable Output - 208: TypePointer Output 6(float) - 209(Depth): 208(ptr) Variable Output - 213(g_sSamp2d): 15(ptr) Variable UniformConstant - 214: TypeImage 6(float) 1D sampled format:Unknown - 215: TypePointer UniformConstant 214 -216(g_tTex1df4a): 215(ptr) Variable UniformConstant - 217(g_tTex1df4): 215(ptr) Variable UniformConstant - 218: TypeImage 24(int) 1D sampled format:Unknown - 219: TypePointer UniformConstant 218 - 220(g_tTex1di4): 219(ptr) Variable UniformConstant - 221: TypeImage 39(int) 1D sampled format:Unknown - 222: TypePointer UniformConstant 221 - 223(g_tTex1du4): 222(ptr) Variable UniformConstant - 224: TypeImage 6(float) 3D sampled format:Unknown - 225: TypePointer UniformConstant 224 - 226(g_tTex3df4): 225(ptr) Variable UniformConstant - 227: TypeImage 24(int) 3D sampled format:Unknown - 228: TypePointer UniformConstant 227 - 229(g_tTex3di4): 228(ptr) Variable UniformConstant - 230: TypeImage 39(int) 3D sampled format:Unknown - 231: TypePointer UniformConstant 230 - 232(g_tTex3du4): 231(ptr) Variable UniformConstant - 233: TypePointer UniformConstant 6(float) - 234(c1): 233(ptr) Variable UniformConstant - 235: TypePointer UniformConstant 7(fvec4) - 236(c4): 235(ptr) Variable UniformConstant + 21: TypeVector 6(float) 3 + 22($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) + 23: TypePointer Uniform 22($Global) + 24: 23(ptr) Variable Uniform + 25: TypeInt 32 1 + 26: 25(int) Constant 1 + 27: TypePointer Uniform 20(fvec2) + 30: 25(int) Constant 0 + 32: TypeVector 25(int) 4 + 33: TypePointer Function 32(ivec4) + 35: TypeImage 25(int) 2D sampled format:Unknown + 36: TypePointer UniformConstant 35 + 37(g_tTex2di4): 36(ptr) Variable UniformConstant + 40: TypeSampledImage 35 + 45: TypeInt 32 0 + 46: TypeVector 45(int) 4 + 47: TypePointer Function 46(ivec4) + 49: TypeImage 45(int) 2D sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2du4): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 86: 25(int) Constant 2 + 108: 25(int) Constant 3 + 125: TypeImage 6(float) Cube sampled format:Unknown + 126: TypePointer UniformConstant 125 + 127(g_tTexcdf4): 126(ptr) Variable UniformConstant + 130: TypeSampledImage 125 + 132: TypePointer Uniform 21(fvec3) + 137: TypeImage 25(int) Cube sampled format:Unknown + 138: TypePointer UniformConstant 137 + 139(g_tTexcdi4): 138(ptr) Variable UniformConstant + 142: TypeSampledImage 137 + 148: TypeImage 45(int) Cube sampled format:Unknown + 149: TypePointer UniformConstant 148 + 150(g_tTexcdu4): 149(ptr) Variable UniformConstant + 153: TypeSampledImage 148 + 221(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 222: TypePointer Function 221(PS_OUTPUT) + 224: 6(float) Constant 1065353216 + 225: 7(fvec4) ConstantComposite 224 224 224 224 + 227: TypePointer Function 6(float) + 229: TypePointer Output 7(fvec4) + 230(Color): 229(ptr) Variable Output + 233: TypePointer Output 6(float) + 234(Depth): 233(ptr) Variable Output + 238(g_sSamp2d): 15(ptr) Variable UniformConstant + 239: TypeImage 6(float) 1D sampled format:Unknown + 240: TypePointer UniformConstant 239 +241(g_tTex1df4a): 240(ptr) Variable UniformConstant + 242(g_tTex1df4): 240(ptr) Variable UniformConstant + 243: TypeImage 25(int) 1D sampled format:Unknown + 244: TypePointer UniformConstant 243 + 245(g_tTex1di4): 244(ptr) Variable UniformConstant + 246: TypeImage 45(int) 1D sampled format:Unknown + 247: TypePointer UniformConstant 246 + 248(g_tTex1du4): 247(ptr) Variable UniformConstant + 249: TypeImage 6(float) 3D sampled format:Unknown + 250: TypePointer UniformConstant 249 + 251(g_tTex3df4): 250(ptr) Variable UniformConstant + 252: TypeImage 25(int) 3D sampled format:Unknown + 253: TypePointer UniformConstant 252 + 254(g_tTex3di4): 253(ptr) Variable UniformConstant + 255: TypeImage 45(int) 3D sampled format:Unknown + 256: TypePointer UniformConstant 255 + 257(g_tTex3du4): 256(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(txval00): 8(ptr) Variable Function - 29(txval01): 28(ptr) Variable Function - 42(txval02): 41(ptr) Variable Function - 52(txval10): 8(ptr) Variable Function - 59(txval11): 28(ptr) Variable Function - 65(txval12): 41(ptr) Variable Function - 71(txval20): 8(ptr) Variable Function - 78(txval21): 28(ptr) Variable Function - 84(txval22): 41(ptr) Variable Function - 90(txval30): 8(ptr) Variable Function - 97(txval31): 28(ptr) Variable Function - 103(txval32): 41(ptr) Variable Function - 109(txval40): 8(ptr) Variable Function - 122(txval41): 28(ptr) Variable Function - 132(txval42): 41(ptr) Variable Function - 142(txval50): 8(ptr) Variable Function - 148(txval51): 28(ptr) Variable Function - 154(txval52): 41(ptr) Variable Function - 160(txval60): 8(ptr) Variable Function - 166(txval61): 28(ptr) Variable Function - 172(txval62): 41(ptr) Variable Function - 178(txval70): 8(ptr) Variable Function - 184(txval71): 28(ptr) Variable Function - 190(txval72): 41(ptr) Variable Function - 198(psout): 197(ptr) Variable Function + 34(txval01): 33(ptr) Variable Function + 48(txval02): 47(ptr) Variable Function + 59(txval10): 8(ptr) Variable Function + 66(txval11): 33(ptr) Variable Function + 73(txval12): 47(ptr) Variable Function + 80(txval20): 8(ptr) Variable Function + 88(txval21): 33(ptr) Variable Function + 95(txval22): 47(ptr) Variable Function + 102(txval30): 8(ptr) Variable Function + 110(txval31): 33(ptr) Variable Function + 117(txval32): 47(ptr) Variable Function + 124(txval40): 8(ptr) Variable Function + 136(txval41): 33(ptr) Variable Function + 147(txval42): 47(ptr) Variable Function + 158(txval50): 8(ptr) Variable Function + 165(txval51): 33(ptr) Variable Function + 172(txval52): 47(ptr) Variable Function + 179(txval60): 8(ptr) Variable Function + 186(txval61): 33(ptr) Variable Function + 193(txval62): 47(ptr) Variable Function + 200(txval70): 8(ptr) Variable Function + 207(txval71): 33(ptr) Variable Function + 214(txval72): 47(ptr) Variable Function + 223(psout): 222(ptr) Variable Function 13: 10 Load 12(g_tTex2df4) 17: 14 Load 16(g_sSamp) 19: 18 SampledImage 13 17 - 23: 20(fvec2) Load 22(c2) - 26: 7(fvec4) ImageGather 19 23 25 - Store 9(txval00) 26 - 33: 30 Load 32(g_tTex2di4) - 34: 14 Load 16(g_sSamp) - 36: 35 SampledImage 33 34 - 37: 20(fvec2) Load 22(c2) - 38: 27(ivec4) ImageGather 36 37 25 - Store 29(txval01) 38 - 46: 43 Load 45(g_tTex2du4) - 47: 14 Load 16(g_sSamp) - 49: 48 SampledImage 46 47 - 50: 20(fvec2) Load 22(c2) - 51: 40(ivec4) ImageGather 49 50 25 - Store 42(txval02) 51 - 53: 10 Load 12(g_tTex2df4) - 54: 14 Load 16(g_sSamp) - 55: 18 SampledImage 53 54 - 56: 20(fvec2) Load 22(c2) - 58: 7(fvec4) ImageGather 55 56 57 - Store 52(txval10) 58 - 60: 30 Load 32(g_tTex2di4) + 28: 27(ptr) AccessChain 24 26 + 29: 20(fvec2) Load 28 + 31: 7(fvec4) ImageGather 19 29 30 + Store 9(txval00) 31 + 38: 35 Load 37(g_tTex2di4) + 39: 14 Load 16(g_sSamp) + 41: 40 SampledImage 38 39 + 42: 27(ptr) AccessChain 24 26 + 43: 20(fvec2) Load 42 + 44: 32(ivec4) ImageGather 41 43 30 + Store 34(txval01) 44 + 52: 49 Load 51(g_tTex2du4) + 53: 14 Load 16(g_sSamp) + 55: 54 SampledImage 52 53 + 56: 27(ptr) AccessChain 24 26 + 57: 20(fvec2) Load 56 + 58: 46(ivec4) ImageGather 55 57 30 + Store 48(txval02) 58 + 60: 10 Load 12(g_tTex2df4) 61: 14 Load 16(g_sSamp) - 62: 35 SampledImage 60 61 - 63: 20(fvec2) Load 22(c2) - 64: 27(ivec4) ImageGather 62 63 57 - Store 59(txval11) 64 - 66: 43 Load 45(g_tTex2du4) - 67: 14 Load 16(g_sSamp) - 68: 48 SampledImage 66 67 - 69: 20(fvec2) Load 22(c2) - 70: 40(ivec4) ImageGather 68 69 57 - Store 65(txval12) 70 - 72: 10 Load 12(g_tTex2df4) - 73: 14 Load 16(g_sSamp) - 74: 18 SampledImage 72 73 - 75: 20(fvec2) Load 22(c2) - 77: 7(fvec4) ImageGather 74 75 76 - Store 71(txval20) 77 - 79: 30 Load 32(g_tTex2di4) - 80: 14 Load 16(g_sSamp) - 81: 35 SampledImage 79 80 - 82: 20(fvec2) Load 22(c2) - 83: 27(ivec4) ImageGather 81 82 76 - Store 78(txval21) 83 - 85: 43 Load 45(g_tTex2du4) - 86: 14 Load 16(g_sSamp) - 87: 48 SampledImage 85 86 - 88: 20(fvec2) Load 22(c2) - 89: 40(ivec4) ImageGather 87 88 76 - Store 84(txval22) 89 - 91: 10 Load 12(g_tTex2df4) - 92: 14 Load 16(g_sSamp) - 93: 18 SampledImage 91 92 - 94: 20(fvec2) Load 22(c2) - 96: 7(fvec4) ImageGather 93 94 95 - Store 90(txval30) 96 - 98: 30 Load 32(g_tTex2di4) - 99: 14 Load 16(g_sSamp) - 100: 35 SampledImage 98 99 - 101: 20(fvec2) Load 22(c2) - 102: 27(ivec4) ImageGather 100 101 95 - Store 97(txval31) 102 - 104: 43 Load 45(g_tTex2du4) - 105: 14 Load 16(g_sSamp) - 106: 48 SampledImage 104 105 - 107: 20(fvec2) Load 22(c2) - 108: 40(ivec4) ImageGather 106 107 95 - Store 103(txval32) 108 - 113: 110 Load 112(g_tTexcdf4) - 114: 14 Load 16(g_sSamp) - 116: 115 SampledImage 113 114 - 120: 117(fvec3) Load 119(c3) - 121: 7(fvec4) ImageGather 116 120 25 - Store 109(txval40) 121 - 126: 123 Load 125(g_tTexcdi4) - 127: 14 Load 16(g_sSamp) - 129: 128 SampledImage 126 127 - 130: 117(fvec3) Load 119(c3) - 131: 27(ivec4) ImageGather 129 130 25 - Store 122(txval41) 131 - 136: 133 Load 135(g_tTexcdu4) - 137: 14 Load 16(g_sSamp) - 139: 138 SampledImage 136 137 - 140: 117(fvec3) Load 119(c3) - 141: 40(ivec4) ImageGather 139 140 25 - Store 132(txval42) 141 - 143: 110 Load 112(g_tTexcdf4) - 144: 14 Load 16(g_sSamp) - 145: 115 SampledImage 143 144 - 146: 117(fvec3) Load 119(c3) - 147: 7(fvec4) ImageGather 145 146 57 - Store 142(txval50) 147 - 149: 123 Load 125(g_tTexcdi4) - 150: 14 Load 16(g_sSamp) - 151: 128 SampledImage 149 150 - 152: 117(fvec3) Load 119(c3) - 153: 27(ivec4) ImageGather 151 152 57 - Store 148(txval51) 153 - 155: 133 Load 135(g_tTexcdu4) - 156: 14 Load 16(g_sSamp) - 157: 138 SampledImage 155 156 - 158: 117(fvec3) Load 119(c3) - 159: 40(ivec4) ImageGather 157 158 57 - Store 154(txval52) 159 - 161: 110 Load 112(g_tTexcdf4) - 162: 14 Load 16(g_sSamp) - 163: 115 SampledImage 161 162 - 164: 117(fvec3) Load 119(c3) - 165: 7(fvec4) ImageGather 163 164 76 - Store 160(txval60) 165 - 167: 123 Load 125(g_tTexcdi4) - 168: 14 Load 16(g_sSamp) - 169: 128 SampledImage 167 168 - 170: 117(fvec3) Load 119(c3) - 171: 27(ivec4) ImageGather 169 170 76 - Store 166(txval61) 171 - 173: 133 Load 135(g_tTexcdu4) + 62: 18 SampledImage 60 61 + 63: 27(ptr) AccessChain 24 26 + 64: 20(fvec2) Load 63 + 65: 7(fvec4) ImageGather 62 64 26 + Store 59(txval10) 65 + 67: 35 Load 37(g_tTex2di4) + 68: 14 Load 16(g_sSamp) + 69: 40 SampledImage 67 68 + 70: 27(ptr) AccessChain 24 26 + 71: 20(fvec2) Load 70 + 72: 32(ivec4) ImageGather 69 71 26 + Store 66(txval11) 72 + 74: 49 Load 51(g_tTex2du4) + 75: 14 Load 16(g_sSamp) + 76: 54 SampledImage 74 75 + 77: 27(ptr) AccessChain 24 26 + 78: 20(fvec2) Load 77 + 79: 46(ivec4) ImageGather 76 78 26 + Store 73(txval12) 79 + 81: 10 Load 12(g_tTex2df4) + 82: 14 Load 16(g_sSamp) + 83: 18 SampledImage 81 82 + 84: 27(ptr) AccessChain 24 26 + 85: 20(fvec2) Load 84 + 87: 7(fvec4) ImageGather 83 85 86 + Store 80(txval20) 87 + 89: 35 Load 37(g_tTex2di4) + 90: 14 Load 16(g_sSamp) + 91: 40 SampledImage 89 90 + 92: 27(ptr) AccessChain 24 26 + 93: 20(fvec2) Load 92 + 94: 32(ivec4) ImageGather 91 93 86 + Store 88(txval21) 94 + 96: 49 Load 51(g_tTex2du4) + 97: 14 Load 16(g_sSamp) + 98: 54 SampledImage 96 97 + 99: 27(ptr) AccessChain 24 26 + 100: 20(fvec2) Load 99 + 101: 46(ivec4) ImageGather 98 100 86 + Store 95(txval22) 101 + 103: 10 Load 12(g_tTex2df4) + 104: 14 Load 16(g_sSamp) + 105: 18 SampledImage 103 104 + 106: 27(ptr) AccessChain 24 26 + 107: 20(fvec2) Load 106 + 109: 7(fvec4) ImageGather 105 107 108 + Store 102(txval30) 109 + 111: 35 Load 37(g_tTex2di4) + 112: 14 Load 16(g_sSamp) + 113: 40 SampledImage 111 112 + 114: 27(ptr) AccessChain 24 26 + 115: 20(fvec2) Load 114 + 116: 32(ivec4) ImageGather 113 115 108 + Store 110(txval31) 116 + 118: 49 Load 51(g_tTex2du4) + 119: 14 Load 16(g_sSamp) + 120: 54 SampledImage 118 119 + 121: 27(ptr) AccessChain 24 26 + 122: 20(fvec2) Load 121 + 123: 46(ivec4) ImageGather 120 122 108 + Store 117(txval32) 123 + 128: 125 Load 127(g_tTexcdf4) + 129: 14 Load 16(g_sSamp) + 131: 130 SampledImage 128 129 + 133: 132(ptr) AccessChain 24 86 + 134: 21(fvec3) Load 133 + 135: 7(fvec4) ImageGather 131 134 30 + Store 124(txval40) 135 + 140: 137 Load 139(g_tTexcdi4) + 141: 14 Load 16(g_sSamp) + 143: 142 SampledImage 140 141 + 144: 132(ptr) AccessChain 24 86 + 145: 21(fvec3) Load 144 + 146: 32(ivec4) ImageGather 143 145 30 + Store 136(txval41) 146 + 151: 148 Load 150(g_tTexcdu4) + 152: 14 Load 16(g_sSamp) + 154: 153 SampledImage 151 152 + 155: 132(ptr) AccessChain 24 86 + 156: 21(fvec3) Load 155 + 157: 46(ivec4) ImageGather 154 156 30 + Store 147(txval42) 157 + 159: 125 Load 127(g_tTexcdf4) + 160: 14 Load 16(g_sSamp) + 161: 130 SampledImage 159 160 + 162: 132(ptr) AccessChain 24 86 + 163: 21(fvec3) Load 162 + 164: 7(fvec4) ImageGather 161 163 26 + Store 158(txval50) 164 + 166: 137 Load 139(g_tTexcdi4) + 167: 14 Load 16(g_sSamp) + 168: 142 SampledImage 166 167 + 169: 132(ptr) AccessChain 24 86 + 170: 21(fvec3) Load 169 + 171: 32(ivec4) ImageGather 168 170 26 + Store 165(txval51) 171 + 173: 148 Load 150(g_tTexcdu4) 174: 14 Load 16(g_sSamp) - 175: 138 SampledImage 173 174 - 176: 117(fvec3) Load 119(c3) - 177: 40(ivec4) ImageGather 175 176 76 - Store 172(txval62) 177 - 179: 110 Load 112(g_tTexcdf4) - 180: 14 Load 16(g_sSamp) - 181: 115 SampledImage 179 180 - 182: 117(fvec3) Load 119(c3) - 183: 7(fvec4) ImageGather 181 182 95 - Store 178(txval70) 183 - 185: 123 Load 125(g_tTexcdi4) - 186: 14 Load 16(g_sSamp) - 187: 128 SampledImage 185 186 - 188: 117(fvec3) Load 119(c3) - 189: 27(ivec4) ImageGather 187 188 95 - Store 184(txval71) 189 - 191: 133 Load 135(g_tTexcdu4) - 192: 14 Load 16(g_sSamp) - 193: 138 SampledImage 191 192 - 194: 117(fvec3) Load 119(c3) - 195: 40(ivec4) ImageGather 193 194 95 - Store 190(txval72) 195 - 201: 8(ptr) AccessChain 198(psout) 25 - Store 201 200 - 203: 202(ptr) AccessChain 198(psout) 57 - Store 203 199 - 206: 8(ptr) AccessChain 198(psout) 25 - 207: 7(fvec4) Load 206 - Store 205(Color) 207 - 210: 202(ptr) AccessChain 198(psout) 57 - 211: 6(float) Load 210 - Store 209(Depth) 211 + 175: 153 SampledImage 173 174 + 176: 132(ptr) AccessChain 24 86 + 177: 21(fvec3) Load 176 + 178: 46(ivec4) ImageGather 175 177 26 + Store 172(txval52) 178 + 180: 125 Load 127(g_tTexcdf4) + 181: 14 Load 16(g_sSamp) + 182: 130 SampledImage 180 181 + 183: 132(ptr) AccessChain 24 86 + 184: 21(fvec3) Load 183 + 185: 7(fvec4) ImageGather 182 184 86 + Store 179(txval60) 185 + 187: 137 Load 139(g_tTexcdi4) + 188: 14 Load 16(g_sSamp) + 189: 142 SampledImage 187 188 + 190: 132(ptr) AccessChain 24 86 + 191: 21(fvec3) Load 190 + 192: 32(ivec4) ImageGather 189 191 86 + Store 186(txval61) 192 + 194: 148 Load 150(g_tTexcdu4) + 195: 14 Load 16(g_sSamp) + 196: 153 SampledImage 194 195 + 197: 132(ptr) AccessChain 24 86 + 198: 21(fvec3) Load 197 + 199: 46(ivec4) ImageGather 196 198 86 + Store 193(txval62) 199 + 201: 125 Load 127(g_tTexcdf4) + 202: 14 Load 16(g_sSamp) + 203: 130 SampledImage 201 202 + 204: 132(ptr) AccessChain 24 86 + 205: 21(fvec3) Load 204 + 206: 7(fvec4) ImageGather 203 205 108 + Store 200(txval70) 206 + 208: 137 Load 139(g_tTexcdi4) + 209: 14 Load 16(g_sSamp) + 210: 142 SampledImage 208 209 + 211: 132(ptr) AccessChain 24 86 + 212: 21(fvec3) Load 211 + 213: 32(ivec4) ImageGather 210 212 108 + Store 207(txval71) 213 + 215: 148 Load 150(g_tTexcdu4) + 216: 14 Load 16(g_sSamp) + 217: 153 SampledImage 215 216 + 218: 132(ptr) AccessChain 24 86 + 219: 21(fvec3) Load 218 + 220: 46(ivec4) ImageGather 217 219 108 + Store 214(txval72) 220 + 226: 8(ptr) AccessChain 223(psout) 30 + Store 226 225 + 228: 227(ptr) AccessChain 223(psout) 26 + Store 228 224 + 231: 8(ptr) AccessChain 223(psout) 30 + 232: 7(fvec4) Load 231 + Store 230(Color) 232 + 235: 227(ptr) AccessChain 223(psout) 26 + 236: 6(float) Load 235 + Store 234(Depth) 236 Return FunctionEnd diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out index a869ba73..a04010f3 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gatherRGBA.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:39 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:39 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:39 Function Parameters: 0:? Sequence 0:46 Sequence @@ -12,8 +12,14 @@ gl_FragCoord origin is upper left 0:46 Construct combined texture-sampler (temp sampler2D) 0:46 'g_tTex2df4' (uniform texture2D) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:46 'c2' (uniform 2-component vector of float) -0:46 'o2' (uniform 2-component vector of int) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:47 Sequence @@ -23,8 +29,14 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp isampler2D) 0:47 'g_tTex2di4' (uniform itexture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 'c2' (uniform 2-component vector of float) -0:47 'o2' (uniform 2-component vector of int) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 1 (const uint) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) 0:47 Constant: 0:47 0 (const int) 0:48 Sequence @@ -34,8 +46,14 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp usampler2D) 0:48 'g_tTex2du4' (uniform utexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 'c2' (uniform 2-component vector of float) -0:48 'o2' (uniform 2-component vector of int) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 1 (const uint) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) 0:48 Constant: 0:48 0 (const int) 0:50 Sequence @@ -45,12 +63,27 @@ gl_FragCoord origin is upper left 0:50 Construct combined texture-sampler (temp sampler2D) 0:50 'g_tTex2df4' (uniform texture2D) 0:50 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:50 'c2' (uniform 2-component vector of float) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) 0:50 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) 0:50 Constant: 0:50 0 (const int) 0:51 Sequence @@ -60,12 +93,27 @@ gl_FragCoord origin is upper left 0:51 Construct combined texture-sampler (temp isampler2D) 0:51 'g_tTex2di4' (uniform itexture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:51 'c2' (uniform 2-component vector of float) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence @@ -75,12 +123,27 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp usampler2D) 0:52 'g_tTex2du4' (uniform utexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 'c2' (uniform 2-component vector of float) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) 0:52 Constant: 0:52 0 (const int) 0:62 Sequence @@ -90,8 +153,14 @@ gl_FragCoord origin is upper left 0:62 Construct combined texture-sampler (temp sampler2D) 0:62 'g_tTex2df4' (uniform texture2D) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:62 'c2' (uniform 2-component vector of float) -0:62 'o2' (uniform 2-component vector of int) +0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 1 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence @@ -101,8 +170,14 @@ gl_FragCoord origin is upper left 0:63 Construct combined texture-sampler (temp isampler2D) 0:63 'g_tTex2di4' (uniform itexture2D) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:63 'c2' (uniform 2-component vector of float) -0:63 'o2' (uniform 2-component vector of int) +0:63 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 1 (const uint) +0:63 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 5 (const uint) 0:63 Constant: 0:63 1 (const int) 0:64 Sequence @@ -112,8 +187,14 @@ gl_FragCoord origin is upper left 0:64 Construct combined texture-sampler (temp usampler2D) 0:64 'g_tTex2du4' (uniform utexture2D) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:64 'c2' (uniform 2-component vector of float) -0:64 'o2' (uniform 2-component vector of int) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 1 (const uint) +0:64 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 5 (const uint) 0:64 Constant: 0:64 1 (const int) 0:66 Sequence @@ -123,12 +204,27 @@ gl_FragCoord origin is upper left 0:66 Construct combined texture-sampler (temp sampler2D) 0:66 'g_tTex2df4' (uniform texture2D) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:66 'c2' (uniform 2-component vector of float) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 1 (const uint) 0:66 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) 0:66 Constant: 0:66 1 (const int) 0:67 Sequence @@ -138,12 +234,27 @@ gl_FragCoord origin is upper left 0:67 Construct combined texture-sampler (temp isampler2D) 0:67 'g_tTex2di4' (uniform itexture2D) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:67 'c2' (uniform 2-component vector of float) +0:67 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 1 (const uint) 0:67 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) 0:67 Constant: 0:67 1 (const int) 0:68 Sequence @@ -153,12 +264,27 @@ gl_FragCoord origin is upper left 0:68 Construct combined texture-sampler (temp usampler2D) 0:68 'g_tTex2du4' (uniform utexture2D) 0:68 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:68 'c2' (uniform 2-component vector of float) +0:68 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 1 (const uint) 0:68 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) 0:68 Constant: 0:68 1 (const int) 0:78 Sequence @@ -168,8 +294,14 @@ gl_FragCoord origin is upper left 0:78 Construct combined texture-sampler (temp sampler2D) 0:78 'g_tTex2df4' (uniform texture2D) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:78 'c2' (uniform 2-component vector of float) -0:78 'o2' (uniform 2-component vector of int) +0:78 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 1 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:79 Sequence @@ -179,8 +311,14 @@ gl_FragCoord origin is upper left 0:79 Construct combined texture-sampler (temp isampler2D) 0:79 'g_tTex2di4' (uniform itexture2D) 0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:79 'c2' (uniform 2-component vector of float) -0:79 'o2' (uniform 2-component vector of int) +0:79 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 1 (const uint) +0:79 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 5 (const uint) 0:79 Constant: 0:79 2 (const int) 0:80 Sequence @@ -190,8 +328,14 @@ gl_FragCoord origin is upper left 0:80 Construct combined texture-sampler (temp usampler2D) 0:80 'g_tTex2du4' (uniform utexture2D) 0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:80 'c2' (uniform 2-component vector of float) -0:80 'o2' (uniform 2-component vector of int) +0:80 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 1 (const uint) +0:80 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 5 (const uint) 0:80 Constant: 0:80 2 (const int) 0:82 Sequence @@ -201,12 +345,27 @@ gl_FragCoord origin is upper left 0:82 Construct combined texture-sampler (temp sampler2D) 0:82 'g_tTex2df4' (uniform texture2D) 0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:82 'c2' (uniform 2-component vector of float) +0:82 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 1 (const uint) 0:82 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) 0:82 Constant: 0:82 2 (const int) 0:83 Sequence @@ -216,12 +375,27 @@ gl_FragCoord origin is upper left 0:83 Construct combined texture-sampler (temp isampler2D) 0:83 'g_tTex2di4' (uniform itexture2D) 0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:83 'c2' (uniform 2-component vector of float) +0:83 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 1 (const uint) 0:83 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) 0:83 Constant: 0:83 2 (const int) 0:84 Sequence @@ -231,12 +405,27 @@ gl_FragCoord origin is upper left 0:84 Construct combined texture-sampler (temp usampler2D) 0:84 'g_tTex2du4' (uniform utexture2D) 0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:84 'c2' (uniform 2-component vector of float) +0:84 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 1 (const uint) 0:84 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) 0:84 Constant: 0:84 2 (const int) 0:94 Sequence @@ -246,8 +435,14 @@ gl_FragCoord origin is upper left 0:94 Construct combined texture-sampler (temp sampler2D) 0:94 'g_tTex2df4' (uniform texture2D) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:94 'c2' (uniform 2-component vector of float) -0:94 'o2' (uniform 2-component vector of int) +0:94 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 1 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:95 Sequence @@ -257,8 +452,14 @@ gl_FragCoord origin is upper left 0:95 Construct combined texture-sampler (temp isampler2D) 0:95 'g_tTex2di4' (uniform itexture2D) 0:95 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:95 'c2' (uniform 2-component vector of float) -0:95 'o2' (uniform 2-component vector of int) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 1 (const uint) +0:95 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 5 (const uint) 0:95 Constant: 0:95 3 (const int) 0:96 Sequence @@ -268,8 +469,14 @@ gl_FragCoord origin is upper left 0:96 Construct combined texture-sampler (temp usampler2D) 0:96 'g_tTex2du4' (uniform utexture2D) 0:96 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:96 'c2' (uniform 2-component vector of float) -0:96 'o2' (uniform 2-component vector of int) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 1 (const uint) +0:96 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 5 (const uint) 0:96 Constant: 0:96 3 (const int) 0:98 Sequence @@ -279,12 +486,27 @@ gl_FragCoord origin is upper left 0:98 Construct combined texture-sampler (temp sampler2D) 0:98 'g_tTex2df4' (uniform texture2D) 0:98 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:98 'c2' (uniform 2-component vector of float) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 1 (const uint) 0:98 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) 0:98 Constant: 0:98 3 (const int) 0:99 Sequence @@ -294,12 +516,27 @@ gl_FragCoord origin is upper left 0:99 Construct combined texture-sampler (temp isampler2D) 0:99 'g_tTex2di4' (uniform itexture2D) 0:99 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:99 'c2' (uniform 2-component vector of float) +0:99 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 1 (const uint) 0:99 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) 0:99 Constant: 0:99 3 (const int) 0:100 Sequence @@ -309,12 +546,27 @@ gl_FragCoord origin is upper left 0:100 Construct combined texture-sampler (temp usampler2D) 0:100 'g_tTex2du4' (uniform utexture2D) 0:100 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:100 'c2' (uniform 2-component vector of float) +0:100 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 1 (const uint) 0:100 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) 0:100 Constant: 0:100 3 (const int) 0:112 move second child to first child (temp 4-component vector of float) @@ -365,16 +617,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -383,7 +628,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:39 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:39 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:39 Function Parameters: 0:? Sequence 0:46 Sequence @@ -393,8 +638,14 @@ gl_FragCoord origin is upper left 0:46 Construct combined texture-sampler (temp sampler2D) 0:46 'g_tTex2df4' (uniform texture2D) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:46 'c2' (uniform 2-component vector of float) -0:46 'o2' (uniform 2-component vector of int) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:47 Sequence @@ -404,8 +655,14 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp isampler2D) 0:47 'g_tTex2di4' (uniform itexture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 'c2' (uniform 2-component vector of float) -0:47 'o2' (uniform 2-component vector of int) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 1 (const uint) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) 0:47 Constant: 0:47 0 (const int) 0:48 Sequence @@ -415,8 +672,14 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp usampler2D) 0:48 'g_tTex2du4' (uniform utexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 'c2' (uniform 2-component vector of float) -0:48 'o2' (uniform 2-component vector of int) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 1 (const uint) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) 0:48 Constant: 0:48 0 (const int) 0:50 Sequence @@ -426,12 +689,27 @@ gl_FragCoord origin is upper left 0:50 Construct combined texture-sampler (temp sampler2D) 0:50 'g_tTex2df4' (uniform texture2D) 0:50 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:50 'c2' (uniform 2-component vector of float) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) 0:50 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) -0:50 'o2' (uniform 2-component vector of int) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) 0:50 Constant: 0:50 0 (const int) 0:51 Sequence @@ -441,12 +719,27 @@ gl_FragCoord origin is upper left 0:51 Construct combined texture-sampler (temp isampler2D) 0:51 'g_tTex2di4' (uniform itexture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:51 'c2' (uniform 2-component vector of float) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) -0:51 'o2' (uniform 2-component vector of int) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) 0:51 Constant: 0:51 0 (const int) 0:52 Sequence @@ -456,12 +749,27 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp usampler2D) 0:52 'g_tTex2du4' (uniform utexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 'c2' (uniform 2-component vector of float) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) -0:52 'o2' (uniform 2-component vector of int) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) 0:52 Constant: 0:52 0 (const int) 0:62 Sequence @@ -471,8 +779,14 @@ gl_FragCoord origin is upper left 0:62 Construct combined texture-sampler (temp sampler2D) 0:62 'g_tTex2df4' (uniform texture2D) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:62 'c2' (uniform 2-component vector of float) -0:62 'o2' (uniform 2-component vector of int) +0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 1 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:63 Sequence @@ -482,8 +796,14 @@ gl_FragCoord origin is upper left 0:63 Construct combined texture-sampler (temp isampler2D) 0:63 'g_tTex2di4' (uniform itexture2D) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:63 'c2' (uniform 2-component vector of float) -0:63 'o2' (uniform 2-component vector of int) +0:63 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 1 (const uint) +0:63 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 5 (const uint) 0:63 Constant: 0:63 1 (const int) 0:64 Sequence @@ -493,8 +813,14 @@ gl_FragCoord origin is upper left 0:64 Construct combined texture-sampler (temp usampler2D) 0:64 'g_tTex2du4' (uniform utexture2D) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:64 'c2' (uniform 2-component vector of float) -0:64 'o2' (uniform 2-component vector of int) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 1 (const uint) +0:64 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 5 (const uint) 0:64 Constant: 0:64 1 (const int) 0:66 Sequence @@ -504,12 +830,27 @@ gl_FragCoord origin is upper left 0:66 Construct combined texture-sampler (temp sampler2D) 0:66 'g_tTex2df4' (uniform texture2D) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:66 'c2' (uniform 2-component vector of float) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 1 (const uint) 0:66 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) -0:66 'o2' (uniform 2-component vector of int) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) 0:66 Constant: 0:66 1 (const int) 0:67 Sequence @@ -519,12 +860,27 @@ gl_FragCoord origin is upper left 0:67 Construct combined texture-sampler (temp isampler2D) 0:67 'g_tTex2di4' (uniform itexture2D) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:67 'c2' (uniform 2-component vector of float) +0:67 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 1 (const uint) 0:67 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) -0:67 'o2' (uniform 2-component vector of int) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) 0:67 Constant: 0:67 1 (const int) 0:68 Sequence @@ -534,12 +890,27 @@ gl_FragCoord origin is upper left 0:68 Construct combined texture-sampler (temp usampler2D) 0:68 'g_tTex2du4' (uniform utexture2D) 0:68 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:68 'c2' (uniform 2-component vector of float) +0:68 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 1 (const uint) 0:68 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) -0:68 'o2' (uniform 2-component vector of int) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) 0:68 Constant: 0:68 1 (const int) 0:78 Sequence @@ -549,8 +920,14 @@ gl_FragCoord origin is upper left 0:78 Construct combined texture-sampler (temp sampler2D) 0:78 'g_tTex2df4' (uniform texture2D) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:78 'c2' (uniform 2-component vector of float) -0:78 'o2' (uniform 2-component vector of int) +0:78 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 1 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:79 Sequence @@ -560,8 +937,14 @@ gl_FragCoord origin is upper left 0:79 Construct combined texture-sampler (temp isampler2D) 0:79 'g_tTex2di4' (uniform itexture2D) 0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:79 'c2' (uniform 2-component vector of float) -0:79 'o2' (uniform 2-component vector of int) +0:79 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 1 (const uint) +0:79 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 5 (const uint) 0:79 Constant: 0:79 2 (const int) 0:80 Sequence @@ -571,8 +954,14 @@ gl_FragCoord origin is upper left 0:80 Construct combined texture-sampler (temp usampler2D) 0:80 'g_tTex2du4' (uniform utexture2D) 0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:80 'c2' (uniform 2-component vector of float) -0:80 'o2' (uniform 2-component vector of int) +0:80 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 1 (const uint) +0:80 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 5 (const uint) 0:80 Constant: 0:80 2 (const int) 0:82 Sequence @@ -582,12 +971,27 @@ gl_FragCoord origin is upper left 0:82 Construct combined texture-sampler (temp sampler2D) 0:82 'g_tTex2df4' (uniform texture2D) 0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:82 'c2' (uniform 2-component vector of float) +0:82 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 1 (const uint) 0:82 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) -0:82 'o2' (uniform 2-component vector of int) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) 0:82 Constant: 0:82 2 (const int) 0:83 Sequence @@ -597,12 +1001,27 @@ gl_FragCoord origin is upper left 0:83 Construct combined texture-sampler (temp isampler2D) 0:83 'g_tTex2di4' (uniform itexture2D) 0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:83 'c2' (uniform 2-component vector of float) +0:83 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 1 (const uint) 0:83 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) -0:83 'o2' (uniform 2-component vector of int) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) 0:83 Constant: 0:83 2 (const int) 0:84 Sequence @@ -612,12 +1031,27 @@ gl_FragCoord origin is upper left 0:84 Construct combined texture-sampler (temp usampler2D) 0:84 'g_tTex2du4' (uniform utexture2D) 0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:84 'c2' (uniform 2-component vector of float) +0:84 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 1 (const uint) 0:84 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) -0:84 'o2' (uniform 2-component vector of int) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) 0:84 Constant: 0:84 2 (const int) 0:94 Sequence @@ -627,8 +1061,14 @@ gl_FragCoord origin is upper left 0:94 Construct combined texture-sampler (temp sampler2D) 0:94 'g_tTex2df4' (uniform texture2D) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:94 'c2' (uniform 2-component vector of float) -0:94 'o2' (uniform 2-component vector of int) +0:94 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 1 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:95 Sequence @@ -638,8 +1078,14 @@ gl_FragCoord origin is upper left 0:95 Construct combined texture-sampler (temp isampler2D) 0:95 'g_tTex2di4' (uniform itexture2D) 0:95 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:95 'c2' (uniform 2-component vector of float) -0:95 'o2' (uniform 2-component vector of int) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 1 (const uint) +0:95 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 5 (const uint) 0:95 Constant: 0:95 3 (const int) 0:96 Sequence @@ -649,8 +1095,14 @@ gl_FragCoord origin is upper left 0:96 Construct combined texture-sampler (temp usampler2D) 0:96 'g_tTex2du4' (uniform utexture2D) 0:96 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:96 'c2' (uniform 2-component vector of float) -0:96 'o2' (uniform 2-component vector of int) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 1 (const uint) +0:96 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 5 (const uint) 0:96 Constant: 0:96 3 (const int) 0:98 Sequence @@ -660,12 +1112,27 @@ gl_FragCoord origin is upper left 0:98 Construct combined texture-sampler (temp sampler2D) 0:98 'g_tTex2df4' (uniform texture2D) 0:98 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:98 'c2' (uniform 2-component vector of float) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 1 (const uint) 0:98 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) -0:98 'o2' (uniform 2-component vector of int) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) 0:98 Constant: 0:98 3 (const int) 0:99 Sequence @@ -675,12 +1142,27 @@ gl_FragCoord origin is upper left 0:99 Construct combined texture-sampler (temp isampler2D) 0:99 'g_tTex2di4' (uniform itexture2D) 0:99 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:99 'c2' (uniform 2-component vector of float) +0:99 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 1 (const uint) 0:99 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) -0:99 'o2' (uniform 2-component vector of int) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) 0:99 Constant: 0:99 3 (const int) 0:100 Sequence @@ -690,12 +1172,27 @@ gl_FragCoord origin is upper left 0:100 Construct combined texture-sampler (temp usampler2D) 0:100 'g_tTex2du4' (uniform utexture2D) 0:100 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:100 'c2' (uniform 2-component vector of float) +0:100 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 1 (const uint) 0:100 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) -0:100 'o2' (uniform 2-component vector of int) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) 0:100 Constant: 0:100 3 (const int) 0:112 move second child to first child (temp 4-component vector of float) @@ -746,102 +1243,107 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 318 +// Id's are bound by 392 Capability Shader Capability ImageGatherExtended Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 267 271 + EntryPoint Fragment 4 "main" 355 359 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "txval001" Name 12 "g_tTex2df4" Name 16 "g_sSamp" - Name 22 "c2" - Name 27 "o2" - Name 33 "txval011" - Name 36 "g_tTex2di4" - Name 47 "txval021" - Name 50 "g_tTex2du4" - Name 58 "txval004" - Name 71 "txval014" - Name 82 "txval024" - Name 93 "txval101" - Name 101 "txval111" - Name 108 "txval121" - Name 115 "txval104" - Name 126 "txval114" - Name 137 "txval124" - Name 148 "txval201" - Name 156 "txval211" - Name 163 "txval221" - Name 170 "txval204" - Name 181 "txval214" - Name 192 "txval224" - Name 203 "txval301" - Name 211 "txval311" - Name 218 "txval321" - Name 225 "txval304" - Name 236 "txval314" - Name 247 "txval324" - Name 258 "PS_OUTPUT" - MemberName 258(PS_OUTPUT) 0 "Color" - MemberName 258(PS_OUTPUT) 1 "Depth" - Name 260 "psout" - Name 267 "Color" - Name 271 "Depth" - Name 275 "g_sSamp2d" - Name 278 "g_tTex1df4a" - Name 279 "g_tTex1df4" - Name 282 "g_tTex1di4" - Name 285 "g_tTex1du4" - Name 288 "g_tTex3df4" - Name 291 "g_tTex3di4" - Name 294 "g_tTex3du4" - Name 297 "g_tTexcdf4" - Name 300 "g_tTexcdi4" - Name 303 "g_tTexcdu4" - Name 305 "c1" - Name 308 "c3" - Name 310 "c4" - Name 312 "o1" - Name 315 "o3" - Name 317 "o4" + Name 26 "$Global" + MemberName 26($Global) 0 "c1" + MemberName 26($Global) 1 "c2" + MemberName 26($Global) 2 "c3" + MemberName 26($Global) 3 "c4" + MemberName 26($Global) 4 "o1" + MemberName 26($Global) 5 "o2" + MemberName 26($Global) 6 "o3" + MemberName 26($Global) 7 "o4" + Name 28 "" + Name 40 "txval011" + Name 43 "g_tTex2di4" + Name 56 "txval021" + Name 59 "g_tTex2du4" + Name 69 "txval004" + Name 87 "txval014" + Name 103 "txval024" + Name 119 "txval101" + Name 128 "txval111" + Name 137 "txval121" + Name 146 "txval104" + Name 162 "txval114" + Name 178 "txval124" + Name 194 "txval201" + Name 204 "txval211" + Name 213 "txval221" + Name 222 "txval204" + Name 238 "txval214" + Name 254 "txval224" + Name 270 "txval301" + Name 280 "txval311" + Name 289 "txval321" + Name 298 "txval304" + Name 314 "txval314" + Name 330 "txval324" + Name 346 "PS_OUTPUT" + MemberName 346(PS_OUTPUT) 0 "Color" + MemberName 346(PS_OUTPUT) 1 "Depth" + Name 348 "psout" + Name 355 "Color" + Name 359 "Depth" + Name 363 "g_sSamp2d" + Name 366 "g_tTex1df4a" + Name 367 "g_tTex1df4" + Name 370 "g_tTex1di4" + Name 373 "g_tTex1du4" + Name 376 "g_tTex3df4" + Name 379 "g_tTex3di4" + Name 382 "g_tTex3du4" + Name 385 "g_tTexcdf4" + Name 388 "g_tTexcdi4" + Name 391 "g_tTexcdu4" Decorate 12(g_tTex2df4) DescriptorSet 0 Decorate 16(g_sSamp) DescriptorSet 0 Decorate 16(g_sSamp) Binding 0 - Decorate 36(g_tTex2di4) DescriptorSet 0 - Decorate 50(g_tTex2du4) DescriptorSet 0 - Decorate 267(Color) Location 0 - Decorate 271(Depth) BuiltIn FragDepth - Decorate 275(g_sSamp2d) DescriptorSet 0 - Decorate 278(g_tTex1df4a) DescriptorSet 0 - Decorate 278(g_tTex1df4a) Binding 1 - Decorate 279(g_tTex1df4) DescriptorSet 0 - Decorate 279(g_tTex1df4) Binding 0 - Decorate 282(g_tTex1di4) DescriptorSet 0 - Decorate 285(g_tTex1du4) DescriptorSet 0 - Decorate 288(g_tTex3df4) DescriptorSet 0 - Decorate 291(g_tTex3di4) DescriptorSet 0 - Decorate 294(g_tTex3du4) DescriptorSet 0 - Decorate 297(g_tTexcdf4) DescriptorSet 0 - Decorate 300(g_tTexcdi4) DescriptorSet 0 - Decorate 303(g_tTexcdu4) DescriptorSet 0 + MemberDecorate 26($Global) 0 Offset 0 + MemberDecorate 26($Global) 1 Offset 8 + MemberDecorate 26($Global) 2 Offset 16 + MemberDecorate 26($Global) 3 Offset 32 + MemberDecorate 26($Global) 4 Offset 48 + MemberDecorate 26($Global) 5 Offset 56 + MemberDecorate 26($Global) 6 Offset 64 + MemberDecorate 26($Global) 7 Offset 80 + Decorate 26($Global) Block + Decorate 28 DescriptorSet 0 + Decorate 43(g_tTex2di4) DescriptorSet 0 + Decorate 59(g_tTex2du4) DescriptorSet 0 + Decorate 355(Color) Location 0 + Decorate 359(Depth) BuiltIn FragDepth + Decorate 363(g_sSamp2d) DescriptorSet 0 + Decorate 366(g_tTex1df4a) DescriptorSet 0 + Decorate 366(g_tTex1df4a) Binding 1 + Decorate 367(g_tTex1df4) DescriptorSet 0 + Decorate 367(g_tTex1df4) Binding 0 + Decorate 370(g_tTex1di4) DescriptorSet 0 + Decorate 373(g_tTex1du4) DescriptorSet 0 + Decorate 376(g_tTex3df4) DescriptorSet 0 + Decorate 379(g_tTex3di4) DescriptorSet 0 + Decorate 382(g_tTex3du4) DescriptorSet 0 + Decorate 385(g_tTexcdf4) DescriptorSet 0 + Decorate 388(g_tTexcdi4) DescriptorSet 0 + Decorate 391(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -855,335 +1357,409 @@ gl_FragCoord origin is upper left 16(g_sSamp): 15(ptr) Variable UniformConstant 18: TypeSampledImage 10 20: TypeVector 6(float) 2 - 21: TypePointer UniformConstant 20(fvec2) - 22(c2): 21(ptr) Variable UniformConstant - 24: TypeInt 32 1 - 25: TypeVector 24(int) 2 - 26: TypePointer UniformConstant 25(ivec2) - 27(o2): 26(ptr) Variable UniformConstant - 29: 24(int) Constant 0 - 31: TypeVector 24(int) 4 - 32: TypePointer Function 31(ivec4) - 34: TypeImage 24(int) 2D sampled format:Unknown - 35: TypePointer UniformConstant 34 - 36(g_tTex2di4): 35(ptr) Variable UniformConstant - 39: TypeSampledImage 34 - 44: TypeInt 32 0 - 45: TypeVector 44(int) 4 - 46: TypePointer Function 45(ivec4) - 48: TypeImage 44(int) 2D sampled format:Unknown - 49: TypePointer UniformConstant 48 - 50(g_tTex2du4): 49(ptr) Variable UniformConstant - 53: TypeSampledImage 48 - 67: 44(int) Constant 4 - 68: TypeArray 25(ivec2) 67 - 99: 24(int) Constant 1 - 154: 24(int) Constant 2 - 209: 24(int) Constant 3 - 258(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) - 259: TypePointer Function 258(PS_OUTPUT) - 261: 6(float) Constant 1065353216 - 262: 7(fvec4) ConstantComposite 261 261 261 261 - 264: TypePointer Function 6(float) - 266: TypePointer Output 7(fvec4) - 267(Color): 266(ptr) Variable Output - 270: TypePointer Output 6(float) - 271(Depth): 270(ptr) Variable Output - 275(g_sSamp2d): 15(ptr) Variable UniformConstant - 276: TypeImage 6(float) 1D sampled format:Unknown - 277: TypePointer UniformConstant 276 -278(g_tTex1df4a): 277(ptr) Variable UniformConstant - 279(g_tTex1df4): 277(ptr) Variable UniformConstant - 280: TypeImage 24(int) 1D sampled format:Unknown - 281: TypePointer UniformConstant 280 - 282(g_tTex1di4): 281(ptr) Variable UniformConstant - 283: TypeImage 44(int) 1D sampled format:Unknown - 284: TypePointer UniformConstant 283 - 285(g_tTex1du4): 284(ptr) Variable UniformConstant - 286: TypeImage 6(float) 3D sampled format:Unknown - 287: TypePointer UniformConstant 286 - 288(g_tTex3df4): 287(ptr) Variable UniformConstant - 289: TypeImage 24(int) 3D sampled format:Unknown - 290: TypePointer UniformConstant 289 - 291(g_tTex3di4): 290(ptr) Variable UniformConstant - 292: TypeImage 44(int) 3D sampled format:Unknown - 293: TypePointer UniformConstant 292 - 294(g_tTex3du4): 293(ptr) Variable UniformConstant - 295: TypeImage 6(float) Cube sampled format:Unknown - 296: TypePointer UniformConstant 295 - 297(g_tTexcdf4): 296(ptr) Variable UniformConstant - 298: TypeImage 24(int) Cube sampled format:Unknown - 299: TypePointer UniformConstant 298 - 300(g_tTexcdi4): 299(ptr) Variable UniformConstant - 301: TypeImage 44(int) Cube sampled format:Unknown - 302: TypePointer UniformConstant 301 - 303(g_tTexcdu4): 302(ptr) Variable UniformConstant - 304: TypePointer UniformConstant 6(float) - 305(c1): 304(ptr) Variable UniformConstant - 306: TypeVector 6(float) 3 - 307: TypePointer UniformConstant 306(fvec3) - 308(c3): 307(ptr) Variable UniformConstant - 309: TypePointer UniformConstant 7(fvec4) - 310(c4): 309(ptr) Variable UniformConstant - 311: TypePointer UniformConstant 24(int) - 312(o1): 311(ptr) Variable UniformConstant - 313: TypeVector 24(int) 3 - 314: TypePointer UniformConstant 313(ivec3) - 315(o3): 314(ptr) Variable UniformConstant - 316: TypePointer UniformConstant 31(ivec4) - 317(o4): 316(ptr) Variable UniformConstant + 21: TypeVector 6(float) 3 + 22: TypeInt 32 1 + 23: TypeVector 22(int) 2 + 24: TypeVector 22(int) 3 + 25: TypeVector 22(int) 4 + 26($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) 22(int) 23(ivec2) 24(ivec3) 25(ivec4) + 27: TypePointer Uniform 26($Global) + 28: 27(ptr) Variable Uniform + 29: 22(int) Constant 1 + 30: TypePointer Uniform 20(fvec2) + 33: 22(int) Constant 5 + 34: TypePointer Uniform 23(ivec2) + 37: 22(int) Constant 0 + 39: TypePointer Function 25(ivec4) + 41: TypeImage 22(int) 2D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex2di4): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 53: TypeInt 32 0 + 54: TypeVector 53(int) 4 + 55: TypePointer Function 54(ivec4) + 57: TypeImage 53(int) 2D sampled format:Unknown + 58: TypePointer UniformConstant 57 + 59(g_tTex2du4): 58(ptr) Variable UniformConstant + 62: TypeSampledImage 57 + 83: 53(int) Constant 4 + 84: TypeArray 23(ivec2) 83 + 202: 22(int) Constant 2 + 278: 22(int) Constant 3 + 346(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 347: TypePointer Function 346(PS_OUTPUT) + 349: 6(float) Constant 1065353216 + 350: 7(fvec4) ConstantComposite 349 349 349 349 + 352: TypePointer Function 6(float) + 354: TypePointer Output 7(fvec4) + 355(Color): 354(ptr) Variable Output + 358: TypePointer Output 6(float) + 359(Depth): 358(ptr) Variable Output + 363(g_sSamp2d): 15(ptr) Variable UniformConstant + 364: TypeImage 6(float) 1D sampled format:Unknown + 365: TypePointer UniformConstant 364 +366(g_tTex1df4a): 365(ptr) Variable UniformConstant + 367(g_tTex1df4): 365(ptr) Variable UniformConstant + 368: TypeImage 22(int) 1D sampled format:Unknown + 369: TypePointer UniformConstant 368 + 370(g_tTex1di4): 369(ptr) Variable UniformConstant + 371: TypeImage 53(int) 1D sampled format:Unknown + 372: TypePointer UniformConstant 371 + 373(g_tTex1du4): 372(ptr) Variable UniformConstant + 374: TypeImage 6(float) 3D sampled format:Unknown + 375: TypePointer UniformConstant 374 + 376(g_tTex3df4): 375(ptr) Variable UniformConstant + 377: TypeImage 22(int) 3D sampled format:Unknown + 378: TypePointer UniformConstant 377 + 379(g_tTex3di4): 378(ptr) Variable UniformConstant + 380: TypeImage 53(int) 3D sampled format:Unknown + 381: TypePointer UniformConstant 380 + 382(g_tTex3du4): 381(ptr) Variable UniformConstant + 383: TypeImage 6(float) Cube sampled format:Unknown + 384: TypePointer UniformConstant 383 + 385(g_tTexcdf4): 384(ptr) Variable UniformConstant + 386: TypeImage 22(int) Cube sampled format:Unknown + 387: TypePointer UniformConstant 386 + 388(g_tTexcdi4): 387(ptr) Variable UniformConstant + 389: TypeImage 53(int) Cube sampled format:Unknown + 390: TypePointer UniformConstant 389 + 391(g_tTexcdu4): 390(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(txval001): 8(ptr) Variable Function - 33(txval011): 32(ptr) Variable Function - 47(txval021): 46(ptr) Variable Function - 58(txval004): 8(ptr) Variable Function - 71(txval014): 32(ptr) Variable Function - 82(txval024): 46(ptr) Variable Function - 93(txval101): 8(ptr) Variable Function - 101(txval111): 32(ptr) Variable Function - 108(txval121): 46(ptr) Variable Function - 115(txval104): 8(ptr) Variable Function - 126(txval114): 32(ptr) Variable Function - 137(txval124): 46(ptr) Variable Function - 148(txval201): 8(ptr) Variable Function - 156(txval211): 32(ptr) Variable Function - 163(txval221): 46(ptr) Variable Function - 170(txval204): 8(ptr) Variable Function - 181(txval214): 32(ptr) Variable Function - 192(txval224): 46(ptr) Variable Function - 203(txval301): 8(ptr) Variable Function - 211(txval311): 32(ptr) Variable Function - 218(txval321): 46(ptr) Variable Function - 225(txval304): 8(ptr) Variable Function - 236(txval314): 32(ptr) Variable Function - 247(txval324): 46(ptr) Variable Function - 260(psout): 259(ptr) Variable Function + 40(txval011): 39(ptr) Variable Function + 56(txval021): 55(ptr) Variable Function + 69(txval004): 8(ptr) Variable Function + 87(txval014): 39(ptr) Variable Function + 103(txval024): 55(ptr) Variable Function + 119(txval101): 8(ptr) Variable Function + 128(txval111): 39(ptr) Variable Function + 137(txval121): 55(ptr) Variable Function + 146(txval104): 8(ptr) Variable Function + 162(txval114): 39(ptr) Variable Function + 178(txval124): 55(ptr) Variable Function + 194(txval201): 8(ptr) Variable Function + 204(txval211): 39(ptr) Variable Function + 213(txval221): 55(ptr) Variable Function + 222(txval204): 8(ptr) Variable Function + 238(txval214): 39(ptr) Variable Function + 254(txval224): 55(ptr) Variable Function + 270(txval301): 8(ptr) Variable Function + 280(txval311): 39(ptr) Variable Function + 289(txval321): 55(ptr) Variable Function + 298(txval304): 8(ptr) Variable Function + 314(txval314): 39(ptr) Variable Function + 330(txval324): 55(ptr) Variable Function + 348(psout): 347(ptr) Variable Function 13: 10 Load 12(g_tTex2df4) 17: 14 Load 16(g_sSamp) 19: 18 SampledImage 13 17 - 23: 20(fvec2) Load 22(c2) - 28: 25(ivec2) Load 27(o2) - 30: 7(fvec4) ImageGather 19 23 29 Offset 28 - Store 9(txval001) 30 - 37: 34 Load 36(g_tTex2di4) - 38: 14 Load 16(g_sSamp) - 40: 39 SampledImage 37 38 - 41: 20(fvec2) Load 22(c2) - 42: 25(ivec2) Load 27(o2) - 43: 31(ivec4) ImageGather 40 41 29 Offset 42 - Store 33(txval011) 43 - 51: 48 Load 50(g_tTex2du4) - 52: 14 Load 16(g_sSamp) - 54: 53 SampledImage 51 52 - 55: 20(fvec2) Load 22(c2) - 56: 25(ivec2) Load 27(o2) - 57: 45(ivec4) ImageGather 54 55 29 Offset 56 - Store 47(txval021) 57 - 59: 10 Load 12(g_tTex2df4) - 60: 14 Load 16(g_sSamp) - 61: 18 SampledImage 59 60 - 62: 20(fvec2) Load 22(c2) - 63: 25(ivec2) Load 27(o2) - 64: 25(ivec2) Load 27(o2) - 65: 25(ivec2) Load 27(o2) - 66: 25(ivec2) Load 27(o2) - 69: 68 CompositeConstruct 63 64 65 66 - 70: 7(fvec4) ImageGather 61 62 29 ConstOffsets 69 - Store 58(txval004) 70 - 72: 34 Load 36(g_tTex2di4) - 73: 14 Load 16(g_sSamp) - 74: 39 SampledImage 72 73 - 75: 20(fvec2) Load 22(c2) - 76: 25(ivec2) Load 27(o2) - 77: 25(ivec2) Load 27(o2) - 78: 25(ivec2) Load 27(o2) - 79: 25(ivec2) Load 27(o2) - 80: 68 CompositeConstruct 76 77 78 79 - 81: 31(ivec4) ImageGather 74 75 29 ConstOffsets 80 - Store 71(txval014) 81 - 83: 48 Load 50(g_tTex2du4) - 84: 14 Load 16(g_sSamp) - 85: 53 SampledImage 83 84 - 86: 20(fvec2) Load 22(c2) - 87: 25(ivec2) Load 27(o2) - 88: 25(ivec2) Load 27(o2) - 89: 25(ivec2) Load 27(o2) - 90: 25(ivec2) Load 27(o2) - 91: 68 CompositeConstruct 87 88 89 90 - 92: 45(ivec4) ImageGather 85 86 29 ConstOffsets 91 - Store 82(txval024) 92 - 94: 10 Load 12(g_tTex2df4) - 95: 14 Load 16(g_sSamp) - 96: 18 SampledImage 94 95 - 97: 20(fvec2) Load 22(c2) - 98: 25(ivec2) Load 27(o2) - 100: 7(fvec4) ImageGather 96 97 99 Offset 98 - Store 93(txval101) 100 - 102: 34 Load 36(g_tTex2di4) - 103: 14 Load 16(g_sSamp) - 104: 39 SampledImage 102 103 - 105: 20(fvec2) Load 22(c2) - 106: 25(ivec2) Load 27(o2) - 107: 31(ivec4) ImageGather 104 105 99 Offset 106 - Store 101(txval111) 107 - 109: 48 Load 50(g_tTex2du4) - 110: 14 Load 16(g_sSamp) - 111: 53 SampledImage 109 110 - 112: 20(fvec2) Load 22(c2) - 113: 25(ivec2) Load 27(o2) - 114: 45(ivec4) ImageGather 111 112 99 Offset 113 - Store 108(txval121) 114 - 116: 10 Load 12(g_tTex2df4) - 117: 14 Load 16(g_sSamp) - 118: 18 SampledImage 116 117 - 119: 20(fvec2) Load 22(c2) - 120: 25(ivec2) Load 27(o2) - 121: 25(ivec2) Load 27(o2) - 122: 25(ivec2) Load 27(o2) - 123: 25(ivec2) Load 27(o2) - 124: 68 CompositeConstruct 120 121 122 123 - 125: 7(fvec4) ImageGather 118 119 99 ConstOffsets 124 - Store 115(txval104) 125 - 127: 34 Load 36(g_tTex2di4) - 128: 14 Load 16(g_sSamp) - 129: 39 SampledImage 127 128 - 130: 20(fvec2) Load 22(c2) - 131: 25(ivec2) Load 27(o2) - 132: 25(ivec2) Load 27(o2) - 133: 25(ivec2) Load 27(o2) - 134: 25(ivec2) Load 27(o2) - 135: 68 CompositeConstruct 131 132 133 134 - 136: 31(ivec4) ImageGather 129 130 99 ConstOffsets 135 - Store 126(txval114) 136 - 138: 48 Load 50(g_tTex2du4) + 31: 30(ptr) AccessChain 28 29 + 32: 20(fvec2) Load 31 + 35: 34(ptr) AccessChain 28 33 + 36: 23(ivec2) Load 35 + 38: 7(fvec4) ImageGather 19 32 37 Offset 36 + Store 9(txval001) 38 + 44: 41 Load 43(g_tTex2di4) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 48: 30(ptr) AccessChain 28 29 + 49: 20(fvec2) Load 48 + 50: 34(ptr) AccessChain 28 33 + 51: 23(ivec2) Load 50 + 52: 25(ivec4) ImageGather 47 49 37 Offset 51 + Store 40(txval011) 52 + 60: 57 Load 59(g_tTex2du4) + 61: 14 Load 16(g_sSamp) + 63: 62 SampledImage 60 61 + 64: 30(ptr) AccessChain 28 29 + 65: 20(fvec2) Load 64 + 66: 34(ptr) AccessChain 28 33 + 67: 23(ivec2) Load 66 + 68: 54(ivec4) ImageGather 63 65 37 Offset 67 + Store 56(txval021) 68 + 70: 10 Load 12(g_tTex2df4) + 71: 14 Load 16(g_sSamp) + 72: 18 SampledImage 70 71 + 73: 30(ptr) AccessChain 28 29 + 74: 20(fvec2) Load 73 + 75: 34(ptr) AccessChain 28 33 + 76: 23(ivec2) Load 75 + 77: 34(ptr) AccessChain 28 33 + 78: 23(ivec2) Load 77 + 79: 34(ptr) AccessChain 28 33 + 80: 23(ivec2) Load 79 + 81: 34(ptr) AccessChain 28 33 + 82: 23(ivec2) Load 81 + 85: 84 CompositeConstruct 76 78 80 82 + 86: 7(fvec4) ImageGather 72 74 37 ConstOffsets 85 + Store 69(txval004) 86 + 88: 41 Load 43(g_tTex2di4) + 89: 14 Load 16(g_sSamp) + 90: 46 SampledImage 88 89 + 91: 30(ptr) AccessChain 28 29 + 92: 20(fvec2) Load 91 + 93: 34(ptr) AccessChain 28 33 + 94: 23(ivec2) Load 93 + 95: 34(ptr) AccessChain 28 33 + 96: 23(ivec2) Load 95 + 97: 34(ptr) AccessChain 28 33 + 98: 23(ivec2) Load 97 + 99: 34(ptr) AccessChain 28 33 + 100: 23(ivec2) Load 99 + 101: 84 CompositeConstruct 94 96 98 100 + 102: 25(ivec4) ImageGather 90 92 37 ConstOffsets 101 + Store 87(txval014) 102 + 104: 57 Load 59(g_tTex2du4) + 105: 14 Load 16(g_sSamp) + 106: 62 SampledImage 104 105 + 107: 30(ptr) AccessChain 28 29 + 108: 20(fvec2) Load 107 + 109: 34(ptr) AccessChain 28 33 + 110: 23(ivec2) Load 109 + 111: 34(ptr) AccessChain 28 33 + 112: 23(ivec2) Load 111 + 113: 34(ptr) AccessChain 28 33 + 114: 23(ivec2) Load 113 + 115: 34(ptr) AccessChain 28 33 + 116: 23(ivec2) Load 115 + 117: 84 CompositeConstruct 110 112 114 116 + 118: 54(ivec4) ImageGather 106 108 37 ConstOffsets 117 + Store 103(txval024) 118 + 120: 10 Load 12(g_tTex2df4) + 121: 14 Load 16(g_sSamp) + 122: 18 SampledImage 120 121 + 123: 30(ptr) AccessChain 28 29 + 124: 20(fvec2) Load 123 + 125: 34(ptr) AccessChain 28 33 + 126: 23(ivec2) Load 125 + 127: 7(fvec4) ImageGather 122 124 29 Offset 126 + Store 119(txval101) 127 + 129: 41 Load 43(g_tTex2di4) + 130: 14 Load 16(g_sSamp) + 131: 46 SampledImage 129 130 + 132: 30(ptr) AccessChain 28 29 + 133: 20(fvec2) Load 132 + 134: 34(ptr) AccessChain 28 33 + 135: 23(ivec2) Load 134 + 136: 25(ivec4) ImageGather 131 133 29 Offset 135 + Store 128(txval111) 136 + 138: 57 Load 59(g_tTex2du4) 139: 14 Load 16(g_sSamp) - 140: 53 SampledImage 138 139 - 141: 20(fvec2) Load 22(c2) - 142: 25(ivec2) Load 27(o2) - 143: 25(ivec2) Load 27(o2) - 144: 25(ivec2) Load 27(o2) - 145: 25(ivec2) Load 27(o2) - 146: 68 CompositeConstruct 142 143 144 145 - 147: 45(ivec4) ImageGather 140 141 99 ConstOffsets 146 - Store 137(txval124) 147 - 149: 10 Load 12(g_tTex2df4) - 150: 14 Load 16(g_sSamp) - 151: 18 SampledImage 149 150 - 152: 20(fvec2) Load 22(c2) - 153: 25(ivec2) Load 27(o2) - 155: 7(fvec4) ImageGather 151 152 154 Offset 153 - Store 148(txval201) 155 - 157: 34 Load 36(g_tTex2di4) - 158: 14 Load 16(g_sSamp) - 159: 39 SampledImage 157 158 - 160: 20(fvec2) Load 22(c2) - 161: 25(ivec2) Load 27(o2) - 162: 31(ivec4) ImageGather 159 160 154 Offset 161 - Store 156(txval211) 162 - 164: 48 Load 50(g_tTex2du4) - 165: 14 Load 16(g_sSamp) - 166: 53 SampledImage 164 165 - 167: 20(fvec2) Load 22(c2) - 168: 25(ivec2) Load 27(o2) - 169: 45(ivec4) ImageGather 166 167 154 Offset 168 - Store 163(txval221) 169 - 171: 10 Load 12(g_tTex2df4) - 172: 14 Load 16(g_sSamp) - 173: 18 SampledImage 171 172 - 174: 20(fvec2) Load 22(c2) - 175: 25(ivec2) Load 27(o2) - 176: 25(ivec2) Load 27(o2) - 177: 25(ivec2) Load 27(o2) - 178: 25(ivec2) Load 27(o2) - 179: 68 CompositeConstruct 175 176 177 178 - 180: 7(fvec4) ImageGather 173 174 154 ConstOffsets 179 - Store 170(txval204) 180 - 182: 34 Load 36(g_tTex2di4) - 183: 14 Load 16(g_sSamp) - 184: 39 SampledImage 182 183 - 185: 20(fvec2) Load 22(c2) - 186: 25(ivec2) Load 27(o2) - 187: 25(ivec2) Load 27(o2) - 188: 25(ivec2) Load 27(o2) - 189: 25(ivec2) Load 27(o2) - 190: 68 CompositeConstruct 186 187 188 189 - 191: 31(ivec4) ImageGather 184 185 154 ConstOffsets 190 - Store 181(txval214) 191 - 193: 48 Load 50(g_tTex2du4) - 194: 14 Load 16(g_sSamp) - 195: 53 SampledImage 193 194 - 196: 20(fvec2) Load 22(c2) - 197: 25(ivec2) Load 27(o2) - 198: 25(ivec2) Load 27(o2) - 199: 25(ivec2) Load 27(o2) - 200: 25(ivec2) Load 27(o2) - 201: 68 CompositeConstruct 197 198 199 200 - 202: 45(ivec4) ImageGather 195 196 154 ConstOffsets 201 - Store 192(txval224) 202 - 204: 10 Load 12(g_tTex2df4) - 205: 14 Load 16(g_sSamp) - 206: 18 SampledImage 204 205 - 207: 20(fvec2) Load 22(c2) - 208: 25(ivec2) Load 27(o2) - 210: 7(fvec4) ImageGather 206 207 209 Offset 208 - Store 203(txval301) 210 - 212: 34 Load 36(g_tTex2di4) - 213: 14 Load 16(g_sSamp) - 214: 39 SampledImage 212 213 - 215: 20(fvec2) Load 22(c2) - 216: 25(ivec2) Load 27(o2) - 217: 31(ivec4) ImageGather 214 215 209 Offset 216 - Store 211(txval311) 217 - 219: 48 Load 50(g_tTex2du4) - 220: 14 Load 16(g_sSamp) - 221: 53 SampledImage 219 220 - 222: 20(fvec2) Load 22(c2) - 223: 25(ivec2) Load 27(o2) - 224: 45(ivec4) ImageGather 221 222 209 Offset 223 - Store 218(txval321) 224 - 226: 10 Load 12(g_tTex2df4) - 227: 14 Load 16(g_sSamp) - 228: 18 SampledImage 226 227 - 229: 20(fvec2) Load 22(c2) - 230: 25(ivec2) Load 27(o2) - 231: 25(ivec2) Load 27(o2) - 232: 25(ivec2) Load 27(o2) - 233: 25(ivec2) Load 27(o2) - 234: 68 CompositeConstruct 230 231 232 233 - 235: 7(fvec4) ImageGather 228 229 209 ConstOffsets 234 - Store 225(txval304) 235 - 237: 34 Load 36(g_tTex2di4) - 238: 14 Load 16(g_sSamp) - 239: 39 SampledImage 237 238 - 240: 20(fvec2) Load 22(c2) - 241: 25(ivec2) Load 27(o2) - 242: 25(ivec2) Load 27(o2) - 243: 25(ivec2) Load 27(o2) - 244: 25(ivec2) Load 27(o2) - 245: 68 CompositeConstruct 241 242 243 244 - 246: 31(ivec4) ImageGather 239 240 209 ConstOffsets 245 - Store 236(txval314) 246 - 248: 48 Load 50(g_tTex2du4) - 249: 14 Load 16(g_sSamp) - 250: 53 SampledImage 248 249 - 251: 20(fvec2) Load 22(c2) - 252: 25(ivec2) Load 27(o2) - 253: 25(ivec2) Load 27(o2) - 254: 25(ivec2) Load 27(o2) - 255: 25(ivec2) Load 27(o2) - 256: 68 CompositeConstruct 252 253 254 255 - 257: 45(ivec4) ImageGather 250 251 209 ConstOffsets 256 - Store 247(txval324) 257 - 263: 8(ptr) AccessChain 260(psout) 29 - Store 263 262 - 265: 264(ptr) AccessChain 260(psout) 99 - Store 265 261 - 268: 8(ptr) AccessChain 260(psout) 29 - 269: 7(fvec4) Load 268 - Store 267(Color) 269 - 272: 264(ptr) AccessChain 260(psout) 99 - 273: 6(float) Load 272 - Store 271(Depth) 273 + 140: 62 SampledImage 138 139 + 141: 30(ptr) AccessChain 28 29 + 142: 20(fvec2) Load 141 + 143: 34(ptr) AccessChain 28 33 + 144: 23(ivec2) Load 143 + 145: 54(ivec4) ImageGather 140 142 29 Offset 144 + Store 137(txval121) 145 + 147: 10 Load 12(g_tTex2df4) + 148: 14 Load 16(g_sSamp) + 149: 18 SampledImage 147 148 + 150: 30(ptr) AccessChain 28 29 + 151: 20(fvec2) Load 150 + 152: 34(ptr) AccessChain 28 33 + 153: 23(ivec2) Load 152 + 154: 34(ptr) AccessChain 28 33 + 155: 23(ivec2) Load 154 + 156: 34(ptr) AccessChain 28 33 + 157: 23(ivec2) Load 156 + 158: 34(ptr) AccessChain 28 33 + 159: 23(ivec2) Load 158 + 160: 84 CompositeConstruct 153 155 157 159 + 161: 7(fvec4) ImageGather 149 151 29 ConstOffsets 160 + Store 146(txval104) 161 + 163: 41 Load 43(g_tTex2di4) + 164: 14 Load 16(g_sSamp) + 165: 46 SampledImage 163 164 + 166: 30(ptr) AccessChain 28 29 + 167: 20(fvec2) Load 166 + 168: 34(ptr) AccessChain 28 33 + 169: 23(ivec2) Load 168 + 170: 34(ptr) AccessChain 28 33 + 171: 23(ivec2) Load 170 + 172: 34(ptr) AccessChain 28 33 + 173: 23(ivec2) Load 172 + 174: 34(ptr) AccessChain 28 33 + 175: 23(ivec2) Load 174 + 176: 84 CompositeConstruct 169 171 173 175 + 177: 25(ivec4) ImageGather 165 167 29 ConstOffsets 176 + Store 162(txval114) 177 + 179: 57 Load 59(g_tTex2du4) + 180: 14 Load 16(g_sSamp) + 181: 62 SampledImage 179 180 + 182: 30(ptr) AccessChain 28 29 + 183: 20(fvec2) Load 182 + 184: 34(ptr) AccessChain 28 33 + 185: 23(ivec2) Load 184 + 186: 34(ptr) AccessChain 28 33 + 187: 23(ivec2) Load 186 + 188: 34(ptr) AccessChain 28 33 + 189: 23(ivec2) Load 188 + 190: 34(ptr) AccessChain 28 33 + 191: 23(ivec2) Load 190 + 192: 84 CompositeConstruct 185 187 189 191 + 193: 54(ivec4) ImageGather 181 183 29 ConstOffsets 192 + Store 178(txval124) 193 + 195: 10 Load 12(g_tTex2df4) + 196: 14 Load 16(g_sSamp) + 197: 18 SampledImage 195 196 + 198: 30(ptr) AccessChain 28 29 + 199: 20(fvec2) Load 198 + 200: 34(ptr) AccessChain 28 33 + 201: 23(ivec2) Load 200 + 203: 7(fvec4) ImageGather 197 199 202 Offset 201 + Store 194(txval201) 203 + 205: 41 Load 43(g_tTex2di4) + 206: 14 Load 16(g_sSamp) + 207: 46 SampledImage 205 206 + 208: 30(ptr) AccessChain 28 29 + 209: 20(fvec2) Load 208 + 210: 34(ptr) AccessChain 28 33 + 211: 23(ivec2) Load 210 + 212: 25(ivec4) ImageGather 207 209 202 Offset 211 + Store 204(txval211) 212 + 214: 57 Load 59(g_tTex2du4) + 215: 14 Load 16(g_sSamp) + 216: 62 SampledImage 214 215 + 217: 30(ptr) AccessChain 28 29 + 218: 20(fvec2) Load 217 + 219: 34(ptr) AccessChain 28 33 + 220: 23(ivec2) Load 219 + 221: 54(ivec4) ImageGather 216 218 202 Offset 220 + Store 213(txval221) 221 + 223: 10 Load 12(g_tTex2df4) + 224: 14 Load 16(g_sSamp) + 225: 18 SampledImage 223 224 + 226: 30(ptr) AccessChain 28 29 + 227: 20(fvec2) Load 226 + 228: 34(ptr) AccessChain 28 33 + 229: 23(ivec2) Load 228 + 230: 34(ptr) AccessChain 28 33 + 231: 23(ivec2) Load 230 + 232: 34(ptr) AccessChain 28 33 + 233: 23(ivec2) Load 232 + 234: 34(ptr) AccessChain 28 33 + 235: 23(ivec2) Load 234 + 236: 84 CompositeConstruct 229 231 233 235 + 237: 7(fvec4) ImageGather 225 227 202 ConstOffsets 236 + Store 222(txval204) 237 + 239: 41 Load 43(g_tTex2di4) + 240: 14 Load 16(g_sSamp) + 241: 46 SampledImage 239 240 + 242: 30(ptr) AccessChain 28 29 + 243: 20(fvec2) Load 242 + 244: 34(ptr) AccessChain 28 33 + 245: 23(ivec2) Load 244 + 246: 34(ptr) AccessChain 28 33 + 247: 23(ivec2) Load 246 + 248: 34(ptr) AccessChain 28 33 + 249: 23(ivec2) Load 248 + 250: 34(ptr) AccessChain 28 33 + 251: 23(ivec2) Load 250 + 252: 84 CompositeConstruct 245 247 249 251 + 253: 25(ivec4) ImageGather 241 243 202 ConstOffsets 252 + Store 238(txval214) 253 + 255: 57 Load 59(g_tTex2du4) + 256: 14 Load 16(g_sSamp) + 257: 62 SampledImage 255 256 + 258: 30(ptr) AccessChain 28 29 + 259: 20(fvec2) Load 258 + 260: 34(ptr) AccessChain 28 33 + 261: 23(ivec2) Load 260 + 262: 34(ptr) AccessChain 28 33 + 263: 23(ivec2) Load 262 + 264: 34(ptr) AccessChain 28 33 + 265: 23(ivec2) Load 264 + 266: 34(ptr) AccessChain 28 33 + 267: 23(ivec2) Load 266 + 268: 84 CompositeConstruct 261 263 265 267 + 269: 54(ivec4) ImageGather 257 259 202 ConstOffsets 268 + Store 254(txval224) 269 + 271: 10 Load 12(g_tTex2df4) + 272: 14 Load 16(g_sSamp) + 273: 18 SampledImage 271 272 + 274: 30(ptr) AccessChain 28 29 + 275: 20(fvec2) Load 274 + 276: 34(ptr) AccessChain 28 33 + 277: 23(ivec2) Load 276 + 279: 7(fvec4) ImageGather 273 275 278 Offset 277 + Store 270(txval301) 279 + 281: 41 Load 43(g_tTex2di4) + 282: 14 Load 16(g_sSamp) + 283: 46 SampledImage 281 282 + 284: 30(ptr) AccessChain 28 29 + 285: 20(fvec2) Load 284 + 286: 34(ptr) AccessChain 28 33 + 287: 23(ivec2) Load 286 + 288: 25(ivec4) ImageGather 283 285 278 Offset 287 + Store 280(txval311) 288 + 290: 57 Load 59(g_tTex2du4) + 291: 14 Load 16(g_sSamp) + 292: 62 SampledImage 290 291 + 293: 30(ptr) AccessChain 28 29 + 294: 20(fvec2) Load 293 + 295: 34(ptr) AccessChain 28 33 + 296: 23(ivec2) Load 295 + 297: 54(ivec4) ImageGather 292 294 278 Offset 296 + Store 289(txval321) 297 + 299: 10 Load 12(g_tTex2df4) + 300: 14 Load 16(g_sSamp) + 301: 18 SampledImage 299 300 + 302: 30(ptr) AccessChain 28 29 + 303: 20(fvec2) Load 302 + 304: 34(ptr) AccessChain 28 33 + 305: 23(ivec2) Load 304 + 306: 34(ptr) AccessChain 28 33 + 307: 23(ivec2) Load 306 + 308: 34(ptr) AccessChain 28 33 + 309: 23(ivec2) Load 308 + 310: 34(ptr) AccessChain 28 33 + 311: 23(ivec2) Load 310 + 312: 84 CompositeConstruct 305 307 309 311 + 313: 7(fvec4) ImageGather 301 303 278 ConstOffsets 312 + Store 298(txval304) 313 + 315: 41 Load 43(g_tTex2di4) + 316: 14 Load 16(g_sSamp) + 317: 46 SampledImage 315 316 + 318: 30(ptr) AccessChain 28 29 + 319: 20(fvec2) Load 318 + 320: 34(ptr) AccessChain 28 33 + 321: 23(ivec2) Load 320 + 322: 34(ptr) AccessChain 28 33 + 323: 23(ivec2) Load 322 + 324: 34(ptr) AccessChain 28 33 + 325: 23(ivec2) Load 324 + 326: 34(ptr) AccessChain 28 33 + 327: 23(ivec2) Load 326 + 328: 84 CompositeConstruct 321 323 325 327 + 329: 25(ivec4) ImageGather 317 319 278 ConstOffsets 328 + Store 314(txval314) 329 + 331: 57 Load 59(g_tTex2du4) + 332: 14 Load 16(g_sSamp) + 333: 62 SampledImage 331 332 + 334: 30(ptr) AccessChain 28 29 + 335: 20(fvec2) Load 334 + 336: 34(ptr) AccessChain 28 33 + 337: 23(ivec2) Load 336 + 338: 34(ptr) AccessChain 28 33 + 339: 23(ivec2) Load 338 + 340: 34(ptr) AccessChain 28 33 + 341: 23(ivec2) Load 340 + 342: 34(ptr) AccessChain 28 33 + 343: 23(ivec2) Load 342 + 344: 84 CompositeConstruct 337 339 341 343 + 345: 54(ivec4) ImageGather 333 335 278 ConstOffsets 344 + Store 330(txval324) 345 + 351: 8(ptr) AccessChain 348(psout) 37 + Store 351 350 + 353: 352(ptr) AccessChain 348(psout) 29 + Store 353 349 + 356: 8(ptr) AccessChain 348(psout) 37 + 357: 7(fvec4) Load 356 + Store 355(Color) 357 + 360: 352(ptr) AccessChain 348(psout) 29 + 361: 6(float) Load 360 + Store 359(Depth) 361 Return FunctionEnd diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out index 022f63ed..1a5df38e 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.gatherRGBA.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:33 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:33 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:33 Function Parameters: 0:? Sequence 0:40 Sequence @@ -12,8 +12,14 @@ gl_FragCoord origin is upper left 0:40 Construct combined texture-sampler (temp sampler2DArray) 0:40 'g_tTex2df4a' (uniform texture2DArray) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:40 'c3' (uniform 3-component vector of float) -0:40 'o2' (uniform 2-component vector of int) +0:40 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 2 (const uint) +0:40 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 5 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence @@ -23,8 +29,14 @@ gl_FragCoord origin is upper left 0:41 Construct combined texture-sampler (temp isampler2DArray) 0:41 'g_tTex2di4a' (uniform itexture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:41 'c3' (uniform 3-component vector of float) -0:41 'o2' (uniform 2-component vector of int) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 2 (const uint) +0:41 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 5 (const uint) 0:41 Constant: 0:41 0 (const int) 0:42 Sequence @@ -34,8 +46,14 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp usampler2DArray) 0:42 'g_tTex2du4a' (uniform utexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 'c3' (uniform 3-component vector of float) -0:42 'o2' (uniform 2-component vector of int) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) +0:42 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 5 (const uint) 0:42 Constant: 0:42 0 (const int) 0:44 Sequence @@ -45,12 +63,27 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp sampler2DArray) 0:44 'g_tTex2df4a' (uniform texture2DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 'c3' (uniform 3-component vector of float) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) 0:44 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) 0:44 Constant: 0:44 0 (const int) 0:45 Sequence @@ -60,12 +93,27 @@ gl_FragCoord origin is upper left 0:45 Construct combined texture-sampler (temp isampler2DArray) 0:45 'g_tTex2di4a' (uniform itexture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:45 'c3' (uniform 3-component vector of float) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 2 (const uint) 0:45 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) 0:45 Constant: 0:45 0 (const int) 0:46 Sequence @@ -75,12 +123,27 @@ gl_FragCoord origin is upper left 0:46 Construct combined texture-sampler (temp usampler2DArray) 0:46 'g_tTex2du4a' (uniform utexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:46 'c3' (uniform 3-component vector of float) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 2 (const uint) 0:46 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:56 Sequence @@ -90,8 +153,14 @@ gl_FragCoord origin is upper left 0:56 Construct combined texture-sampler (temp sampler2DArray) 0:56 'g_tTex2df4a' (uniform texture2DArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:56 'c3' (uniform 3-component vector of float) -0:56 'o2' (uniform 2-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 5 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence @@ -101,8 +170,14 @@ gl_FragCoord origin is upper left 0:57 Construct combined texture-sampler (temp isampler2DArray) 0:57 'g_tTex2di4a' (uniform itexture2DArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:57 'c3' (uniform 3-component vector of float) -0:57 'o2' (uniform 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) 0:57 Constant: 0:57 1 (const int) 0:58 Sequence @@ -112,8 +187,14 @@ gl_FragCoord origin is upper left 0:58 Construct combined texture-sampler (temp usampler2DArray) 0:58 'g_tTex2du4a' (uniform utexture2DArray) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:58 'c3' (uniform 3-component vector of float) -0:58 'o2' (uniform 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) 0:58 Constant: 0:58 1 (const int) 0:60 Sequence @@ -123,12 +204,27 @@ gl_FragCoord origin is upper left 0:60 Construct combined texture-sampler (temp sampler2DArray) 0:60 'g_tTex2df4a' (uniform texture2DArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:60 'c3' (uniform 3-component vector of float) +0:60 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 2 (const uint) 0:60 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) 0:60 Constant: 0:60 1 (const int) 0:61 Sequence @@ -138,12 +234,27 @@ gl_FragCoord origin is upper left 0:61 Construct combined texture-sampler (temp isampler2DArray) 0:61 'g_tTex2di4a' (uniform itexture2DArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:61 'c3' (uniform 3-component vector of float) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) 0:61 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence @@ -153,12 +264,27 @@ gl_FragCoord origin is upper left 0:62 Construct combined texture-sampler (temp usampler2DArray) 0:62 'g_tTex2du4a' (uniform utexture2DArray) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:62 'c3' (uniform 3-component vector of float) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) 0:62 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:72 Sequence @@ -168,8 +294,14 @@ gl_FragCoord origin is upper left 0:72 Construct combined texture-sampler (temp sampler2DArray) 0:72 'g_tTex2df4a' (uniform texture2DArray) 0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:72 'c3' (uniform 3-component vector of float) -0:72 'o2' (uniform 2-component vector of int) +0:72 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 2 (const uint) +0:72 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 5 (const uint) 0:72 Constant: 0:72 2 (const int) 0:73 Sequence @@ -179,8 +311,14 @@ gl_FragCoord origin is upper left 0:73 Construct combined texture-sampler (temp isampler2DArray) 0:73 'g_tTex2di4a' (uniform itexture2DArray) 0:73 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:73 'c3' (uniform 3-component vector of float) -0:73 'o2' (uniform 2-component vector of int) +0:73 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 2 (const uint) +0:73 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 5 (const uint) 0:73 Constant: 0:73 2 (const int) 0:74 Sequence @@ -190,8 +328,14 @@ gl_FragCoord origin is upper left 0:74 Construct combined texture-sampler (temp usampler2DArray) 0:74 'g_tTex2du4a' (uniform utexture2DArray) 0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:74 'c3' (uniform 3-component vector of float) -0:74 'o2' (uniform 2-component vector of int) +0:74 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 2 (const uint) +0:74 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 5 (const uint) 0:74 Constant: 0:74 2 (const int) 0:76 Sequence @@ -201,12 +345,27 @@ gl_FragCoord origin is upper left 0:76 Construct combined texture-sampler (temp sampler2DArray) 0:76 'g_tTex2df4a' (uniform texture2DArray) 0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:76 'c3' (uniform 3-component vector of float) +0:76 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 2 (const uint) 0:76 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) 0:76 Constant: 0:76 2 (const int) 0:77 Sequence @@ -216,12 +375,27 @@ gl_FragCoord origin is upper left 0:77 Construct combined texture-sampler (temp isampler2DArray) 0:77 'g_tTex2di4a' (uniform itexture2DArray) 0:77 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:77 'c3' (uniform 3-component vector of float) +0:77 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 2 (const uint) 0:77 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) 0:77 Constant: 0:77 2 (const int) 0:78 Sequence @@ -231,12 +405,27 @@ gl_FragCoord origin is upper left 0:78 Construct combined texture-sampler (temp usampler2DArray) 0:78 'g_tTex2du4a' (uniform utexture2DArray) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:78 'c3' (uniform 3-component vector of float) +0:78 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 2 (const uint) 0:78 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:88 Sequence @@ -246,8 +435,14 @@ gl_FragCoord origin is upper left 0:88 Construct combined texture-sampler (temp sampler2DArray) 0:88 'g_tTex2df4a' (uniform texture2DArray) 0:88 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:88 'c3' (uniform 3-component vector of float) -0:88 'o2' (uniform 2-component vector of int) +0:88 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 2 (const uint) +0:88 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 5 (const uint) 0:88 Constant: 0:88 3 (const int) 0:89 Sequence @@ -257,8 +452,14 @@ gl_FragCoord origin is upper left 0:89 Construct combined texture-sampler (temp isampler2DArray) 0:89 'g_tTex2di4a' (uniform itexture2DArray) 0:89 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:89 'c3' (uniform 3-component vector of float) -0:89 'o2' (uniform 2-component vector of int) +0:89 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 2 (const uint) +0:89 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 5 (const uint) 0:89 Constant: 0:89 3 (const int) 0:90 Sequence @@ -268,8 +469,14 @@ gl_FragCoord origin is upper left 0:90 Construct combined texture-sampler (temp usampler2DArray) 0:90 'g_tTex2du4a' (uniform utexture2DArray) 0:90 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:90 'c3' (uniform 3-component vector of float) -0:90 'o2' (uniform 2-component vector of int) +0:90 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 2 (const uint) +0:90 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 5 (const uint) 0:90 Constant: 0:90 3 (const int) 0:92 Sequence @@ -279,12 +486,27 @@ gl_FragCoord origin is upper left 0:92 Construct combined texture-sampler (temp sampler2DArray) 0:92 'g_tTex2df4a' (uniform texture2DArray) 0:92 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:92 'c3' (uniform 3-component vector of float) +0:92 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 2 (const uint) 0:92 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) 0:92 Constant: 0:92 3 (const int) 0:93 Sequence @@ -294,12 +516,27 @@ gl_FragCoord origin is upper left 0:93 Construct combined texture-sampler (temp isampler2DArray) 0:93 'g_tTex2di4a' (uniform itexture2DArray) 0:93 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:93 'c3' (uniform 3-component vector of float) +0:93 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 2 (const uint) 0:93 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) 0:93 Constant: 0:93 3 (const int) 0:94 Sequence @@ -309,12 +546,27 @@ gl_FragCoord origin is upper left 0:94 Construct combined texture-sampler (temp usampler2DArray) 0:94 'g_tTex2du4a' (uniform utexture2DArray) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:94 'c3' (uniform 3-component vector of float) +0:94 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 2 (const uint) 0:94 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:106 move second child to first child (temp 4-component vector of float) @@ -361,16 +613,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -379,7 +624,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:33 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:33 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:33 Function Parameters: 0:? Sequence 0:40 Sequence @@ -389,8 +634,14 @@ gl_FragCoord origin is upper left 0:40 Construct combined texture-sampler (temp sampler2DArray) 0:40 'g_tTex2df4a' (uniform texture2DArray) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:40 'c3' (uniform 3-component vector of float) -0:40 'o2' (uniform 2-component vector of int) +0:40 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 2 (const uint) +0:40 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 5 (const uint) 0:40 Constant: 0:40 0 (const int) 0:41 Sequence @@ -400,8 +651,14 @@ gl_FragCoord origin is upper left 0:41 Construct combined texture-sampler (temp isampler2DArray) 0:41 'g_tTex2di4a' (uniform itexture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:41 'c3' (uniform 3-component vector of float) -0:41 'o2' (uniform 2-component vector of int) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 2 (const uint) +0:41 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 5 (const uint) 0:41 Constant: 0:41 0 (const int) 0:42 Sequence @@ -411,8 +668,14 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp usampler2DArray) 0:42 'g_tTex2du4a' (uniform utexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 'c3' (uniform 3-component vector of float) -0:42 'o2' (uniform 2-component vector of int) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) +0:42 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 5 (const uint) 0:42 Constant: 0:42 0 (const int) 0:44 Sequence @@ -422,12 +685,27 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp sampler2DArray) 0:44 'g_tTex2df4a' (uniform texture2DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 'c3' (uniform 3-component vector of float) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) 0:44 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) -0:44 'o2' (uniform 2-component vector of int) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) 0:44 Constant: 0:44 0 (const int) 0:45 Sequence @@ -437,12 +715,27 @@ gl_FragCoord origin is upper left 0:45 Construct combined texture-sampler (temp isampler2DArray) 0:45 'g_tTex2di4a' (uniform itexture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:45 'c3' (uniform 3-component vector of float) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 2 (const uint) 0:45 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) -0:45 'o2' (uniform 2-component vector of int) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) 0:45 Constant: 0:45 0 (const int) 0:46 Sequence @@ -452,12 +745,27 @@ gl_FragCoord origin is upper left 0:46 Construct combined texture-sampler (temp usampler2DArray) 0:46 'g_tTex2du4a' (uniform utexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:46 'c3' (uniform 3-component vector of float) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 2 (const uint) 0:46 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) -0:46 'o2' (uniform 2-component vector of int) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) 0:46 Constant: 0:46 0 (const int) 0:56 Sequence @@ -467,8 +775,14 @@ gl_FragCoord origin is upper left 0:56 Construct combined texture-sampler (temp sampler2DArray) 0:56 'g_tTex2df4a' (uniform texture2DArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:56 'c3' (uniform 3-component vector of float) -0:56 'o2' (uniform 2-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 5 (const uint) 0:56 Constant: 0:56 1 (const int) 0:57 Sequence @@ -478,8 +792,14 @@ gl_FragCoord origin is upper left 0:57 Construct combined texture-sampler (temp isampler2DArray) 0:57 'g_tTex2di4a' (uniform itexture2DArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:57 'c3' (uniform 3-component vector of float) -0:57 'o2' (uniform 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) 0:57 Constant: 0:57 1 (const int) 0:58 Sequence @@ -489,8 +809,14 @@ gl_FragCoord origin is upper left 0:58 Construct combined texture-sampler (temp usampler2DArray) 0:58 'g_tTex2du4a' (uniform utexture2DArray) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:58 'c3' (uniform 3-component vector of float) -0:58 'o2' (uniform 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) 0:58 Constant: 0:58 1 (const int) 0:60 Sequence @@ -500,12 +826,27 @@ gl_FragCoord origin is upper left 0:60 Construct combined texture-sampler (temp sampler2DArray) 0:60 'g_tTex2df4a' (uniform texture2DArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:60 'c3' (uniform 3-component vector of float) +0:60 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 2 (const uint) 0:60 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) -0:60 'o2' (uniform 2-component vector of int) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) 0:60 Constant: 0:60 1 (const int) 0:61 Sequence @@ -515,12 +856,27 @@ gl_FragCoord origin is upper left 0:61 Construct combined texture-sampler (temp isampler2DArray) 0:61 'g_tTex2di4a' (uniform itexture2DArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:61 'c3' (uniform 3-component vector of float) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) 0:61 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) -0:61 'o2' (uniform 2-component vector of int) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) 0:61 Constant: 0:61 1 (const int) 0:62 Sequence @@ -530,12 +886,27 @@ gl_FragCoord origin is upper left 0:62 Construct combined texture-sampler (temp usampler2DArray) 0:62 'g_tTex2du4a' (uniform utexture2DArray) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:62 'c3' (uniform 3-component vector of float) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) 0:62 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) -0:62 'o2' (uniform 2-component vector of int) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) 0:62 Constant: 0:62 1 (const int) 0:72 Sequence @@ -545,8 +916,14 @@ gl_FragCoord origin is upper left 0:72 Construct combined texture-sampler (temp sampler2DArray) 0:72 'g_tTex2df4a' (uniform texture2DArray) 0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:72 'c3' (uniform 3-component vector of float) -0:72 'o2' (uniform 2-component vector of int) +0:72 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 2 (const uint) +0:72 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 5 (const uint) 0:72 Constant: 0:72 2 (const int) 0:73 Sequence @@ -556,8 +933,14 @@ gl_FragCoord origin is upper left 0:73 Construct combined texture-sampler (temp isampler2DArray) 0:73 'g_tTex2di4a' (uniform itexture2DArray) 0:73 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:73 'c3' (uniform 3-component vector of float) -0:73 'o2' (uniform 2-component vector of int) +0:73 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 2 (const uint) +0:73 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 5 (const uint) 0:73 Constant: 0:73 2 (const int) 0:74 Sequence @@ -567,8 +950,14 @@ gl_FragCoord origin is upper left 0:74 Construct combined texture-sampler (temp usampler2DArray) 0:74 'g_tTex2du4a' (uniform utexture2DArray) 0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:74 'c3' (uniform 3-component vector of float) -0:74 'o2' (uniform 2-component vector of int) +0:74 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 2 (const uint) +0:74 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 5 (const uint) 0:74 Constant: 0:74 2 (const int) 0:76 Sequence @@ -578,12 +967,27 @@ gl_FragCoord origin is upper left 0:76 Construct combined texture-sampler (temp sampler2DArray) 0:76 'g_tTex2df4a' (uniform texture2DArray) 0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:76 'c3' (uniform 3-component vector of float) +0:76 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 2 (const uint) 0:76 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) -0:76 'o2' (uniform 2-component vector of int) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) 0:76 Constant: 0:76 2 (const int) 0:77 Sequence @@ -593,12 +997,27 @@ gl_FragCoord origin is upper left 0:77 Construct combined texture-sampler (temp isampler2DArray) 0:77 'g_tTex2di4a' (uniform itexture2DArray) 0:77 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:77 'c3' (uniform 3-component vector of float) +0:77 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 2 (const uint) 0:77 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) -0:77 'o2' (uniform 2-component vector of int) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) 0:77 Constant: 0:77 2 (const int) 0:78 Sequence @@ -608,12 +1027,27 @@ gl_FragCoord origin is upper left 0:78 Construct combined texture-sampler (temp usampler2DArray) 0:78 'g_tTex2du4a' (uniform utexture2DArray) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:78 'c3' (uniform 3-component vector of float) +0:78 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 2 (const uint) 0:78 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) -0:78 'o2' (uniform 2-component vector of int) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) 0:78 Constant: 0:78 2 (const int) 0:88 Sequence @@ -623,8 +1057,14 @@ gl_FragCoord origin is upper left 0:88 Construct combined texture-sampler (temp sampler2DArray) 0:88 'g_tTex2df4a' (uniform texture2DArray) 0:88 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:88 'c3' (uniform 3-component vector of float) -0:88 'o2' (uniform 2-component vector of int) +0:88 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 2 (const uint) +0:88 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 5 (const uint) 0:88 Constant: 0:88 3 (const int) 0:89 Sequence @@ -634,8 +1074,14 @@ gl_FragCoord origin is upper left 0:89 Construct combined texture-sampler (temp isampler2DArray) 0:89 'g_tTex2di4a' (uniform itexture2DArray) 0:89 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:89 'c3' (uniform 3-component vector of float) -0:89 'o2' (uniform 2-component vector of int) +0:89 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 2 (const uint) +0:89 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 5 (const uint) 0:89 Constant: 0:89 3 (const int) 0:90 Sequence @@ -645,8 +1091,14 @@ gl_FragCoord origin is upper left 0:90 Construct combined texture-sampler (temp usampler2DArray) 0:90 'g_tTex2du4a' (uniform utexture2DArray) 0:90 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:90 'c3' (uniform 3-component vector of float) -0:90 'o2' (uniform 2-component vector of int) +0:90 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 2 (const uint) +0:90 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 5 (const uint) 0:90 Constant: 0:90 3 (const int) 0:92 Sequence @@ -656,12 +1108,27 @@ gl_FragCoord origin is upper left 0:92 Construct combined texture-sampler (temp sampler2DArray) 0:92 'g_tTex2df4a' (uniform texture2DArray) 0:92 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:92 'c3' (uniform 3-component vector of float) +0:92 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 2 (const uint) 0:92 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) -0:92 'o2' (uniform 2-component vector of int) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) 0:92 Constant: 0:92 3 (const int) 0:93 Sequence @@ -671,12 +1138,27 @@ gl_FragCoord origin is upper left 0:93 Construct combined texture-sampler (temp isampler2DArray) 0:93 'g_tTex2di4a' (uniform itexture2DArray) 0:93 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:93 'c3' (uniform 3-component vector of float) +0:93 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 2 (const uint) 0:93 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) -0:93 'o2' (uniform 2-component vector of int) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) 0:93 Constant: 0:93 3 (const int) 0:94 Sequence @@ -686,12 +1168,27 @@ gl_FragCoord origin is upper left 0:94 Construct combined texture-sampler (temp usampler2DArray) 0:94 'g_tTex2du4a' (uniform utexture2DArray) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:94 'c3' (uniform 3-component vector of float) +0:94 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 2 (const uint) 0:94 Construct ivec2 (temp 4-element array of 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) -0:94 'o2' (uniform 2-component vector of int) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) 0:94 Constant: 0:94 3 (const int) 0:106 move second child to first child (temp 4-component vector of float) @@ -738,20 +1235,13 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform float) -0:? 'c2' (uniform 2-component vector of float) -0:? 'c3' (uniform 3-component vector of float) -0:? 'c4' (uniform 4-component vector of float) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 308 +// Id's are bound by 382 Capability Shader Capability ImageGatherExtended @@ -759,73 +1249,85 @@ gl_FragCoord origin is upper left Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 267 271 + EntryPoint Fragment 4 "main" 355 359 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "txval001" Name 12 "g_tTex2df4a" Name 16 "g_sSamp" - Name 22 "c3" - Name 27 "o2" - Name 33 "txval011" - Name 36 "g_tTex2di4a" - Name 47 "txval021" - Name 50 "g_tTex2du4a" - Name 58 "txval004" - Name 71 "txval014" - Name 82 "txval024" - Name 93 "txval101" - Name 101 "txval111" - Name 108 "txval121" - Name 115 "txval104" - Name 126 "txval114" - Name 137 "txval124" - Name 148 "txval201" - Name 156 "txval211" - Name 163 "txval221" - Name 170 "txval204" - Name 181 "txval214" - Name 192 "txval224" - Name 203 "txval301" - Name 211 "txval311" - Name 218 "txval321" - Name 225 "txval304" - Name 236 "txval314" - Name 247 "txval324" - Name 258 "PS_OUTPUT" - MemberName 258(PS_OUTPUT) 0 "Color" - MemberName 258(PS_OUTPUT) 1 "Depth" - Name 260 "psout" - Name 267 "Color" - Name 271 "Depth" - Name 275 "g_sSamp2d" - Name 278 "g_tTex1df4a" - Name 281 "g_tTex1di4a" - Name 284 "g_tTex1du4a" - Name 287 "g_tTexcdf4a" - Name 290 "g_tTexcdi4a" - Name 293 "g_tTexcdu4a" - Name 295 "c1" - Name 298 "c2" - Name 300 "c4" - Name 302 "o1" - Name 305 "o3" - Name 307 "o4" + Name 26 "$Global" + MemberName 26($Global) 0 "c1" + MemberName 26($Global) 1 "c2" + MemberName 26($Global) 2 "c3" + MemberName 26($Global) 3 "c4" + MemberName 26($Global) 4 "o1" + MemberName 26($Global) 5 "o2" + MemberName 26($Global) 6 "o3" + MemberName 26($Global) 7 "o4" + Name 28 "" + Name 40 "txval011" + Name 43 "g_tTex2di4a" + Name 56 "txval021" + Name 59 "g_tTex2du4a" + Name 69 "txval004" + Name 87 "txval014" + Name 103 "txval024" + Name 119 "txval101" + Name 129 "txval111" + Name 138 "txval121" + Name 147 "txval104" + Name 163 "txval114" + Name 179 "txval124" + Name 195 "txval201" + Name 204 "txval211" + Name 213 "txval221" + Name 222 "txval204" + Name 238 "txval214" + Name 254 "txval224" + Name 270 "txval301" + Name 280 "txval311" + Name 289 "txval321" + Name 298 "txval304" + Name 314 "txval314" + Name 330 "txval324" + Name 346 "PS_OUTPUT" + MemberName 346(PS_OUTPUT) 0 "Color" + MemberName 346(PS_OUTPUT) 1 "Depth" + Name 348 "psout" + Name 355 "Color" + Name 359 "Depth" + Name 363 "g_sSamp2d" + Name 366 "g_tTex1df4a" + Name 369 "g_tTex1di4a" + Name 372 "g_tTex1du4a" + Name 375 "g_tTexcdf4a" + Name 378 "g_tTexcdi4a" + Name 381 "g_tTexcdu4a" Decorate 12(g_tTex2df4a) DescriptorSet 0 Decorate 16(g_sSamp) DescriptorSet 0 Decorate 16(g_sSamp) Binding 0 - Decorate 36(g_tTex2di4a) DescriptorSet 0 - Decorate 50(g_tTex2du4a) DescriptorSet 0 - Decorate 267(Color) Location 0 - Decorate 271(Depth) BuiltIn FragDepth - Decorate 275(g_sSamp2d) DescriptorSet 0 - Decorate 278(g_tTex1df4a) DescriptorSet 0 - Decorate 278(g_tTex1df4a) Binding 0 - Decorate 281(g_tTex1di4a) DescriptorSet 0 - Decorate 284(g_tTex1du4a) DescriptorSet 0 - Decorate 287(g_tTexcdf4a) DescriptorSet 0 - Decorate 290(g_tTexcdi4a) DescriptorSet 0 - Decorate 293(g_tTexcdu4a) DescriptorSet 0 + MemberDecorate 26($Global) 0 Offset 0 + MemberDecorate 26($Global) 1 Offset 8 + MemberDecorate 26($Global) 2 Offset 16 + MemberDecorate 26($Global) 3 Offset 32 + MemberDecorate 26($Global) 4 Offset 48 + MemberDecorate 26($Global) 5 Offset 56 + MemberDecorate 26($Global) 6 Offset 64 + MemberDecorate 26($Global) 7 Offset 80 + Decorate 26($Global) Block + Decorate 28 DescriptorSet 0 + Decorate 43(g_tTex2di4a) DescriptorSet 0 + Decorate 59(g_tTex2du4a) DescriptorSet 0 + Decorate 355(Color) Location 0 + Decorate 359(Depth) BuiltIn FragDepth + Decorate 363(g_sSamp2d) DescriptorSet 0 + Decorate 366(g_tTex1df4a) DescriptorSet 0 + Decorate 366(g_tTex1df4a) Binding 0 + Decorate 369(g_tTex1di4a) DescriptorSet 0 + Decorate 372(g_tTex1du4a) DescriptorSet 0 + Decorate 375(g_tTexcdf4a) DescriptorSet 0 + Decorate 378(g_tTexcdi4a) DescriptorSet 0 + Decorate 381(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -838,326 +1340,400 @@ gl_FragCoord origin is upper left 15: TypePointer UniformConstant 14 16(g_sSamp): 15(ptr) Variable UniformConstant 18: TypeSampledImage 10 - 20: TypeVector 6(float) 3 - 21: TypePointer UniformConstant 20(fvec3) - 22(c3): 21(ptr) Variable UniformConstant - 24: TypeInt 32 1 - 25: TypeVector 24(int) 2 - 26: TypePointer UniformConstant 25(ivec2) - 27(o2): 26(ptr) Variable UniformConstant - 29: 24(int) Constant 0 - 31: TypeVector 24(int) 4 - 32: TypePointer Function 31(ivec4) - 34: TypeImage 24(int) 2D array sampled format:Unknown - 35: TypePointer UniformConstant 34 - 36(g_tTex2di4a): 35(ptr) Variable UniformConstant - 39: TypeSampledImage 34 - 44: TypeInt 32 0 - 45: TypeVector 44(int) 4 - 46: TypePointer Function 45(ivec4) - 48: TypeImage 44(int) 2D array sampled format:Unknown - 49: TypePointer UniformConstant 48 - 50(g_tTex2du4a): 49(ptr) Variable UniformConstant - 53: TypeSampledImage 48 - 67: 44(int) Constant 4 - 68: TypeArray 25(ivec2) 67 - 99: 24(int) Constant 1 - 154: 24(int) Constant 2 - 209: 24(int) Constant 3 - 258(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) - 259: TypePointer Function 258(PS_OUTPUT) - 261: 6(float) Constant 1065353216 - 262: 7(fvec4) ConstantComposite 261 261 261 261 - 264: TypePointer Function 6(float) - 266: TypePointer Output 7(fvec4) - 267(Color): 266(ptr) Variable Output - 270: TypePointer Output 6(float) - 271(Depth): 270(ptr) Variable Output - 275(g_sSamp2d): 15(ptr) Variable UniformConstant - 276: TypeImage 6(float) 1D array sampled format:Unknown - 277: TypePointer UniformConstant 276 -278(g_tTex1df4a): 277(ptr) Variable UniformConstant - 279: TypeImage 24(int) 1D array sampled format:Unknown - 280: TypePointer UniformConstant 279 -281(g_tTex1di4a): 280(ptr) Variable UniformConstant - 282: TypeImage 44(int) 1D array sampled format:Unknown - 283: TypePointer UniformConstant 282 -284(g_tTex1du4a): 283(ptr) Variable UniformConstant - 285: TypeImage 6(float) Cube array sampled format:Unknown - 286: TypePointer UniformConstant 285 -287(g_tTexcdf4a): 286(ptr) Variable UniformConstant - 288: TypeImage 24(int) Cube array sampled format:Unknown - 289: TypePointer UniformConstant 288 -290(g_tTexcdi4a): 289(ptr) Variable UniformConstant - 291: TypeImage 44(int) Cube array sampled format:Unknown - 292: TypePointer UniformConstant 291 -293(g_tTexcdu4a): 292(ptr) Variable UniformConstant - 294: TypePointer UniformConstant 6(float) - 295(c1): 294(ptr) Variable UniformConstant - 296: TypeVector 6(float) 2 - 297: TypePointer UniformConstant 296(fvec2) - 298(c2): 297(ptr) Variable UniformConstant - 299: TypePointer UniformConstant 7(fvec4) - 300(c4): 299(ptr) Variable UniformConstant - 301: TypePointer UniformConstant 24(int) - 302(o1): 301(ptr) Variable UniformConstant - 303: TypeVector 24(int) 3 - 304: TypePointer UniformConstant 303(ivec3) - 305(o3): 304(ptr) Variable UniformConstant - 306: TypePointer UniformConstant 31(ivec4) - 307(o4): 306(ptr) Variable UniformConstant + 20: TypeVector 6(float) 2 + 21: TypeVector 6(float) 3 + 22: TypeInt 32 1 + 23: TypeVector 22(int) 2 + 24: TypeVector 22(int) 3 + 25: TypeVector 22(int) 4 + 26($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) 22(int) 23(ivec2) 24(ivec3) 25(ivec4) + 27: TypePointer Uniform 26($Global) + 28: 27(ptr) Variable Uniform + 29: 22(int) Constant 2 + 30: TypePointer Uniform 21(fvec3) + 33: 22(int) Constant 5 + 34: TypePointer Uniform 23(ivec2) + 37: 22(int) Constant 0 + 39: TypePointer Function 25(ivec4) + 41: TypeImage 22(int) 2D array sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex2di4a): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 53: TypeInt 32 0 + 54: TypeVector 53(int) 4 + 55: TypePointer Function 54(ivec4) + 57: TypeImage 53(int) 2D array sampled format:Unknown + 58: TypePointer UniformConstant 57 + 59(g_tTex2du4a): 58(ptr) Variable UniformConstant + 62: TypeSampledImage 57 + 83: 53(int) Constant 4 + 84: TypeArray 23(ivec2) 83 + 127: 22(int) Constant 1 + 278: 22(int) Constant 3 + 346(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 347: TypePointer Function 346(PS_OUTPUT) + 349: 6(float) Constant 1065353216 + 350: 7(fvec4) ConstantComposite 349 349 349 349 + 352: TypePointer Function 6(float) + 354: TypePointer Output 7(fvec4) + 355(Color): 354(ptr) Variable Output + 358: TypePointer Output 6(float) + 359(Depth): 358(ptr) Variable Output + 363(g_sSamp2d): 15(ptr) Variable UniformConstant + 364: TypeImage 6(float) 1D array sampled format:Unknown + 365: TypePointer UniformConstant 364 +366(g_tTex1df4a): 365(ptr) Variable UniformConstant + 367: TypeImage 22(int) 1D array sampled format:Unknown + 368: TypePointer UniformConstant 367 +369(g_tTex1di4a): 368(ptr) Variable UniformConstant + 370: TypeImage 53(int) 1D array sampled format:Unknown + 371: TypePointer UniformConstant 370 +372(g_tTex1du4a): 371(ptr) Variable UniformConstant + 373: TypeImage 6(float) Cube array sampled format:Unknown + 374: TypePointer UniformConstant 373 +375(g_tTexcdf4a): 374(ptr) Variable UniformConstant + 376: TypeImage 22(int) Cube array sampled format:Unknown + 377: TypePointer UniformConstant 376 +378(g_tTexcdi4a): 377(ptr) Variable UniformConstant + 379: TypeImage 53(int) Cube array sampled format:Unknown + 380: TypePointer UniformConstant 379 +381(g_tTexcdu4a): 380(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(txval001): 8(ptr) Variable Function - 33(txval011): 32(ptr) Variable Function - 47(txval021): 46(ptr) Variable Function - 58(txval004): 8(ptr) Variable Function - 71(txval014): 32(ptr) Variable Function - 82(txval024): 46(ptr) Variable Function - 93(txval101): 8(ptr) Variable Function - 101(txval111): 32(ptr) Variable Function - 108(txval121): 46(ptr) Variable Function - 115(txval104): 8(ptr) Variable Function - 126(txval114): 32(ptr) Variable Function - 137(txval124): 46(ptr) Variable Function - 148(txval201): 8(ptr) Variable Function - 156(txval211): 32(ptr) Variable Function - 163(txval221): 46(ptr) Variable Function - 170(txval204): 8(ptr) Variable Function - 181(txval214): 32(ptr) Variable Function - 192(txval224): 46(ptr) Variable Function - 203(txval301): 8(ptr) Variable Function - 211(txval311): 32(ptr) Variable Function - 218(txval321): 46(ptr) Variable Function - 225(txval304): 8(ptr) Variable Function - 236(txval314): 32(ptr) Variable Function - 247(txval324): 46(ptr) Variable Function - 260(psout): 259(ptr) Variable Function + 40(txval011): 39(ptr) Variable Function + 56(txval021): 55(ptr) Variable Function + 69(txval004): 8(ptr) Variable Function + 87(txval014): 39(ptr) Variable Function + 103(txval024): 55(ptr) Variable Function + 119(txval101): 8(ptr) Variable Function + 129(txval111): 39(ptr) Variable Function + 138(txval121): 55(ptr) Variable Function + 147(txval104): 8(ptr) Variable Function + 163(txval114): 39(ptr) Variable Function + 179(txval124): 55(ptr) Variable Function + 195(txval201): 8(ptr) Variable Function + 204(txval211): 39(ptr) Variable Function + 213(txval221): 55(ptr) Variable Function + 222(txval204): 8(ptr) Variable Function + 238(txval214): 39(ptr) Variable Function + 254(txval224): 55(ptr) Variable Function + 270(txval301): 8(ptr) Variable Function + 280(txval311): 39(ptr) Variable Function + 289(txval321): 55(ptr) Variable Function + 298(txval304): 8(ptr) Variable Function + 314(txval314): 39(ptr) Variable Function + 330(txval324): 55(ptr) Variable Function + 348(psout): 347(ptr) Variable Function 13: 10 Load 12(g_tTex2df4a) 17: 14 Load 16(g_sSamp) 19: 18 SampledImage 13 17 - 23: 20(fvec3) Load 22(c3) - 28: 25(ivec2) Load 27(o2) - 30: 7(fvec4) ImageGather 19 23 29 Offset 28 - Store 9(txval001) 30 - 37: 34 Load 36(g_tTex2di4a) - 38: 14 Load 16(g_sSamp) - 40: 39 SampledImage 37 38 - 41: 20(fvec3) Load 22(c3) - 42: 25(ivec2) Load 27(o2) - 43: 31(ivec4) ImageGather 40 41 29 Offset 42 - Store 33(txval011) 43 - 51: 48 Load 50(g_tTex2du4a) - 52: 14 Load 16(g_sSamp) - 54: 53 SampledImage 51 52 - 55: 20(fvec3) Load 22(c3) - 56: 25(ivec2) Load 27(o2) - 57: 45(ivec4) ImageGather 54 55 29 Offset 56 - Store 47(txval021) 57 - 59: 10 Load 12(g_tTex2df4a) - 60: 14 Load 16(g_sSamp) - 61: 18 SampledImage 59 60 - 62: 20(fvec3) Load 22(c3) - 63: 25(ivec2) Load 27(o2) - 64: 25(ivec2) Load 27(o2) - 65: 25(ivec2) Load 27(o2) - 66: 25(ivec2) Load 27(o2) - 69: 68 CompositeConstruct 63 64 65 66 - 70: 7(fvec4) ImageGather 61 62 29 ConstOffsets 69 - Store 58(txval004) 70 - 72: 34 Load 36(g_tTex2di4a) - 73: 14 Load 16(g_sSamp) - 74: 39 SampledImage 72 73 - 75: 20(fvec3) Load 22(c3) - 76: 25(ivec2) Load 27(o2) - 77: 25(ivec2) Load 27(o2) - 78: 25(ivec2) Load 27(o2) - 79: 25(ivec2) Load 27(o2) - 80: 68 CompositeConstruct 76 77 78 79 - 81: 31(ivec4) ImageGather 74 75 29 ConstOffsets 80 - Store 71(txval014) 81 - 83: 48 Load 50(g_tTex2du4a) - 84: 14 Load 16(g_sSamp) - 85: 53 SampledImage 83 84 - 86: 20(fvec3) Load 22(c3) - 87: 25(ivec2) Load 27(o2) - 88: 25(ivec2) Load 27(o2) - 89: 25(ivec2) Load 27(o2) - 90: 25(ivec2) Load 27(o2) - 91: 68 CompositeConstruct 87 88 89 90 - 92: 45(ivec4) ImageGather 85 86 29 ConstOffsets 91 - Store 82(txval024) 92 - 94: 10 Load 12(g_tTex2df4a) - 95: 14 Load 16(g_sSamp) - 96: 18 SampledImage 94 95 - 97: 20(fvec3) Load 22(c3) - 98: 25(ivec2) Load 27(o2) - 100: 7(fvec4) ImageGather 96 97 99 Offset 98 - Store 93(txval101) 100 - 102: 34 Load 36(g_tTex2di4a) - 103: 14 Load 16(g_sSamp) - 104: 39 SampledImage 102 103 - 105: 20(fvec3) Load 22(c3) - 106: 25(ivec2) Load 27(o2) - 107: 31(ivec4) ImageGather 104 105 99 Offset 106 - Store 101(txval111) 107 - 109: 48 Load 50(g_tTex2du4a) - 110: 14 Load 16(g_sSamp) - 111: 53 SampledImage 109 110 - 112: 20(fvec3) Load 22(c3) - 113: 25(ivec2) Load 27(o2) - 114: 45(ivec4) ImageGather 111 112 99 Offset 113 - Store 108(txval121) 114 - 116: 10 Load 12(g_tTex2df4a) - 117: 14 Load 16(g_sSamp) - 118: 18 SampledImage 116 117 - 119: 20(fvec3) Load 22(c3) - 120: 25(ivec2) Load 27(o2) - 121: 25(ivec2) Load 27(o2) - 122: 25(ivec2) Load 27(o2) - 123: 25(ivec2) Load 27(o2) - 124: 68 CompositeConstruct 120 121 122 123 - 125: 7(fvec4) ImageGather 118 119 99 ConstOffsets 124 - Store 115(txval104) 125 - 127: 34 Load 36(g_tTex2di4a) - 128: 14 Load 16(g_sSamp) - 129: 39 SampledImage 127 128 - 130: 20(fvec3) Load 22(c3) - 131: 25(ivec2) Load 27(o2) - 132: 25(ivec2) Load 27(o2) - 133: 25(ivec2) Load 27(o2) - 134: 25(ivec2) Load 27(o2) - 135: 68 CompositeConstruct 131 132 133 134 - 136: 31(ivec4) ImageGather 129 130 99 ConstOffsets 135 - Store 126(txval114) 136 - 138: 48 Load 50(g_tTex2du4a) - 139: 14 Load 16(g_sSamp) - 140: 53 SampledImage 138 139 - 141: 20(fvec3) Load 22(c3) - 142: 25(ivec2) Load 27(o2) - 143: 25(ivec2) Load 27(o2) - 144: 25(ivec2) Load 27(o2) - 145: 25(ivec2) Load 27(o2) - 146: 68 CompositeConstruct 142 143 144 145 - 147: 45(ivec4) ImageGather 140 141 99 ConstOffsets 146 - Store 137(txval124) 147 - 149: 10 Load 12(g_tTex2df4a) - 150: 14 Load 16(g_sSamp) - 151: 18 SampledImage 149 150 - 152: 20(fvec3) Load 22(c3) - 153: 25(ivec2) Load 27(o2) - 155: 7(fvec4) ImageGather 151 152 154 Offset 153 - Store 148(txval201) 155 - 157: 34 Load 36(g_tTex2di4a) - 158: 14 Load 16(g_sSamp) - 159: 39 SampledImage 157 158 - 160: 20(fvec3) Load 22(c3) - 161: 25(ivec2) Load 27(o2) - 162: 31(ivec4) ImageGather 159 160 154 Offset 161 - Store 156(txval211) 162 - 164: 48 Load 50(g_tTex2du4a) + 31: 30(ptr) AccessChain 28 29 + 32: 21(fvec3) Load 31 + 35: 34(ptr) AccessChain 28 33 + 36: 23(ivec2) Load 35 + 38: 7(fvec4) ImageGather 19 32 37 Offset 36 + Store 9(txval001) 38 + 44: 41 Load 43(g_tTex2di4a) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 48: 30(ptr) AccessChain 28 29 + 49: 21(fvec3) Load 48 + 50: 34(ptr) AccessChain 28 33 + 51: 23(ivec2) Load 50 + 52: 25(ivec4) ImageGather 47 49 37 Offset 51 + Store 40(txval011) 52 + 60: 57 Load 59(g_tTex2du4a) + 61: 14 Load 16(g_sSamp) + 63: 62 SampledImage 60 61 + 64: 30(ptr) AccessChain 28 29 + 65: 21(fvec3) Load 64 + 66: 34(ptr) AccessChain 28 33 + 67: 23(ivec2) Load 66 + 68: 54(ivec4) ImageGather 63 65 37 Offset 67 + Store 56(txval021) 68 + 70: 10 Load 12(g_tTex2df4a) + 71: 14 Load 16(g_sSamp) + 72: 18 SampledImage 70 71 + 73: 30(ptr) AccessChain 28 29 + 74: 21(fvec3) Load 73 + 75: 34(ptr) AccessChain 28 33 + 76: 23(ivec2) Load 75 + 77: 34(ptr) AccessChain 28 33 + 78: 23(ivec2) Load 77 + 79: 34(ptr) AccessChain 28 33 + 80: 23(ivec2) Load 79 + 81: 34(ptr) AccessChain 28 33 + 82: 23(ivec2) Load 81 + 85: 84 CompositeConstruct 76 78 80 82 + 86: 7(fvec4) ImageGather 72 74 37 ConstOffsets 85 + Store 69(txval004) 86 + 88: 41 Load 43(g_tTex2di4a) + 89: 14 Load 16(g_sSamp) + 90: 46 SampledImage 88 89 + 91: 30(ptr) AccessChain 28 29 + 92: 21(fvec3) Load 91 + 93: 34(ptr) AccessChain 28 33 + 94: 23(ivec2) Load 93 + 95: 34(ptr) AccessChain 28 33 + 96: 23(ivec2) Load 95 + 97: 34(ptr) AccessChain 28 33 + 98: 23(ivec2) Load 97 + 99: 34(ptr) AccessChain 28 33 + 100: 23(ivec2) Load 99 + 101: 84 CompositeConstruct 94 96 98 100 + 102: 25(ivec4) ImageGather 90 92 37 ConstOffsets 101 + Store 87(txval014) 102 + 104: 57 Load 59(g_tTex2du4a) + 105: 14 Load 16(g_sSamp) + 106: 62 SampledImage 104 105 + 107: 30(ptr) AccessChain 28 29 + 108: 21(fvec3) Load 107 + 109: 34(ptr) AccessChain 28 33 + 110: 23(ivec2) Load 109 + 111: 34(ptr) AccessChain 28 33 + 112: 23(ivec2) Load 111 + 113: 34(ptr) AccessChain 28 33 + 114: 23(ivec2) Load 113 + 115: 34(ptr) AccessChain 28 33 + 116: 23(ivec2) Load 115 + 117: 84 CompositeConstruct 110 112 114 116 + 118: 54(ivec4) ImageGather 106 108 37 ConstOffsets 117 + Store 103(txval024) 118 + 120: 10 Load 12(g_tTex2df4a) + 121: 14 Load 16(g_sSamp) + 122: 18 SampledImage 120 121 + 123: 30(ptr) AccessChain 28 29 + 124: 21(fvec3) Load 123 + 125: 34(ptr) AccessChain 28 33 + 126: 23(ivec2) Load 125 + 128: 7(fvec4) ImageGather 122 124 127 Offset 126 + Store 119(txval101) 128 + 130: 41 Load 43(g_tTex2di4a) + 131: 14 Load 16(g_sSamp) + 132: 46 SampledImage 130 131 + 133: 30(ptr) AccessChain 28 29 + 134: 21(fvec3) Load 133 + 135: 34(ptr) AccessChain 28 33 + 136: 23(ivec2) Load 135 + 137: 25(ivec4) ImageGather 132 134 127 Offset 136 + Store 129(txval111) 137 + 139: 57 Load 59(g_tTex2du4a) + 140: 14 Load 16(g_sSamp) + 141: 62 SampledImage 139 140 + 142: 30(ptr) AccessChain 28 29 + 143: 21(fvec3) Load 142 + 144: 34(ptr) AccessChain 28 33 + 145: 23(ivec2) Load 144 + 146: 54(ivec4) ImageGather 141 143 127 Offset 145 + Store 138(txval121) 146 + 148: 10 Load 12(g_tTex2df4a) + 149: 14 Load 16(g_sSamp) + 150: 18 SampledImage 148 149 + 151: 30(ptr) AccessChain 28 29 + 152: 21(fvec3) Load 151 + 153: 34(ptr) AccessChain 28 33 + 154: 23(ivec2) Load 153 + 155: 34(ptr) AccessChain 28 33 + 156: 23(ivec2) Load 155 + 157: 34(ptr) AccessChain 28 33 + 158: 23(ivec2) Load 157 + 159: 34(ptr) AccessChain 28 33 + 160: 23(ivec2) Load 159 + 161: 84 CompositeConstruct 154 156 158 160 + 162: 7(fvec4) ImageGather 150 152 127 ConstOffsets 161 + Store 147(txval104) 162 + 164: 41 Load 43(g_tTex2di4a) 165: 14 Load 16(g_sSamp) - 166: 53 SampledImage 164 165 - 167: 20(fvec3) Load 22(c3) - 168: 25(ivec2) Load 27(o2) - 169: 45(ivec4) ImageGather 166 167 154 Offset 168 - Store 163(txval221) 169 - 171: 10 Load 12(g_tTex2df4a) - 172: 14 Load 16(g_sSamp) - 173: 18 SampledImage 171 172 - 174: 20(fvec3) Load 22(c3) - 175: 25(ivec2) Load 27(o2) - 176: 25(ivec2) Load 27(o2) - 177: 25(ivec2) Load 27(o2) - 178: 25(ivec2) Load 27(o2) - 179: 68 CompositeConstruct 175 176 177 178 - 180: 7(fvec4) ImageGather 173 174 154 ConstOffsets 179 - Store 170(txval204) 180 - 182: 34 Load 36(g_tTex2di4a) - 183: 14 Load 16(g_sSamp) - 184: 39 SampledImage 182 183 - 185: 20(fvec3) Load 22(c3) - 186: 25(ivec2) Load 27(o2) - 187: 25(ivec2) Load 27(o2) - 188: 25(ivec2) Load 27(o2) - 189: 25(ivec2) Load 27(o2) - 190: 68 CompositeConstruct 186 187 188 189 - 191: 31(ivec4) ImageGather 184 185 154 ConstOffsets 190 - Store 181(txval214) 191 - 193: 48 Load 50(g_tTex2du4a) - 194: 14 Load 16(g_sSamp) - 195: 53 SampledImage 193 194 - 196: 20(fvec3) Load 22(c3) - 197: 25(ivec2) Load 27(o2) - 198: 25(ivec2) Load 27(o2) - 199: 25(ivec2) Load 27(o2) - 200: 25(ivec2) Load 27(o2) - 201: 68 CompositeConstruct 197 198 199 200 - 202: 45(ivec4) ImageGather 195 196 154 ConstOffsets 201 - Store 192(txval224) 202 - 204: 10 Load 12(g_tTex2df4a) - 205: 14 Load 16(g_sSamp) - 206: 18 SampledImage 204 205 - 207: 20(fvec3) Load 22(c3) - 208: 25(ivec2) Load 27(o2) - 210: 7(fvec4) ImageGather 206 207 209 Offset 208 - Store 203(txval301) 210 - 212: 34 Load 36(g_tTex2di4a) - 213: 14 Load 16(g_sSamp) - 214: 39 SampledImage 212 213 - 215: 20(fvec3) Load 22(c3) - 216: 25(ivec2) Load 27(o2) - 217: 31(ivec4) ImageGather 214 215 209 Offset 216 - Store 211(txval311) 217 - 219: 48 Load 50(g_tTex2du4a) - 220: 14 Load 16(g_sSamp) - 221: 53 SampledImage 219 220 - 222: 20(fvec3) Load 22(c3) - 223: 25(ivec2) Load 27(o2) - 224: 45(ivec4) ImageGather 221 222 209 Offset 223 - Store 218(txval321) 224 - 226: 10 Load 12(g_tTex2df4a) - 227: 14 Load 16(g_sSamp) - 228: 18 SampledImage 226 227 - 229: 20(fvec3) Load 22(c3) - 230: 25(ivec2) Load 27(o2) - 231: 25(ivec2) Load 27(o2) - 232: 25(ivec2) Load 27(o2) - 233: 25(ivec2) Load 27(o2) - 234: 68 CompositeConstruct 230 231 232 233 - 235: 7(fvec4) ImageGather 228 229 209 ConstOffsets 234 - Store 225(txval304) 235 - 237: 34 Load 36(g_tTex2di4a) - 238: 14 Load 16(g_sSamp) - 239: 39 SampledImage 237 238 - 240: 20(fvec3) Load 22(c3) - 241: 25(ivec2) Load 27(o2) - 242: 25(ivec2) Load 27(o2) - 243: 25(ivec2) Load 27(o2) - 244: 25(ivec2) Load 27(o2) - 245: 68 CompositeConstruct 241 242 243 244 - 246: 31(ivec4) ImageGather 239 240 209 ConstOffsets 245 - Store 236(txval314) 246 - 248: 48 Load 50(g_tTex2du4a) - 249: 14 Load 16(g_sSamp) - 250: 53 SampledImage 248 249 - 251: 20(fvec3) Load 22(c3) - 252: 25(ivec2) Load 27(o2) - 253: 25(ivec2) Load 27(o2) - 254: 25(ivec2) Load 27(o2) - 255: 25(ivec2) Load 27(o2) - 256: 68 CompositeConstruct 252 253 254 255 - 257: 45(ivec4) ImageGather 250 251 209 ConstOffsets 256 - Store 247(txval324) 257 - 263: 8(ptr) AccessChain 260(psout) 29 - Store 263 262 - 265: 264(ptr) AccessChain 260(psout) 99 - Store 265 261 - 268: 8(ptr) AccessChain 260(psout) 29 - 269: 7(fvec4) Load 268 - Store 267(Color) 269 - 272: 264(ptr) AccessChain 260(psout) 99 - 273: 6(float) Load 272 - Store 271(Depth) 273 + 166: 46 SampledImage 164 165 + 167: 30(ptr) AccessChain 28 29 + 168: 21(fvec3) Load 167 + 169: 34(ptr) AccessChain 28 33 + 170: 23(ivec2) Load 169 + 171: 34(ptr) AccessChain 28 33 + 172: 23(ivec2) Load 171 + 173: 34(ptr) AccessChain 28 33 + 174: 23(ivec2) Load 173 + 175: 34(ptr) AccessChain 28 33 + 176: 23(ivec2) Load 175 + 177: 84 CompositeConstruct 170 172 174 176 + 178: 25(ivec4) ImageGather 166 168 127 ConstOffsets 177 + Store 163(txval114) 178 + 180: 57 Load 59(g_tTex2du4a) + 181: 14 Load 16(g_sSamp) + 182: 62 SampledImage 180 181 + 183: 30(ptr) AccessChain 28 29 + 184: 21(fvec3) Load 183 + 185: 34(ptr) AccessChain 28 33 + 186: 23(ivec2) Load 185 + 187: 34(ptr) AccessChain 28 33 + 188: 23(ivec2) Load 187 + 189: 34(ptr) AccessChain 28 33 + 190: 23(ivec2) Load 189 + 191: 34(ptr) AccessChain 28 33 + 192: 23(ivec2) Load 191 + 193: 84 CompositeConstruct 186 188 190 192 + 194: 54(ivec4) ImageGather 182 184 127 ConstOffsets 193 + Store 179(txval124) 194 + 196: 10 Load 12(g_tTex2df4a) + 197: 14 Load 16(g_sSamp) + 198: 18 SampledImage 196 197 + 199: 30(ptr) AccessChain 28 29 + 200: 21(fvec3) Load 199 + 201: 34(ptr) AccessChain 28 33 + 202: 23(ivec2) Load 201 + 203: 7(fvec4) ImageGather 198 200 29 Offset 202 + Store 195(txval201) 203 + 205: 41 Load 43(g_tTex2di4a) + 206: 14 Load 16(g_sSamp) + 207: 46 SampledImage 205 206 + 208: 30(ptr) AccessChain 28 29 + 209: 21(fvec3) Load 208 + 210: 34(ptr) AccessChain 28 33 + 211: 23(ivec2) Load 210 + 212: 25(ivec4) ImageGather 207 209 29 Offset 211 + Store 204(txval211) 212 + 214: 57 Load 59(g_tTex2du4a) + 215: 14 Load 16(g_sSamp) + 216: 62 SampledImage 214 215 + 217: 30(ptr) AccessChain 28 29 + 218: 21(fvec3) Load 217 + 219: 34(ptr) AccessChain 28 33 + 220: 23(ivec2) Load 219 + 221: 54(ivec4) ImageGather 216 218 29 Offset 220 + Store 213(txval221) 221 + 223: 10 Load 12(g_tTex2df4a) + 224: 14 Load 16(g_sSamp) + 225: 18 SampledImage 223 224 + 226: 30(ptr) AccessChain 28 29 + 227: 21(fvec3) Load 226 + 228: 34(ptr) AccessChain 28 33 + 229: 23(ivec2) Load 228 + 230: 34(ptr) AccessChain 28 33 + 231: 23(ivec2) Load 230 + 232: 34(ptr) AccessChain 28 33 + 233: 23(ivec2) Load 232 + 234: 34(ptr) AccessChain 28 33 + 235: 23(ivec2) Load 234 + 236: 84 CompositeConstruct 229 231 233 235 + 237: 7(fvec4) ImageGather 225 227 29 ConstOffsets 236 + Store 222(txval204) 237 + 239: 41 Load 43(g_tTex2di4a) + 240: 14 Load 16(g_sSamp) + 241: 46 SampledImage 239 240 + 242: 30(ptr) AccessChain 28 29 + 243: 21(fvec3) Load 242 + 244: 34(ptr) AccessChain 28 33 + 245: 23(ivec2) Load 244 + 246: 34(ptr) AccessChain 28 33 + 247: 23(ivec2) Load 246 + 248: 34(ptr) AccessChain 28 33 + 249: 23(ivec2) Load 248 + 250: 34(ptr) AccessChain 28 33 + 251: 23(ivec2) Load 250 + 252: 84 CompositeConstruct 245 247 249 251 + 253: 25(ivec4) ImageGather 241 243 29 ConstOffsets 252 + Store 238(txval214) 253 + 255: 57 Load 59(g_tTex2du4a) + 256: 14 Load 16(g_sSamp) + 257: 62 SampledImage 255 256 + 258: 30(ptr) AccessChain 28 29 + 259: 21(fvec3) Load 258 + 260: 34(ptr) AccessChain 28 33 + 261: 23(ivec2) Load 260 + 262: 34(ptr) AccessChain 28 33 + 263: 23(ivec2) Load 262 + 264: 34(ptr) AccessChain 28 33 + 265: 23(ivec2) Load 264 + 266: 34(ptr) AccessChain 28 33 + 267: 23(ivec2) Load 266 + 268: 84 CompositeConstruct 261 263 265 267 + 269: 54(ivec4) ImageGather 257 259 29 ConstOffsets 268 + Store 254(txval224) 269 + 271: 10 Load 12(g_tTex2df4a) + 272: 14 Load 16(g_sSamp) + 273: 18 SampledImage 271 272 + 274: 30(ptr) AccessChain 28 29 + 275: 21(fvec3) Load 274 + 276: 34(ptr) AccessChain 28 33 + 277: 23(ivec2) Load 276 + 279: 7(fvec4) ImageGather 273 275 278 Offset 277 + Store 270(txval301) 279 + 281: 41 Load 43(g_tTex2di4a) + 282: 14 Load 16(g_sSamp) + 283: 46 SampledImage 281 282 + 284: 30(ptr) AccessChain 28 29 + 285: 21(fvec3) Load 284 + 286: 34(ptr) AccessChain 28 33 + 287: 23(ivec2) Load 286 + 288: 25(ivec4) ImageGather 283 285 278 Offset 287 + Store 280(txval311) 288 + 290: 57 Load 59(g_tTex2du4a) + 291: 14 Load 16(g_sSamp) + 292: 62 SampledImage 290 291 + 293: 30(ptr) AccessChain 28 29 + 294: 21(fvec3) Load 293 + 295: 34(ptr) AccessChain 28 33 + 296: 23(ivec2) Load 295 + 297: 54(ivec4) ImageGather 292 294 278 Offset 296 + Store 289(txval321) 297 + 299: 10 Load 12(g_tTex2df4a) + 300: 14 Load 16(g_sSamp) + 301: 18 SampledImage 299 300 + 302: 30(ptr) AccessChain 28 29 + 303: 21(fvec3) Load 302 + 304: 34(ptr) AccessChain 28 33 + 305: 23(ivec2) Load 304 + 306: 34(ptr) AccessChain 28 33 + 307: 23(ivec2) Load 306 + 308: 34(ptr) AccessChain 28 33 + 309: 23(ivec2) Load 308 + 310: 34(ptr) AccessChain 28 33 + 311: 23(ivec2) Load 310 + 312: 84 CompositeConstruct 305 307 309 311 + 313: 7(fvec4) ImageGather 301 303 278 ConstOffsets 312 + Store 298(txval304) 313 + 315: 41 Load 43(g_tTex2di4a) + 316: 14 Load 16(g_sSamp) + 317: 46 SampledImage 315 316 + 318: 30(ptr) AccessChain 28 29 + 319: 21(fvec3) Load 318 + 320: 34(ptr) AccessChain 28 33 + 321: 23(ivec2) Load 320 + 322: 34(ptr) AccessChain 28 33 + 323: 23(ivec2) Load 322 + 324: 34(ptr) AccessChain 28 33 + 325: 23(ivec2) Load 324 + 326: 34(ptr) AccessChain 28 33 + 327: 23(ivec2) Load 326 + 328: 84 CompositeConstruct 321 323 325 327 + 329: 25(ivec4) ImageGather 317 319 278 ConstOffsets 328 + Store 314(txval314) 329 + 331: 57 Load 59(g_tTex2du4a) + 332: 14 Load 16(g_sSamp) + 333: 62 SampledImage 331 332 + 334: 30(ptr) AccessChain 28 29 + 335: 21(fvec3) Load 334 + 336: 34(ptr) AccessChain 28 33 + 337: 23(ivec2) Load 336 + 338: 34(ptr) AccessChain 28 33 + 339: 23(ivec2) Load 338 + 340: 34(ptr) AccessChain 28 33 + 341: 23(ivec2) Load 340 + 342: 34(ptr) AccessChain 28 33 + 343: 23(ivec2) Load 342 + 344: 84 CompositeConstruct 337 339 341 343 + 345: 54(ivec4) ImageGather 333 335 278 ConstOffsets 344 + Store 330(txval324) 345 + 351: 8(ptr) AccessChain 348(psout) 37 + Store 351 350 + 353: 352(ptr) AccessChain 348(psout) 127 + Store 353 349 + 356: 8(ptr) AccessChain 348(psout) 37 + 357: 7(fvec4) Load 356 + Store 355(Color) 357 + 360: 352(ptr) AccessChain 348(psout) 127 + 361: 6(float) Load 360 + Store 359(Depth) 361 Return FunctionEnd diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out index 18b35e4c..8aba16ae 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.getdimensions.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:46 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:46 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:46 Function Parameters: 0:? Sequence 0:65 Sequence @@ -1114,7 +1114,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:46 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:46 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:46 Function Parameters: 0:? Sequence 0:65 Sequence diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out index 3c063c12..1d72e873 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.getdimensions.dx10.vert Shader version: 450 0:? Sequence -0:11 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:11 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Sequence 0:21 Sequence @@ -56,7 +56,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:11 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:11 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Sequence 0:21 Sequence diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out index a44e9445..41f6ca2d 100644 --- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -7,7 +7,7 @@ ERROR: 2 compilation errors. No code generated. Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:13 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:13 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:13 Function Parameters: 0:? Sequence 0:16 Sequence @@ -72,7 +72,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:13 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:13 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:13 Function Parameters: 0:? Sequence 0:16 Sequence diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out index 499015a4..3b329ae1 100755 --- a/Test/baseResults/hlsl.if.frag.out +++ b/Test/baseResults/hlsl.if.frag.out @@ -2,7 +2,7 @@ hlsl.if.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -103,7 +103,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out index 99acc235..b31921b4 100755 --- a/Test/baseResults/hlsl.init.frag.out +++ b/Test/baseResults/hlsl.init.frag.out @@ -78,7 +78,7 @@ gl_FragCoord origin is upper left 0:18 Constant: 0:18 4 (const uint) 0:18 5 (const uint) -0:21 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) +0:21 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:21 Function Parameters: 0:21 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -236,7 +236,7 @@ gl_FragCoord origin is upper left 0:18 Constant: 0:18 4 (const uint) 0:18 5 (const uint) -0:21 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) +0:21 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:21 Function Parameters: 0:21 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out index 3657cb22..9ba8b118 100644 --- a/Test/baseResults/hlsl.init2.frag.out +++ b/Test/baseResults/hlsl.init2.frag.out @@ -2,7 +2,7 @@ hlsl.init2.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:3 Function Definition: Test1( (global void) +0:3 Function Definition: Test1( (temp void) 0:3 Function Parameters: 0:? Sequence 0:5 Sequence @@ -29,10 +29,10 @@ gl_FragCoord origin is upper left 0:20 8.000000 0:20 9.000000 0:20 10.000000 -0:26 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:26 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:26 Function Parameters: 0:? Sequence -0:27 Function Call: Test1( (global void) +0:27 Function Call: Test1( (temp void) 0:30 move second child to first child (temp 4-component vector of float) 0:30 color: direct index for structure (temp 4-component vector of float) 0:30 'ps_output' (temp structure{temp 4-component vector of float color}) @@ -62,7 +62,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:3 Function Definition: Test1( (global void) +0:3 Function Definition: Test1( (temp void) 0:3 Function Parameters: 0:? Sequence 0:5 Sequence @@ -89,10 +89,10 @@ gl_FragCoord origin is upper left 0:20 8.000000 0:20 9.000000 0:20 10.000000 -0:26 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:26 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:26 Function Parameters: 0:? Sequence -0:27 Function Call: Test1( (global void) +0:27 Function Call: Test1( (temp void) 0:30 move second child to first child (temp 4-component vector of float) 0:30 color: direct index for structure (temp 4-component vector of float) 0:30 'ps_output' (temp structure{temp 4-component vector of float color}) diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out index 2fcb7222..b3b3d8fd 100644 --- a/Test/baseResults/hlsl.inoutquals.frag.out +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -2,7 +2,7 @@ hlsl.inoutquals.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: MyFunc(f1;f1;f1; (global void) +0:8 Function Definition: MyFunc(f1;f1;f1; (temp void) 0:8 Function Parameters: 0:8 'x' (in float) 0:8 'y' (out float) @@ -18,7 +18,7 @@ gl_FragCoord origin is upper left 0:11 'x' (in float) 0:11 Constant: 0:11 -1.000000 -0:15 Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float Depth}) +0:15 Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: 0:15 'inpos' (noperspective in 4-component vector of float FragCoord) 0:? Sequence @@ -31,7 +31,7 @@ gl_FragCoord origin is upper left 0:18 'z' (temp float) 0:18 Constant: 0:18 3.000000 -0:19 Function Call: MyFunc(f1;f1;f1; (global void) +0:19 Function Call: MyFunc(f1;f1;f1; (temp void) 0:19 'x' (temp float) 0:19 'y' (temp float) 0:19 'z' (temp float) @@ -82,7 +82,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: MyFunc(f1;f1;f1; (global void) +0:8 Function Definition: MyFunc(f1;f1;f1; (temp void) 0:8 Function Parameters: 0:8 'x' (in float) 0:8 'y' (out float) @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:11 'x' (in float) 0:11 Constant: 0:11 -1.000000 -0:15 Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float Depth}) +0:15 Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: 0:15 'inpos' (noperspective in 4-component vector of float FragCoord) 0:? Sequence @@ -111,7 +111,7 @@ gl_FragCoord origin is upper left 0:18 'z' (temp float) 0:18 Constant: 0:18 3.000000 -0:19 Function Call: MyFunc(f1;f1;f1; (global void) +0:19 Function Call: MyFunc(f1;f1;f1; (temp void) 0:19 'x' (temp float) 0:19 'y' (temp float) 0:19 'z' (temp float) diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out index 95e17258..5d92dd1f 100644 --- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out +++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out @@ -2,7 +2,7 @@ hlsl.intrinsics.barriers.comp Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:3 Function Definition: ComputeShaderFunction( (global float) +0:3 Function Definition: ComputeShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 MemoryBarrier (global void) @@ -27,7 +27,7 @@ Linked compute stage: Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:3 Function Definition: ComputeShaderFunction( (global float) +0:3 Function Definition: ComputeShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 MemoryBarrier (global void) diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out index b760c65e..f7339755 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -2,7 +2,7 @@ hlsl.intrinsics.comp Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float) +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) @@ -74,7 +74,7 @@ local_size = (1, 1, 1) 0:41 Branch: Return with expression 0:41 Constant: 0:41 0.000000 -0:45 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float) +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) @@ -83,7 +83,7 @@ local_size = (1, 1, 1) 0:47 Branch: Return with expression 0:47 Constant: 0:47 0.000000 -0:51 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float) +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) @@ -156,7 +156,7 @@ local_size = (1, 1, 1) 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:78 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +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) @@ -230,7 +230,7 @@ local_size = (1, 1, 1) 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:105 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) +0:105 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float) 0:105 Function Parameters: 0:105 'inF0' (layout(location=0 ) in 4-component vector of float) 0:105 'inF1' (layout(location=1 ) in 4-component vector of float) @@ -335,7 +335,7 @@ Linked compute stage: Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float) +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) @@ -407,7 +407,7 @@ local_size = (1, 1, 1) 0:41 Branch: Return with expression 0:41 Constant: 0:41 0.000000 -0:45 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float) +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) @@ -416,7 +416,7 @@ local_size = (1, 1, 1) 0:47 Branch: Return with expression 0:47 Constant: 0:47 0.000000 -0:51 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float) +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) @@ -489,7 +489,7 @@ local_size = (1, 1, 1) 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:78 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +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) @@ -563,7 +563,7 @@ local_size = (1, 1, 1) 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:105 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) +0:105 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float) 0:105 Function Parameters: 0:105 'inF0' (layout(location=0 ) in 4-component vector of float) 0:105 'inF1' (layout(location=1 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out index 0dba0329..554e5520 100644 --- a/Test/baseResults/hlsl.intrinsics.double.frag.out +++ b/Test/baseResults/hlsl.intrinsics.double.frag.out @@ -2,7 +2,7 @@ hlsl.intrinsics.double.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:5 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float) +0:5 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (temp float) 0:5 Function Parameters: 0:5 'inDV1a' (layout(location=0 ) in double) 0:5 'inDV1b' (layout(location=1 ) in double) @@ -51,7 +51,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:5 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float) +0:5 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (temp float) 0:5 Function Parameters: 0:5 'inDV1a' (layout(location=0 ) in double) 0:5 'inDV1b' (layout(location=1 ) in double) diff --git a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out index a23a8833..8f8dd610 100644 --- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out +++ b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out @@ -2,7 +2,7 @@ hlsl.intrinsics.evalfns.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:3 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void) +0:3 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void) 0:3 Function Parameters: 0:3 'inF1' (layout(location=0 ) in float) 0:3 'inF2' (layout(location=1 ) in 2-component vector of float) @@ -57,7 +57,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:3 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void) +0:3 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void) 0:3 Function Parameters: 0:3 'inF1' (layout(location=0 ) in float) 0:3 'inF2' (layout(location=1 ) in 2-component vector of float) diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out index 21daced7..5fcb5f99 100644 --- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out +++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out @@ -9,7 +9,7 @@ ERROR: 4 compilation errors. No code generated. Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:2 Function Definition: PixelShaderFunctionS(f1; (global float) +0:2 Function Definition: PixelShaderFunctionS(f1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:? Sequence @@ -19,14 +19,14 @@ ERROR: node is still EOpNull! 0:5 Branch: Return with expression 0:5 Constant: 0:5 0.000000 -0:9 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float) +0:9 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of float) 0:9 Function Parameters: 0:9 'inF0' (in 1-component vector of float) 0:? Sequence 0:11 Branch: Return with expression 0:11 Constant: 0:11 0.000000 -0:15 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float) +0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float) 0:15 Function Parameters: 0:15 'inF0' (in 2-component vector of float) 0:? Sequence @@ -37,7 +37,7 @@ ERROR: node is still EOpNull! 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:22 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float) +0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float) 0:22 Function Parameters: 0:22 'inF0' (in 3-component vector of float) 0:? Sequence @@ -49,7 +49,7 @@ ERROR: node is still EOpNull! 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:29 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:29 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:29 Function Parameters: 0:29 'inF0' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -76,7 +76,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:2 Function Definition: PixelShaderFunctionS(f1; (global float) +0:2 Function Definition: PixelShaderFunctionS(f1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:? Sequence @@ -86,14 +86,14 @@ ERROR: node is still EOpNull! 0:5 Branch: Return with expression 0:5 Constant: 0:5 0.000000 -0:9 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float) +0:9 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of float) 0:9 Function Parameters: 0:9 'inF0' (in 1-component vector of float) 0:? Sequence 0:11 Branch: Return with expression 0:11 Constant: 0:11 0.000000 -0:15 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float) +0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float) 0:15 Function Parameters: 0:15 'inF0' (in 2-component vector of float) 0:? Sequence @@ -104,7 +104,7 @@ ERROR: node is still EOpNull! 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:22 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float) +0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float) 0:22 Function Parameters: 0:22 'inF0' (in 3-component vector of float) 0:? Sequence @@ -116,7 +116,7 @@ ERROR: node is still EOpNull! 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:29 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:29 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:29 Function Parameters: 0:29 'inF0' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 151bdb42..09f88a86 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -2,7 +2,7 @@ hlsl.intrinsics.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float) +0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (temp float) 0:17 Function Parameters: 0:17 'inF0' (in float) 0:17 'inF1' (in float) @@ -339,7 +339,7 @@ gl_FragCoord origin is upper left 0:85 Branch: Return with expression 0:85 Constant: 0:85 0.000000 -0:89 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float) +0:89 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float) 0:89 Function Parameters: 0:89 'inF0' (in 1-component vector of float) 0:89 'inF1' (in 1-component vector of float) @@ -348,7 +348,7 @@ gl_FragCoord origin is upper left 0:91 Branch: Return with expression 0:91 Constant: 0:91 0.000000 -0:95 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float) +0:95 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float) 0:95 Function Parameters: 0:95 'inF0' (in 2-component vector of float) 0:95 'inF1' (in 2-component vector of float) @@ -733,7 +733,7 @@ gl_FragCoord origin is upper left 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float) 0:178 Function Parameters: 0:178 'inF0' (in 3-component vector of float) 0:178 'inF1' (in 3-component vector of float) @@ -1138,7 +1138,7 @@ gl_FragCoord origin is upper left 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) +0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float) 0:260 Function Parameters: 0:260 'inF0' (in 4-component vector of float) 0:260 'inF1' (in 4-component vector of float) @@ -1558,7 +1558,7 @@ gl_FragCoord origin is upper left 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:401 Function Parameters: 0:401 'inF0' (in 2X2 matrix of float) 0:401 'inF1' (in 2X2 matrix of float) @@ -1846,7 +1846,7 @@ gl_FragCoord origin is upper left 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:410 Function Parameters: 0:410 'inF0' (in 3X3 matrix of float) 0:410 'inF1' (in 3X3 matrix of float) @@ -2144,7 +2144,7 @@ gl_FragCoord origin is upper left 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:419 Function Parameters: 0:419 'inF0' (in 4X4 matrix of float) 0:419 'inF1' (in 4X4 matrix of float) @@ -2456,7 +2456,7 @@ gl_FragCoord origin is upper left 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void) +0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void) 0:442 Function Parameters: 0:442 'inF0' (in float) 0:442 'inF1' (in float) @@ -2519,7 +2519,7 @@ gl_FragCoord origin is upper left 0:443 matrix-multiply (temp 2X2 matrix of float) 0:443 'inFM1' (in 2X2 matrix of float) 0:443 'inFM0' (in 2X2 matrix of float) -0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) +0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void) 0:449 Function Parameters: 0:449 'inF0' (in float) 0:449 'inF1' (in float) @@ -2582,7 +2582,7 @@ gl_FragCoord origin is upper left 0:450 matrix-multiply (temp 3X3 matrix of float) 0:450 'inFM1' (in 3X3 matrix of float) 0:450 'inFM0' (in 3X3 matrix of float) -0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) +0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void) 0:456 Function Parameters: 0:456 'inF0' (in float) 0:456 'inF1' (in float) @@ -2645,7 +2645,7 @@ gl_FragCoord origin is upper left 0:457 matrix-multiply (temp 4X4 matrix of float) 0:457 'inFM1' (in 4X4 matrix of float) 0:457 'inFM0' (in 4X4 matrix of float) -0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void) +0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void) 0:466 Function Parameters: 0:466 'inF0' (in float) 0:466 'inF1' (in float) @@ -2759,7 +2759,7 @@ gl_FragCoord origin is upper left 0:483 matrix-multiply (temp 3X4 matrix of float) 0:483 'inFM2x4' (in 2X4 matrix of float) 0:483 'inFM3x2' (in 3X2 matrix of float) -0:489 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:489 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:489 Function Parameters: 0:? Sequence 0:491 move second child to first child (temp 4-component vector of float) @@ -2803,7 +2803,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float) +0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (temp float) 0:17 Function Parameters: 0:17 'inF0' (in float) 0:17 'inF1' (in float) @@ -3140,7 +3140,7 @@ gl_FragCoord origin is upper left 0:85 Branch: Return with expression 0:85 Constant: 0:85 0.000000 -0:89 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float) +0:89 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float) 0:89 Function Parameters: 0:89 'inF0' (in 1-component vector of float) 0:89 'inF1' (in 1-component vector of float) @@ -3149,7 +3149,7 @@ gl_FragCoord origin is upper left 0:91 Branch: Return with expression 0:91 Constant: 0:91 0.000000 -0:95 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float) +0:95 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float) 0:95 Function Parameters: 0:95 'inF0' (in 2-component vector of float) 0:95 'inF1' (in 2-component vector of float) @@ -3534,7 +3534,7 @@ gl_FragCoord origin is upper left 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float) 0:178 Function Parameters: 0:178 'inF0' (in 3-component vector of float) 0:178 'inF1' (in 3-component vector of float) @@ -3939,7 +3939,7 @@ gl_FragCoord origin is upper left 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) +0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float) 0:260 Function Parameters: 0:260 'inF0' (in 4-component vector of float) 0:260 'inF1' (in 4-component vector of float) @@ -4359,7 +4359,7 @@ gl_FragCoord origin is upper left 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:401 Function Parameters: 0:401 'inF0' (in 2X2 matrix of float) 0:401 'inF1' (in 2X2 matrix of float) @@ -4647,7 +4647,7 @@ gl_FragCoord origin is upper left 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:410 Function Parameters: 0:410 'inF0' (in 3X3 matrix of float) 0:410 'inF1' (in 3X3 matrix of float) @@ -4945,7 +4945,7 @@ gl_FragCoord origin is upper left 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:419 Function Parameters: 0:419 'inF0' (in 4X4 matrix of float) 0:419 'inF1' (in 4X4 matrix of float) @@ -5257,7 +5257,7 @@ gl_FragCoord origin is upper left 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void) +0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void) 0:442 Function Parameters: 0:442 'inF0' (in float) 0:442 'inF1' (in float) @@ -5320,7 +5320,7 @@ gl_FragCoord origin is upper left 0:443 matrix-multiply (temp 2X2 matrix of float) 0:443 'inFM1' (in 2X2 matrix of float) 0:443 'inFM0' (in 2X2 matrix of float) -0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) +0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void) 0:449 Function Parameters: 0:449 'inF0' (in float) 0:449 'inF1' (in float) @@ -5383,7 +5383,7 @@ gl_FragCoord origin is upper left 0:450 matrix-multiply (temp 3X3 matrix of float) 0:450 'inFM1' (in 3X3 matrix of float) 0:450 'inFM0' (in 3X3 matrix of float) -0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) +0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void) 0:456 Function Parameters: 0:456 'inF0' (in float) 0:456 'inF1' (in float) @@ -5446,7 +5446,7 @@ gl_FragCoord origin is upper left 0:457 matrix-multiply (temp 4X4 matrix of float) 0:457 'inFM1' (in 4X4 matrix of float) 0:457 'inFM0' (in 4X4 matrix of float) -0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void) +0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void) 0:466 Function Parameters: 0:466 'inF0' (in float) 0:466 'inF1' (in float) @@ -5560,7 +5560,7 @@ gl_FragCoord origin is upper left 0:483 matrix-multiply (temp 3X4 matrix of float) 0:483 'inFM2x4' (in 2X4 matrix of float) 0:483 'inFM3x2' (in 3X2 matrix of float) -0:489 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:489 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:489 Function Parameters: 0:? Sequence 0:491 move second child to first child (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out index eb3cee7d..6b393048 100644 --- a/Test/baseResults/hlsl.intrinsics.lit.frag.out +++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out @@ -2,7 +2,7 @@ hlsl.intrinsics.lit.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(f1;f1;f1; (global void) +0:2 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void) 0:2 Function Parameters: 0:2 'n_dot_l' (layout(location=0 ) in float) 0:2 'n_dot_h' (layout(location=1 ) in float) @@ -47,7 +47,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(f1;f1;f1; (global void) +0:2 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void) 0:2 Function Parameters: 0:2 'n_dot_l' (layout(location=0 ) in float) 0:2 'n_dot_h' (layout(location=1 ) in float) diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out index 01008644..44dedf77 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.comp.out +++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out @@ -2,7 +2,7 @@ hlsl.intrinsics.negative.comp Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float) +0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -12,7 +12,7 @@ local_size = (1, 1, 1) 0:53 Branch: Return with expression 0:53 Constant: 0:53 0.000000 -0:57 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float) +0:57 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float) 0:57 Function Parameters: 0:57 'inF0' (in 1-component vector of float) 0:57 'inF1' (in 1-component vector of float) @@ -22,7 +22,7 @@ local_size = (1, 1, 1) 0:62 Branch: Return with expression 0:62 Constant: 0:62 0.000000 -0:66 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float) +0:66 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float) 0:66 Function Parameters: 0:66 'inF0' (in 2-component vector of float) 0:66 'inF1' (in 2-component vector of float) @@ -33,7 +33,7 @@ local_size = (1, 1, 1) 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:113 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float) +0:113 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float) 0:113 Function Parameters: 0:113 'inF0' (in 3-component vector of float) 0:113 'inF1' (in 3-component vector of float) @@ -45,7 +45,7 @@ local_size = (1, 1, 1) 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:158 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float) +0:158 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float) 0:158 Function Parameters: 0:158 'inF0' (layout(location=0 ) in 4-component vector of float) 0:158 'inF1' (layout(location=1 ) in 4-component vector of float) @@ -75,7 +75,7 @@ Linked compute stage: Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float) +0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -85,7 +85,7 @@ local_size = (1, 1, 1) 0:53 Branch: Return with expression 0:53 Constant: 0:53 0.000000 -0:57 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float) +0:57 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float) 0:57 Function Parameters: 0:57 'inF0' (in 1-component vector of float) 0:57 'inF1' (in 1-component vector of float) @@ -95,7 +95,7 @@ local_size = (1, 1, 1) 0:62 Branch: Return with expression 0:62 Constant: 0:62 0.000000 -0:66 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float) +0:66 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float) 0:66 Function Parameters: 0:66 'inF0' (in 2-component vector of float) 0:66 'inF1' (in 2-component vector of float) @@ -106,7 +106,7 @@ local_size = (1, 1, 1) 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:113 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float) +0:113 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float) 0:113 Function Parameters: 0:113 'inF0' (in 3-component vector of float) 0:113 'inF1' (in 3-component vector of float) @@ -118,7 +118,7 @@ local_size = (1, 1, 1) 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:158 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float) +0:158 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float) 0:158 Function Parameters: 0:158 'inF0' (layout(location=0 ) in 4-component vector of float) 0:158 'inF1' (layout(location=1 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out index 2244e8bc..29ee0095 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.frag.out +++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out @@ -65,7 +65,7 @@ ERROR: 60 compilation errors. No code generated. Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float) +0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -142,7 +142,7 @@ ERROR: node is still EOpNull! 0:32 Branch: Return with expression 0:32 Constant: 0:32 0.000000 -0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float) +0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float) 0:36 Function Parameters: 0:36 'inF0' (in 1-component vector of float) 0:36 'inF1' (in 1-component vector of float) @@ -154,7 +154,7 @@ ERROR: node is still EOpNull! 0:41 Branch: Return with expression 0:41 Constant: 0:41 0.000000 -0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float) +0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float) 0:45 Function Parameters: 0:45 'inF0' (in 2-component vector of float) 0:45 'inF1' (in 2-component vector of float) @@ -197,7 +197,7 @@ ERROR: node is still EOpNull! 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float) +0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float) 0:63 Function Parameters: 0:63 'inF0' (in 3-component vector of float) 0:63 'inF1' (in 3-component vector of float) @@ -233,7 +233,7 @@ ERROR: node is still EOpNull! 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:80 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float) +0:80 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float) 0:80 Function Parameters: 0:80 'inF0' (layout(location=0 ) in 4-component vector of float) 0:80 'inF1' (layout(location=1 ) in 4-component vector of float) @@ -276,7 +276,7 @@ ERROR: node is still EOpNull! 0:? 3.000000 0:? 4.000000 0:92 Branch: Return -0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:115 Function Parameters: 0:115 'inF0' (in 2X2 matrix of float) 0:115 'inF1' (in 2X2 matrix of float) @@ -314,7 +314,7 @@ ERROR: node is still EOpNull! 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:123 Function Parameters: 0:123 'inF0' (in 3X3 matrix of float) 0:123 'inF1' (in 3X3 matrix of float) @@ -357,7 +357,7 @@ ERROR: node is still EOpNull! 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:131 Function Parameters: 0:131 'inF0' (in 4X4 matrix of float) 0:131 'inF1' (in 4X4 matrix of float) @@ -421,7 +421,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float) +0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -498,7 +498,7 @@ ERROR: node is still EOpNull! 0:32 Branch: Return with expression 0:32 Constant: 0:32 0.000000 -0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float) +0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float) 0:36 Function Parameters: 0:36 'inF0' (in 1-component vector of float) 0:36 'inF1' (in 1-component vector of float) @@ -510,7 +510,7 @@ ERROR: node is still EOpNull! 0:41 Branch: Return with expression 0:41 Constant: 0:41 0.000000 -0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float) +0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float) 0:45 Function Parameters: 0:45 'inF0' (in 2-component vector of float) 0:45 'inF1' (in 2-component vector of float) @@ -553,7 +553,7 @@ ERROR: node is still EOpNull! 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float) +0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float) 0:63 Function Parameters: 0:63 'inF0' (in 3-component vector of float) 0:63 'inF1' (in 3-component vector of float) @@ -589,7 +589,7 @@ ERROR: node is still EOpNull! 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:80 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float) +0:80 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float) 0:80 Function Parameters: 0:80 'inF0' (layout(location=0 ) in 4-component vector of float) 0:80 'inF1' (layout(location=1 ) in 4-component vector of float) @@ -632,7 +632,7 @@ ERROR: node is still EOpNull! 0:? 3.000000 0:? 4.000000 0:92 Branch: Return -0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:115 Function Parameters: 0:115 'inF0' (in 2X2 matrix of float) 0:115 'inF1' (in 2X2 matrix of float) @@ -670,7 +670,7 @@ ERROR: node is still EOpNull! 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:123 Function Parameters: 0:123 'inF0' (in 3X3 matrix of float) 0:123 'inF1' (in 3X3 matrix of float) @@ -713,7 +713,7 @@ ERROR: node is still EOpNull! 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:131 Function Parameters: 0:131 'inF0' (in 4X4 matrix of float) 0:131 'inF1' (in 4X4 matrix of float) diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out index e702d332..72b6fbcc 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.vert.out +++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out @@ -1,7 +1,7 @@ hlsl.intrinsics.negative.vert Shader version: 450 0:? Sequence -0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float) +0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (temp float) 0:15 Function Parameters: 0:15 'inF0' (in float) 0:15 'inF1' (in float) @@ -11,7 +11,7 @@ Shader version: 450 0:71 Branch: Return with expression 0:71 Constant: 0:71 0.000000 -0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float) +0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float) 0:75 Function Parameters: 0:75 'inF0' (in 1-component vector of float) 0:75 'inF1' (in 1-component vector of float) @@ -21,7 +21,7 @@ Shader version: 450 0:80 Branch: Return with expression 0:80 Constant: 0:80 0.000000 -0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float) +0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float) 0:84 Function Parameters: 0:84 'inF0' (in 2-component vector of float) 0:84 'inF1' (in 2-component vector of float) @@ -32,7 +32,7 @@ Shader version: 450 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float) +0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float) 0:131 Function Parameters: 0:131 'inF0' (in 3-component vector of float) 0:131 'inF1' (in 3-component vector of float) @@ -44,7 +44,7 @@ Shader version: 450 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:176 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float) +0:176 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float) 0:176 Function Parameters: 0:176 'inF0' (layout(location=0 ) in 4-component vector of float) 0:176 'inF1' (layout(location=1 ) in 4-component vector of float) @@ -60,7 +60,7 @@ Shader version: 450 0:? 3.000000 0:? 4.000000 0:217 Branch: Return -0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:226 Function Parameters: 0:226 'inF0' (in 2X2 matrix of float) 0:226 'inF1' (in 2X2 matrix of float) @@ -72,7 +72,7 @@ Shader version: 450 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:234 Function Parameters: 0:234 'inF0' (in 3X3 matrix of float) 0:234 'inF1' (in 3X3 matrix of float) @@ -89,7 +89,7 @@ Shader version: 450 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:242 Function Parameters: 0:242 'inF0' (in 4X4 matrix of float) 0:242 'inF1' (in 4X4 matrix of float) @@ -138,7 +138,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float) +0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (temp float) 0:15 Function Parameters: 0:15 'inF0' (in float) 0:15 'inF1' (in float) @@ -148,7 +148,7 @@ Shader version: 450 0:71 Branch: Return with expression 0:71 Constant: 0:71 0.000000 -0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float) +0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float) 0:75 Function Parameters: 0:75 'inF0' (in 1-component vector of float) 0:75 'inF1' (in 1-component vector of float) @@ -158,7 +158,7 @@ Shader version: 450 0:80 Branch: Return with expression 0:80 Constant: 0:80 0.000000 -0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float) +0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float) 0:84 Function Parameters: 0:84 'inF0' (in 2-component vector of float) 0:84 'inF1' (in 2-component vector of float) @@ -169,7 +169,7 @@ Shader version: 450 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float) +0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float) 0:131 Function Parameters: 0:131 'inF0' (in 3-component vector of float) 0:131 'inF1' (in 3-component vector of float) @@ -181,7 +181,7 @@ Shader version: 450 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:176 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float) +0:176 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float) 0:176 Function Parameters: 0:176 'inF0' (layout(location=0 ) in 4-component vector of float) 0:176 'inF1' (layout(location=1 ) in 4-component vector of float) @@ -197,7 +197,7 @@ Shader version: 450 0:? 3.000000 0:? 4.000000 0:217 Branch: Return -0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:226 Function Parameters: 0:226 'inF0' (in 2X2 matrix of float) 0:226 'inF1' (in 2X2 matrix of float) @@ -209,7 +209,7 @@ Shader version: 450 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:234 Function Parameters: 0:234 'inF0' (in 3X3 matrix of float) 0:234 'inF1' (in 3X3 matrix of float) @@ -226,7 +226,7 @@ Shader version: 450 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:242 Function Parameters: 0:242 'inF0' (in 4X4 matrix of float) 0:242 'inF1' (in 4X4 matrix of float) diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out index 121c8093..811a752d 100644 --- a/Test/baseResults/hlsl.intrinsics.vert.out +++ b/Test/baseResults/hlsl.intrinsics.vert.out @@ -1,7 +1,7 @@ hlsl.intrinsics.vert Shader version: 450 0:? Sequence -0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float) +0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -142,7 +142,7 @@ Shader version: 450 0:60 Branch: Return with expression 0:60 Constant: 0:60 0.000000 -0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float) +0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float) 0:64 Function Parameters: 0:64 'inF0' (in 1-component vector of float) 0:64 'inF1' (in 1-component vector of float) @@ -151,7 +151,7 @@ Shader version: 450 0:66 Branch: Return with expression 0:66 Constant: 0:66 0.000000 -0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float) +0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float) 0:70 Function Parameters: 0:70 'inF0' (in 2-component vector of float) 0:70 'inF1' (in 2-component vector of float) @@ -317,7 +317,7 @@ Shader version: 450 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float) 0:140 Function Parameters: 0:140 'inF0' (in 3-component vector of float) 0:140 'inF1' (in 3-component vector of float) @@ -489,7 +489,7 @@ Shader version: 450 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) +0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float) 0:211 Function Parameters: 0:211 'inF0' (in 4-component vector of float) 0:211 'inF1' (in 4-component vector of float) @@ -681,7 +681,7 @@ Shader version: 450 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:336 Function Parameters: 0:336 'inF0' (in 2X2 matrix of float) 0:336 'inF1' (in 2X2 matrix of float) @@ -811,7 +811,7 @@ Shader version: 450 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:345 Function Parameters: 0:345 'inF0' (in 3X3 matrix of float) 0:345 'inF1' (in 3X3 matrix of float) @@ -946,7 +946,7 @@ Shader version: 450 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:354 Function Parameters: 0:354 'inF0' (in 4X4 matrix of float) 0:354 'inF1' (in 4X4 matrix of float) @@ -1088,7 +1088,7 @@ Shader version: 450 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void) +0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void) 0:377 Function Parameters: 0:377 'inF0' (in float) 0:377 'inF1' (in float) @@ -1151,7 +1151,7 @@ Shader version: 450 0:378 matrix-multiply (temp 2X2 matrix of float) 0:378 'inFM1' (in 2X2 matrix of float) 0:378 'inFM0' (in 2X2 matrix of float) -0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) +0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void) 0:384 Function Parameters: 0:384 'inF0' (in float) 0:384 'inF1' (in float) @@ -1214,7 +1214,7 @@ Shader version: 450 0:385 matrix-multiply (temp 3X3 matrix of float) 0:385 'inFM1' (in 3X3 matrix of float) 0:385 'inFM0' (in 3X3 matrix of float) -0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) +0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void) 0:391 Function Parameters: 0:391 'inF0' (in float) 0:391 'inF1' (in float) @@ -1277,7 +1277,7 @@ Shader version: 450 0:392 matrix-multiply (temp 4X4 matrix of float) 0:392 'inFM1' (in 4X4 matrix of float) 0:392 'inFM0' (in 4X4 matrix of float) -0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void) +0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void) 0:401 Function Parameters: 0:401 'inF0' (in float) 0:401 'inF1' (in float) @@ -1399,7 +1399,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float) +0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -1540,7 +1540,7 @@ Shader version: 450 0:60 Branch: Return with expression 0:60 Constant: 0:60 0.000000 -0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float) +0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float) 0:64 Function Parameters: 0:64 'inF0' (in 1-component vector of float) 0:64 'inF1' (in 1-component vector of float) @@ -1549,7 +1549,7 @@ Shader version: 450 0:66 Branch: Return with expression 0:66 Constant: 0:66 0.000000 -0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float) +0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float) 0:70 Function Parameters: 0:70 'inF0' (in 2-component vector of float) 0:70 'inF1' (in 2-component vector of float) @@ -1715,7 +1715,7 @@ Shader version: 450 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float) 0:140 Function Parameters: 0:140 'inF0' (in 3-component vector of float) 0:140 'inF1' (in 3-component vector of float) @@ -1887,7 +1887,7 @@ Shader version: 450 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) +0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float) 0:211 Function Parameters: 0:211 'inF0' (in 4-component vector of float) 0:211 'inF1' (in 4-component vector of float) @@ -2079,7 +2079,7 @@ Shader version: 450 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) +0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) 0:336 Function Parameters: 0:336 'inF0' (in 2X2 matrix of float) 0:336 'inF1' (in 2X2 matrix of float) @@ -2209,7 +2209,7 @@ Shader version: 450 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) +0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) 0:345 Function Parameters: 0:345 'inF0' (in 3X3 matrix of float) 0:345 'inF1' (in 3X3 matrix of float) @@ -2344,7 +2344,7 @@ Shader version: 450 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) +0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) 0:354 Function Parameters: 0:354 'inF0' (in 4X4 matrix of float) 0:354 'inF1' (in 4X4 matrix of float) @@ -2486,7 +2486,7 @@ Shader version: 450 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void) +0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void) 0:377 Function Parameters: 0:377 'inF0' (in float) 0:377 'inF1' (in float) @@ -2549,7 +2549,7 @@ Shader version: 450 0:378 matrix-multiply (temp 2X2 matrix of float) 0:378 'inFM1' (in 2X2 matrix of float) 0:378 'inFM0' (in 2X2 matrix of float) -0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) +0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void) 0:384 Function Parameters: 0:384 'inF0' (in float) 0:384 'inF1' (in float) @@ -2612,7 +2612,7 @@ Shader version: 450 0:385 matrix-multiply (temp 3X3 matrix of float) 0:385 'inFM1' (in 3X3 matrix of float) 0:385 'inFM0' (in 3X3 matrix of float) -0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) +0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void) 0:391 Function Parameters: 0:391 'inF0' (in float) 0:391 'inF1' (in float) @@ -2675,7 +2675,7 @@ Shader version: 450 0:392 matrix-multiply (temp 4X4 matrix of float) 0:392 'inFM1' (in 4X4 matrix of float) 0:392 'inFM0' (in 4X4 matrix of float) -0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void) +0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void) 0:401 Function Parameters: 0:401 'inF0' (in float) 0:401 'inF1' (in float) diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index 938332b7..ef096f35 100755 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -2,7 +2,7 @@ hlsl.layout.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:16 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:16 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:16 Function Parameters: 0:16 'input' (in 4-component vector of float) 0:? Sequence @@ -37,7 +37,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:16 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:16 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:16 Function Parameters: 0:16 'input' (in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index 051f2017..0048d9ad 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -2,75 +2,129 @@ hlsl.load.2dms.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:32 textureFetch (global 4-component vector of float) 0:32 'g_tTex2dmsf4' (uniform texture2DMS) -0:32 'c2' (uniform 2-component vector of int) +0:32 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:32 Constant: +0:32 1 (const uint) 0:32 Constant: 0:32 3 (const int) 0:33 textureFetch (global 4-component vector of int) 0:33 'g_tTex2dmsi4' (uniform itexture2DMS) -0:33 'c2' (uniform 2-component vector of int) +0:33 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:33 Constant: +0:33 1 (const uint) 0:33 Constant: 0:33 3 (const int) 0:34 textureFetch (global 4-component vector of uint) 0:34 'g_tTex2dmsu4' (uniform utexture2DMS) -0:34 'c2' (uniform 2-component vector of int) +0:34 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:34 Constant: +0:34 1 (const uint) 0:34 Constant: 0:34 3 (const int) 0:37 textureFetchOffset (global 4-component vector of float) 0:37 'g_tTex2dmsf4' (uniform texture2DMS) -0:37 'c2' (uniform 2-component vector of int) +0:37 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 1 (const uint) 0:37 Constant: 0:37 3 (const int) -0:37 'o2' (uniform 2-component vector of int) +0:37 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 5 (const uint) 0:38 textureFetchOffset (global 4-component vector of int) 0:38 'g_tTex2dmsi4' (uniform itexture2DMS) -0:38 'c2' (uniform 2-component vector of int) +0:38 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 1 (const uint) 0:38 Constant: 0:38 3 (const int) -0:38 'o2' (uniform 2-component vector of int) +0:38 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 5 (const uint) 0:39 textureFetchOffset (global 4-component vector of uint) 0:39 'g_tTex2dmsu4' (uniform utexture2DMS) -0:39 'c2' (uniform 2-component vector of int) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 1 (const uint) 0:39 Constant: 0:39 3 (const int) -0:39 'o2' (uniform 2-component vector of int) +0:39 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 5 (const uint) 0:42 textureFetch (global 4-component vector of float) 0:42 'g_tTex2dmsf4a' (uniform texture2DMSArray) -0:42 'c3' (uniform 3-component vector of int) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) 0:42 Constant: 0:42 3 (const int) 0:43 textureFetch (global 4-component vector of int) 0:43 'g_tTex2dmsi4a' (uniform itexture2DMSArray) -0:43 'c3' (uniform 3-component vector of int) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:43 Constant: +0:43 2 (const uint) 0:43 Constant: 0:43 3 (const int) 0:44 textureFetch (global 4-component vector of uint) 0:44 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:44 'c3' (uniform 3-component vector of int) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) 0:44 Constant: 0:44 3 (const int) 0:47 textureFetchOffset (global 4-component vector of float) 0:47 'g_tTex2dmsf4a' (uniform texture2DMSArray) -0:47 'c3' (uniform 3-component vector of int) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) -0:47 'o2' (uniform 2-component vector of int) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) 0:48 textureFetchOffset (global 4-component vector of int) 0:48 'g_tTex2dmsi4a' (uniform itexture2DMSArray) -0:48 'c3' (uniform 3-component vector of int) +0:48 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 2 (const uint) 0:48 Constant: 0:48 3 (const int) -0:48 'o2' (uniform 2-component vector of int) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) 0:49 textureFetchOffset (global 4-component vector of uint) 0:49 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:49 'c3' (uniform 3-component vector of int) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) 0:49 Constant: 0:49 3 (const int) -0:49 'o2' (uniform 2-component vector of int) +0:49 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 5 (const uint) 0:51 move second child to first child (temp 4-component vector of float) 0:51 Color: direct index for structure (temp 4-component vector of float) 0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -111,16 +165,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -129,75 +176,129 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:32 textureFetch (global 4-component vector of float) 0:32 'g_tTex2dmsf4' (uniform texture2DMS) -0:32 'c2' (uniform 2-component vector of int) +0:32 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:32 Constant: +0:32 1 (const uint) 0:32 Constant: 0:32 3 (const int) 0:33 textureFetch (global 4-component vector of int) 0:33 'g_tTex2dmsi4' (uniform itexture2DMS) -0:33 'c2' (uniform 2-component vector of int) +0:33 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:33 Constant: +0:33 1 (const uint) 0:33 Constant: 0:33 3 (const int) 0:34 textureFetch (global 4-component vector of uint) 0:34 'g_tTex2dmsu4' (uniform utexture2DMS) -0:34 'c2' (uniform 2-component vector of int) +0:34 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:34 Constant: +0:34 1 (const uint) 0:34 Constant: 0:34 3 (const int) 0:37 textureFetchOffset (global 4-component vector of float) 0:37 'g_tTex2dmsf4' (uniform texture2DMS) -0:37 'c2' (uniform 2-component vector of int) +0:37 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 1 (const uint) 0:37 Constant: 0:37 3 (const int) -0:37 'o2' (uniform 2-component vector of int) +0:37 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 5 (const uint) 0:38 textureFetchOffset (global 4-component vector of int) 0:38 'g_tTex2dmsi4' (uniform itexture2DMS) -0:38 'c2' (uniform 2-component vector of int) +0:38 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 1 (const uint) 0:38 Constant: 0:38 3 (const int) -0:38 'o2' (uniform 2-component vector of int) +0:38 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 5 (const uint) 0:39 textureFetchOffset (global 4-component vector of uint) 0:39 'g_tTex2dmsu4' (uniform utexture2DMS) -0:39 'c2' (uniform 2-component vector of int) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 1 (const uint) 0:39 Constant: 0:39 3 (const int) -0:39 'o2' (uniform 2-component vector of int) +0:39 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 5 (const uint) 0:42 textureFetch (global 4-component vector of float) 0:42 'g_tTex2dmsf4a' (uniform texture2DMSArray) -0:42 'c3' (uniform 3-component vector of int) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) 0:42 Constant: 0:42 3 (const int) 0:43 textureFetch (global 4-component vector of int) 0:43 'g_tTex2dmsi4a' (uniform itexture2DMSArray) -0:43 'c3' (uniform 3-component vector of int) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:43 Constant: +0:43 2 (const uint) 0:43 Constant: 0:43 3 (const int) 0:44 textureFetch (global 4-component vector of uint) 0:44 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:44 'c3' (uniform 3-component vector of int) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) 0:44 Constant: 0:44 3 (const int) 0:47 textureFetchOffset (global 4-component vector of float) 0:47 'g_tTex2dmsf4a' (uniform texture2DMSArray) -0:47 'c3' (uniform 3-component vector of int) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 2 (const uint) 0:47 Constant: 0:47 3 (const int) -0:47 'o2' (uniform 2-component vector of int) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) 0:48 textureFetchOffset (global 4-component vector of int) 0:48 'g_tTex2dmsi4a' (uniform itexture2DMSArray) -0:48 'c3' (uniform 3-component vector of int) +0:48 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 2 (const uint) 0:48 Constant: 0:48 3 (const int) -0:48 'o2' (uniform 2-component vector of int) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) 0:49 textureFetchOffset (global 4-component vector of uint) 0:49 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:49 'c3' (uniform 3-component vector of int) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) 0:49 Constant: 0:49 3 (const int) -0:49 'o2' (uniform 2-component vector of int) +0:49 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 5 (const uint) 0:51 move second child to first child (temp 4-component vector of float) 0:51 Color: direct index for structure (temp 4-component vector of float) 0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -238,60 +339,65 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 110 +// Id's are bound by 123 Capability Shader Capability ImageGatherExtended Capability ImageMSArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 92 96 + EntryPoint Fragment 4 "main" 112 116 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "g_tTex2dmsf4" - Name 14 "c2" - Name 21 "g_tTex2dmsi4" - Name 29 "g_tTex2dmsu4" - Name 36 "o2" - Name 49 "g_tTex2dmsf4a" - Name 53 "c3" - Name 58 "g_tTex2dmsi4a" - Name 64 "g_tTex2dmsu4a" - Name 80 "PS_OUTPUT" - MemberName 80(PS_OUTPUT) 0 "Color" - MemberName 80(PS_OUTPUT) 1 "Depth" - Name 82 "psout" - Name 92 "Color" - Name 96 "Depth" - Name 102 "g_sSamp" - Name 104 "c1" - Name 106 "c4" - Name 107 "o1" - Name 108 "o3" - Name 109 "o4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 27 "g_tTex2dmsi4" + Name 35 "g_tTex2dmsu4" + Name 62 "g_tTex2dmsf4a" + Name 71 "g_tTex2dmsi4a" + Name 78 "g_tTex2dmsu4a" + Name 101 "PS_OUTPUT" + MemberName 101(PS_OUTPUT) 0 "Color" + MemberName 101(PS_OUTPUT) 1 "Depth" + Name 103 "psout" + Name 112 "Color" + Name 116 "Depth" + Name 122 "g_sSamp" Decorate 9(g_tTex2dmsf4) DescriptorSet 0 - Decorate 21(g_tTex2dmsi4) DescriptorSet 0 - Decorate 29(g_tTex2dmsu4) DescriptorSet 0 - Decorate 49(g_tTex2dmsf4a) DescriptorSet 0 - Decorate 58(g_tTex2dmsi4a) DescriptorSet 0 - Decorate 64(g_tTex2dmsu4a) DescriptorSet 0 - Decorate 92(Color) Location 0 - Decorate 96(Depth) BuiltIn FragDepth - Decorate 102(g_sSamp) DescriptorSet 0 - Decorate 102(g_sSamp) Binding 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 27(g_tTex2dmsi4) DescriptorSet 0 + Decorate 35(g_tTex2dmsu4) DescriptorSet 0 + Decorate 62(g_tTex2dmsf4a) DescriptorSet 0 + Decorate 71(g_tTex2dmsi4a) DescriptorSet 0 + Decorate 78(g_tTex2dmsu4a) DescriptorSet 0 + Decorate 112(Color) Location 0 + Decorate 116(Depth) BuiltIn FragDepth + Decorate 122(g_sSamp) DescriptorSet 0 + Decorate 122(g_sSamp) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -300,108 +406,121 @@ gl_FragCoord origin is upper left 9(g_tTex2dmsf4): 8(ptr) Variable UniformConstant 11: TypeInt 32 1 12: TypeVector 11(int) 2 - 13: TypePointer UniformConstant 12(ivec2) - 14(c2): 13(ptr) Variable UniformConstant - 16: 11(int) Constant 3 - 17: TypeVector 6(float) 4 - 19: TypeImage 11(int) 2D multi-sampled sampled format:Unknown - 20: TypePointer UniformConstant 19 -21(g_tTex2dmsi4): 20(ptr) Variable UniformConstant - 24: TypeVector 11(int) 4 - 26: TypeInt 32 0 - 27: TypeImage 26(int) 2D multi-sampled sampled format:Unknown - 28: TypePointer UniformConstant 27 -29(g_tTex2dmsu4): 28(ptr) Variable UniformConstant - 32: TypeVector 26(int) 4 - 36(o2): 13(ptr) Variable UniformConstant - 47: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown - 48: TypePointer UniformConstant 47 -49(g_tTex2dmsf4a): 48(ptr) Variable UniformConstant - 51: TypeVector 11(int) 3 - 52: TypePointer UniformConstant 51(ivec3) - 53(c3): 52(ptr) Variable UniformConstant - 56: TypeImage 11(int) 2D array multi-sampled sampled format:Unknown - 57: TypePointer UniformConstant 56 -58(g_tTex2dmsi4a): 57(ptr) Variable UniformConstant - 62: TypeImage 26(int) 2D array multi-sampled sampled format:Unknown - 63: TypePointer UniformConstant 62 -64(g_tTex2dmsu4a): 63(ptr) Variable UniformConstant - 80(PS_OUTPUT): TypeStruct 17(fvec4) 6(float) - 81: TypePointer Function 80(PS_OUTPUT) - 83: 11(int) Constant 0 - 84: 6(float) Constant 1065353216 - 85: 17(fvec4) ConstantComposite 84 84 84 84 - 86: TypePointer Function 17(fvec4) - 88: 11(int) Constant 1 - 89: TypePointer Function 6(float) - 91: TypePointer Output 17(fvec4) - 92(Color): 91(ptr) Variable Output - 95: TypePointer Output 6(float) - 96(Depth): 95(ptr) Variable Output - 100: TypeSampler - 101: TypePointer UniformConstant 100 - 102(g_sSamp): 101(ptr) Variable UniformConstant - 103: TypePointer UniformConstant 11(int) - 104(c1): 103(ptr) Variable UniformConstant - 105: TypePointer UniformConstant 24(ivec4) - 106(c4): 105(ptr) Variable UniformConstant - 107(o1): 103(ptr) Variable UniformConstant - 108(o3): 52(ptr) Variable UniformConstant - 109(o4): 105(ptr) Variable UniformConstant + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypePointer Uniform 12(ivec2) + 22: 11(int) Constant 3 + 23: TypeVector 6(float) 4 + 25: TypeImage 11(int) 2D multi-sampled sampled format:Unknown + 26: TypePointer UniformConstant 25 +27(g_tTex2dmsi4): 26(ptr) Variable UniformConstant + 32: TypeInt 32 0 + 33: TypeImage 32(int) 2D multi-sampled sampled format:Unknown + 34: TypePointer UniformConstant 33 +35(g_tTex2dmsu4): 34(ptr) Variable UniformConstant + 39: TypeVector 32(int) 4 + 44: 11(int) Constant 5 + 60: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown + 61: TypePointer UniformConstant 60 +62(g_tTex2dmsf4a): 61(ptr) Variable UniformConstant + 64: 11(int) Constant 2 + 65: TypePointer Uniform 13(ivec3) + 69: TypeImage 11(int) 2D array multi-sampled sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(g_tTex2dmsi4a): 70(ptr) Variable UniformConstant + 76: TypeImage 32(int) 2D array multi-sampled sampled format:Unknown + 77: TypePointer UniformConstant 76 +78(g_tTex2dmsu4a): 77(ptr) Variable UniformConstant + 101(PS_OUTPUT): TypeStruct 23(fvec4) 6(float) + 102: TypePointer Function 101(PS_OUTPUT) + 104: 11(int) Constant 0 + 105: 6(float) Constant 1065353216 + 106: 23(fvec4) ConstantComposite 105 105 105 105 + 107: TypePointer Function 23(fvec4) + 109: TypePointer Function 6(float) + 111: TypePointer Output 23(fvec4) + 112(Color): 111(ptr) Variable Output + 115: TypePointer Output 6(float) + 116(Depth): 115(ptr) Variable Output + 120: TypeSampler + 121: TypePointer UniformConstant 120 + 122(g_sSamp): 121(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 82(psout): 81(ptr) Variable Function + 103(psout): 102(ptr) Variable Function 10: 7 Load 9(g_tTex2dmsf4) - 15: 12(ivec2) Load 14(c2) - 18: 17(fvec4) ImageFetch 10 15 Sample 16 - 22: 19 Load 21(g_tTex2dmsi4) - 23: 12(ivec2) Load 14(c2) - 25: 24(ivec4) ImageFetch 22 23 Sample 16 - 30: 27 Load 29(g_tTex2dmsu4) - 31: 12(ivec2) Load 14(c2) - 33: 32(ivec4) ImageFetch 30 31 Sample 16 - 34: 7 Load 9(g_tTex2dmsf4) - 35: 12(ivec2) Load 14(c2) - 37: 12(ivec2) Load 36(o2) - 38: 17(fvec4) ImageFetch 34 35 Offset Sample 37 16 - 39: 19 Load 21(g_tTex2dmsi4) - 40: 12(ivec2) Load 14(c2) - 41: 12(ivec2) Load 36(o2) - 42: 24(ivec4) ImageFetch 39 40 Offset Sample 41 16 - 43: 27 Load 29(g_tTex2dmsu4) - 44: 12(ivec2) Load 14(c2) - 45: 12(ivec2) Load 36(o2) - 46: 32(ivec4) ImageFetch 43 44 Offset Sample 45 16 - 50: 47 Load 49(g_tTex2dmsf4a) - 54: 51(ivec3) Load 53(c3) - 55: 17(fvec4) ImageFetch 50 54 Sample 16 - 59: 56 Load 58(g_tTex2dmsi4a) - 60: 51(ivec3) Load 53(c3) - 61: 24(ivec4) ImageFetch 59 60 Sample 16 - 65: 62 Load 64(g_tTex2dmsu4a) - 66: 51(ivec3) Load 53(c3) - 67: 32(ivec4) ImageFetch 65 66 Sample 16 - 68: 47 Load 49(g_tTex2dmsf4a) - 69: 51(ivec3) Load 53(c3) - 70: 12(ivec2) Load 36(o2) - 71: 17(fvec4) ImageFetch 68 69 Offset Sample 70 16 - 72: 56 Load 58(g_tTex2dmsi4a) - 73: 51(ivec3) Load 53(c3) - 74: 12(ivec2) Load 36(o2) - 75: 24(ivec4) ImageFetch 72 73 Offset Sample 74 16 - 76: 62 Load 64(g_tTex2dmsu4a) - 77: 51(ivec3) Load 53(c3) - 78: 12(ivec2) Load 36(o2) - 79: 32(ivec4) ImageFetch 76 77 Offset Sample 78 16 - 87: 86(ptr) AccessChain 82(psout) 83 - Store 87 85 - 90: 89(ptr) AccessChain 82(psout) 88 - Store 90 84 - 93: 86(ptr) AccessChain 82(psout) 83 - 94: 17(fvec4) Load 93 - Store 92(Color) 94 - 97: 89(ptr) AccessChain 82(psout) 88 - 98: 6(float) Load 97 - Store 96(Depth) 98 + 20: 19(ptr) AccessChain 17 18 + 21: 12(ivec2) Load 20 + 24: 23(fvec4) ImageFetch 10 21 Sample 22 + 28: 25 Load 27(g_tTex2dmsi4) + 29: 19(ptr) AccessChain 17 18 + 30: 12(ivec2) Load 29 + 31: 14(ivec4) ImageFetch 28 30 Sample 22 + 36: 33 Load 35(g_tTex2dmsu4) + 37: 19(ptr) AccessChain 17 18 + 38: 12(ivec2) Load 37 + 40: 39(ivec4) ImageFetch 36 38 Sample 22 + 41: 7 Load 9(g_tTex2dmsf4) + 42: 19(ptr) AccessChain 17 18 + 43: 12(ivec2) Load 42 + 45: 19(ptr) AccessChain 17 44 + 46: 12(ivec2) Load 45 + 47: 23(fvec4) ImageFetch 41 43 Offset Sample 46 22 + 48: 25 Load 27(g_tTex2dmsi4) + 49: 19(ptr) AccessChain 17 18 + 50: 12(ivec2) Load 49 + 51: 19(ptr) AccessChain 17 44 + 52: 12(ivec2) Load 51 + 53: 14(ivec4) ImageFetch 48 50 Offset Sample 52 22 + 54: 33 Load 35(g_tTex2dmsu4) + 55: 19(ptr) AccessChain 17 18 + 56: 12(ivec2) Load 55 + 57: 19(ptr) AccessChain 17 44 + 58: 12(ivec2) Load 57 + 59: 39(ivec4) ImageFetch 54 56 Offset Sample 58 22 + 63: 60 Load 62(g_tTex2dmsf4a) + 66: 65(ptr) AccessChain 17 64 + 67: 13(ivec3) Load 66 + 68: 23(fvec4) ImageFetch 63 67 Sample 22 + 72: 69 Load 71(g_tTex2dmsi4a) + 73: 65(ptr) AccessChain 17 64 + 74: 13(ivec3) Load 73 + 75: 14(ivec4) ImageFetch 72 74 Sample 22 + 79: 76 Load 78(g_tTex2dmsu4a) + 80: 65(ptr) AccessChain 17 64 + 81: 13(ivec3) Load 80 + 82: 39(ivec4) ImageFetch 79 81 Sample 22 + 83: 60 Load 62(g_tTex2dmsf4a) + 84: 65(ptr) AccessChain 17 64 + 85: 13(ivec3) Load 84 + 86: 19(ptr) AccessChain 17 44 + 87: 12(ivec2) Load 86 + 88: 23(fvec4) ImageFetch 83 85 Offset Sample 87 22 + 89: 69 Load 71(g_tTex2dmsi4a) + 90: 65(ptr) AccessChain 17 64 + 91: 13(ivec3) Load 90 + 92: 19(ptr) AccessChain 17 44 + 93: 12(ivec2) Load 92 + 94: 14(ivec4) ImageFetch 89 91 Offset Sample 93 22 + 95: 76 Load 78(g_tTex2dmsu4a) + 96: 65(ptr) AccessChain 17 64 + 97: 13(ivec3) Load 96 + 98: 19(ptr) AccessChain 17 44 + 99: 12(ivec2) Load 98 + 100: 39(ivec4) ImageFetch 95 97 Offset Sample 99 22 + 108: 107(ptr) AccessChain 103(psout) 104 + Store 108 106 + 110: 109(ptr) AccessChain 103(psout) 18 + Store 110 105 + 113: 107(ptr) AccessChain 103(psout) 104 + 114: 23(fvec4) Load 113 + Store 112(Color) 114 + 117: 109(ptr) AccessChain 103(psout) 18 + 118: 6(float) Load 117 + Store 116(Depth) 118 Return FunctionEnd diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out index 37238837..fada58a9 100644 --- a/Test/baseResults/hlsl.load.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -2,52 +2,73 @@ hlsl.load.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch (global 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 direct index (temp int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) 0:53 textureFetch (global 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 direct index (temp int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) 0:54 textureFetch (global 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 direct index (temp int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) 0:57 textureFetch (global 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) @@ -56,13 +77,19 @@ gl_FragCoord origin is upper left 0:57 Constant: 0:57 2 (const int) 0:57 direct index (temp int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) 0:58 textureFetch (global 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) @@ -71,13 +98,19 @@ gl_FragCoord origin is upper left 0:58 Constant: 0:58 2 (const int) 0:58 direct index (temp int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) 0:59 textureFetch (global 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) @@ -86,7 +119,10 @@ gl_FragCoord origin is upper left 0:59 Constant: 0:59 2 (const int) 0:59 direct index (temp int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Constant: 0:59 3 (const int) 0:67 move second child to first child (temp 4-component vector of float) @@ -144,16 +180,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -162,52 +191,73 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch (global 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 direct index (temp int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) 0:53 textureFetch (global 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 direct index (temp int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) 0:54 textureFetch (global 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 direct index (temp int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) 0:57 textureFetch (global 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) @@ -216,13 +266,19 @@ gl_FragCoord origin is upper left 0:57 Constant: 0:57 2 (const int) 0:57 direct index (temp int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) 0:58 textureFetch (global 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) @@ -231,13 +287,19 @@ gl_FragCoord origin is upper left 0:58 Constant: 0:58 2 (const int) 0:58 direct index (temp int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) 0:59 textureFetch (global 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) @@ -246,7 +308,10 @@ gl_FragCoord origin is upper left 0:59 Constant: 0:59 2 (const int) 0:59 direct index (temp int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Constant: 0:59 3 (const int) 0:67 move second child to first child (temp 4-component vector of float) @@ -304,91 +369,96 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 150 +// Id's are bound by 152 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 87 91 + EntryPoint Fragment 4 "main" 96 100 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "g_tTex1df4a" - Name 14 "c3" - Name 27 "g_tTex1di4a" - Name 37 "g_tTex1du4a" - Name 47 "g_tTex2df4a" - Name 50 "c4" - Name 59 "g_tTex2di4a" - Name 68 "g_tTex2du4a" - Name 75 "PS_OUTPUT" - MemberName 75(PS_OUTPUT) 0 "Color" - MemberName 75(PS_OUTPUT) 1 "Depth" - Name 77 "psout" - Name 87 "Color" - Name 91 "Depth" - Name 97 "g_sSamp" - Name 100 "g_tTex1df4" - Name 103 "g_tTex1di4" - Name 106 "g_tTex1du4" - Name 109 "g_tTex2df4" - Name 112 "g_tTex2di4" - Name 115 "g_tTex2du4" - Name 118 "g_tTex3df4" - Name 121 "g_tTex3di4" - Name 124 "g_tTex3du4" - Name 127 "g_tTexcdf4" - Name 130 "g_tTexcdi4" - Name 133 "g_tTexcdu4" - Name 136 "g_tTexcdf4a" - Name 139 "g_tTexcdi4a" - Name 142 "g_tTexcdu4a" - Name 143 "c1" - Name 145 "c2" - Name 146 "o1" - Name 147 "o2" - Name 148 "o3" - Name 149 "o4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 32 "g_tTex1di4a" + Name 42 "g_tTex1du4a" + Name 53 "g_tTex2df4a" + Name 66 "g_tTex2di4a" + Name 76 "g_tTex2du4a" + Name 84 "PS_OUTPUT" + MemberName 84(PS_OUTPUT) 0 "Color" + MemberName 84(PS_OUTPUT) 1 "Depth" + Name 86 "psout" + Name 96 "Color" + Name 100 "Depth" + Name 106 "g_sSamp" + Name 109 "g_tTex1df4" + Name 112 "g_tTex1di4" + Name 115 "g_tTex1du4" + Name 118 "g_tTex2df4" + Name 121 "g_tTex2di4" + Name 124 "g_tTex2du4" + Name 127 "g_tTex3df4" + Name 130 "g_tTex3di4" + Name 133 "g_tTex3du4" + Name 136 "g_tTexcdf4" + Name 139 "g_tTexcdi4" + Name 142 "g_tTexcdu4" + Name 145 "g_tTexcdf4a" + Name 148 "g_tTexcdi4a" + Name 151 "g_tTexcdu4a" Decorate 9(g_tTex1df4a) DescriptorSet 0 - Decorate 27(g_tTex1di4a) DescriptorSet 0 - Decorate 37(g_tTex1du4a) DescriptorSet 0 - Decorate 47(g_tTex2df4a) DescriptorSet 0 - Decorate 59(g_tTex2di4a) DescriptorSet 0 - Decorate 68(g_tTex2du4a) DescriptorSet 0 - Decorate 87(Color) Location 0 - Decorate 91(Depth) BuiltIn FragDepth - Decorate 97(g_sSamp) DescriptorSet 0 - Decorate 97(g_sSamp) Binding 0 - Decorate 100(g_tTex1df4) DescriptorSet 0 - Decorate 100(g_tTex1df4) Binding 0 - Decorate 103(g_tTex1di4) DescriptorSet 0 - Decorate 106(g_tTex1du4) DescriptorSet 0 - Decorate 109(g_tTex2df4) DescriptorSet 0 - Decorate 112(g_tTex2di4) DescriptorSet 0 - Decorate 115(g_tTex2du4) DescriptorSet 0 - Decorate 118(g_tTex3df4) DescriptorSet 0 - Decorate 121(g_tTex3di4) DescriptorSet 0 - Decorate 124(g_tTex3du4) DescriptorSet 0 - Decorate 127(g_tTexcdf4) DescriptorSet 0 - Decorate 130(g_tTexcdi4) DescriptorSet 0 - Decorate 133(g_tTexcdu4) DescriptorSet 0 - Decorate 136(g_tTexcdf4a) DescriptorSet 0 - Decorate 139(g_tTexcdi4a) DescriptorSet 0 - Decorate 142(g_tTexcdu4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 32(g_tTex1di4a) DescriptorSet 0 + Decorate 42(g_tTex1du4a) DescriptorSet 0 + Decorate 53(g_tTex2df4a) DescriptorSet 0 + Decorate 66(g_tTex2di4a) DescriptorSet 0 + Decorate 76(g_tTex2du4a) DescriptorSet 0 + Decorate 96(Color) Location 0 + Decorate 100(Depth) BuiltIn FragDepth + Decorate 106(g_sSamp) DescriptorSet 0 + Decorate 106(g_sSamp) Binding 0 + Decorate 109(g_tTex1df4) DescriptorSet 0 + Decorate 109(g_tTex1df4) Binding 0 + Decorate 112(g_tTex1di4) DescriptorSet 0 + Decorate 115(g_tTex1du4) DescriptorSet 0 + Decorate 118(g_tTex2df4) DescriptorSet 0 + Decorate 121(g_tTex2di4) DescriptorSet 0 + Decorate 124(g_tTex2du4) DescriptorSet 0 + Decorate 127(g_tTex3df4) DescriptorSet 0 + Decorate 130(g_tTex3di4) DescriptorSet 0 + Decorate 133(g_tTex3du4) DescriptorSet 0 + Decorate 136(g_tTexcdf4) DescriptorSet 0 + Decorate 139(g_tTexcdi4) DescriptorSet 0 + Decorate 142(g_tTexcdu4) DescriptorSet 0 + Decorate 145(g_tTexcdf4a) DescriptorSet 0 + Decorate 148(g_tTexcdi4a) DescriptorSet 0 + Decorate 151(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -396,149 +466,151 @@ gl_FragCoord origin is upper left 8: TypePointer UniformConstant 7 9(g_tTex1df4a): 8(ptr) Variable UniformConstant 11: TypeInt 32 1 - 12: TypeVector 11(int) 3 - 13: TypePointer UniformConstant 12(ivec3) - 14(c3): 13(ptr) Variable UniformConstant - 15: TypeVector 11(int) 2 - 18: TypeInt 32 0 - 19: 18(int) Constant 2 - 20: TypePointer UniformConstant 11(int) - 23: TypeVector 6(float) 4 - 25: TypeImage 11(int) 1D array sampled format:Unknown - 26: TypePointer UniformConstant 25 - 27(g_tTex1di4a): 26(ptr) Variable UniformConstant - 33: TypeVector 11(int) 4 - 35: TypeImage 18(int) 1D array sampled format:Unknown - 36: TypePointer UniformConstant 35 - 37(g_tTex1du4a): 36(ptr) Variable UniformConstant - 43: TypeVector 18(int) 4 - 45: TypeImage 6(float) 2D array sampled format:Unknown - 46: TypePointer UniformConstant 45 - 47(g_tTex2df4a): 46(ptr) Variable UniformConstant - 49: TypePointer UniformConstant 33(ivec4) - 50(c4): 49(ptr) Variable UniformConstant - 53: 18(int) Constant 3 - 57: TypeImage 11(int) 2D array sampled format:Unknown - 58: TypePointer UniformConstant 57 - 59(g_tTex2di4a): 58(ptr) Variable UniformConstant - 66: TypeImage 18(int) 2D array sampled format:Unknown - 67: TypePointer UniformConstant 66 - 68(g_tTex2du4a): 67(ptr) Variable UniformConstant - 75(PS_OUTPUT): TypeStruct 23(fvec4) 6(float) - 76: TypePointer Function 75(PS_OUTPUT) - 78: 11(int) Constant 0 - 79: 6(float) Constant 1065353216 - 80: 23(fvec4) ConstantComposite 79 79 79 79 - 81: TypePointer Function 23(fvec4) - 83: 11(int) Constant 1 - 84: TypePointer Function 6(float) - 86: TypePointer Output 23(fvec4) - 87(Color): 86(ptr) Variable Output - 90: TypePointer Output 6(float) - 91(Depth): 90(ptr) Variable Output - 95: TypeSampler - 96: TypePointer UniformConstant 95 - 97(g_sSamp): 96(ptr) Variable UniformConstant - 98: TypeImage 6(float) 1D sampled format:Unknown - 99: TypePointer UniformConstant 98 - 100(g_tTex1df4): 99(ptr) Variable UniformConstant - 101: TypeImage 11(int) 1D sampled format:Unknown - 102: TypePointer UniformConstant 101 - 103(g_tTex1di4): 102(ptr) Variable UniformConstant - 104: TypeImage 18(int) 1D sampled format:Unknown + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 2 + 19: TypePointer Uniform 13(ivec3) + 23: TypeInt 32 0 + 24: 23(int) Constant 2 + 25: TypePointer Uniform 11(int) + 28: TypeVector 6(float) 4 + 30: TypeImage 11(int) 1D array sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex1di4a): 31(ptr) Variable UniformConstant + 40: TypeImage 23(int) 1D array sampled format:Unknown + 41: TypePointer UniformConstant 40 + 42(g_tTex1du4a): 41(ptr) Variable UniformConstant + 49: TypeVector 23(int) 4 + 51: TypeImage 6(float) 2D array sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex2df4a): 52(ptr) Variable UniformConstant + 55: 11(int) Constant 3 + 56: TypePointer Uniform 14(ivec4) + 60: 23(int) Constant 3 + 64: TypeImage 11(int) 2D array sampled format:Unknown + 65: TypePointer UniformConstant 64 + 66(g_tTex2di4a): 65(ptr) Variable UniformConstant + 74: TypeImage 23(int) 2D array sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex2du4a): 75(ptr) Variable UniformConstant + 84(PS_OUTPUT): TypeStruct 28(fvec4) 6(float) + 85: TypePointer Function 84(PS_OUTPUT) + 87: 11(int) Constant 0 + 88: 6(float) Constant 1065353216 + 89: 28(fvec4) ConstantComposite 88 88 88 88 + 90: TypePointer Function 28(fvec4) + 92: 11(int) Constant 1 + 93: TypePointer Function 6(float) + 95: TypePointer Output 28(fvec4) + 96(Color): 95(ptr) Variable Output + 99: TypePointer Output 6(float) + 100(Depth): 99(ptr) Variable Output + 104: TypeSampler 105: TypePointer UniformConstant 104 - 106(g_tTex1du4): 105(ptr) Variable UniformConstant - 107: TypeImage 6(float) 2D sampled format:Unknown + 106(g_sSamp): 105(ptr) Variable UniformConstant + 107: TypeImage 6(float) 1D sampled format:Unknown 108: TypePointer UniformConstant 107 - 109(g_tTex2df4): 108(ptr) Variable UniformConstant - 110: TypeImage 11(int) 2D sampled format:Unknown + 109(g_tTex1df4): 108(ptr) Variable UniformConstant + 110: TypeImage 11(int) 1D sampled format:Unknown 111: TypePointer UniformConstant 110 - 112(g_tTex2di4): 111(ptr) Variable UniformConstant - 113: TypeImage 18(int) 2D sampled format:Unknown + 112(g_tTex1di4): 111(ptr) Variable UniformConstant + 113: TypeImage 23(int) 1D sampled format:Unknown 114: TypePointer UniformConstant 113 - 115(g_tTex2du4): 114(ptr) Variable UniformConstant - 116: TypeImage 6(float) 3D sampled format:Unknown + 115(g_tTex1du4): 114(ptr) Variable UniformConstant + 116: TypeImage 6(float) 2D sampled format:Unknown 117: TypePointer UniformConstant 116 - 118(g_tTex3df4): 117(ptr) Variable UniformConstant - 119: TypeImage 11(int) 3D sampled format:Unknown + 118(g_tTex2df4): 117(ptr) Variable UniformConstant + 119: TypeImage 11(int) 2D sampled format:Unknown 120: TypePointer UniformConstant 119 - 121(g_tTex3di4): 120(ptr) Variable UniformConstant - 122: TypeImage 18(int) 3D sampled format:Unknown + 121(g_tTex2di4): 120(ptr) Variable UniformConstant + 122: TypeImage 23(int) 2D sampled format:Unknown 123: TypePointer UniformConstant 122 - 124(g_tTex3du4): 123(ptr) Variable UniformConstant - 125: TypeImage 6(float) Cube sampled format:Unknown + 124(g_tTex2du4): 123(ptr) Variable UniformConstant + 125: TypeImage 6(float) 3D sampled format:Unknown 126: TypePointer UniformConstant 125 - 127(g_tTexcdf4): 126(ptr) Variable UniformConstant - 128: TypeImage 11(int) Cube sampled format:Unknown + 127(g_tTex3df4): 126(ptr) Variable UniformConstant + 128: TypeImage 11(int) 3D sampled format:Unknown 129: TypePointer UniformConstant 128 - 130(g_tTexcdi4): 129(ptr) Variable UniformConstant - 131: TypeImage 18(int) Cube sampled format:Unknown + 130(g_tTex3di4): 129(ptr) Variable UniformConstant + 131: TypeImage 23(int) 3D sampled format:Unknown 132: TypePointer UniformConstant 131 - 133(g_tTexcdu4): 132(ptr) Variable UniformConstant - 134: TypeImage 6(float) Cube array sampled format:Unknown + 133(g_tTex3du4): 132(ptr) Variable UniformConstant + 134: TypeImage 6(float) Cube sampled format:Unknown 135: TypePointer UniformConstant 134 -136(g_tTexcdf4a): 135(ptr) Variable UniformConstant - 137: TypeImage 11(int) Cube array sampled format:Unknown + 136(g_tTexcdf4): 135(ptr) Variable UniformConstant + 137: TypeImage 11(int) Cube sampled format:Unknown 138: TypePointer UniformConstant 137 -139(g_tTexcdi4a): 138(ptr) Variable UniformConstant - 140: TypeImage 18(int) Cube array sampled format:Unknown + 139(g_tTexcdi4): 138(ptr) Variable UniformConstant + 140: TypeImage 23(int) Cube sampled format:Unknown 141: TypePointer UniformConstant 140 -142(g_tTexcdu4a): 141(ptr) Variable UniformConstant - 143(c1): 20(ptr) Variable UniformConstant - 144: TypePointer UniformConstant 15(ivec2) - 145(c2): 144(ptr) Variable UniformConstant - 146(o1): 20(ptr) Variable UniformConstant - 147(o2): 144(ptr) Variable UniformConstant - 148(o3): 13(ptr) Variable UniformConstant - 149(o4): 49(ptr) Variable UniformConstant + 142(g_tTexcdu4): 141(ptr) Variable UniformConstant + 143: TypeImage 6(float) Cube array sampled format:Unknown + 144: TypePointer UniformConstant 143 +145(g_tTexcdf4a): 144(ptr) Variable UniformConstant + 146: TypeImage 11(int) Cube array sampled format:Unknown + 147: TypePointer UniformConstant 146 +148(g_tTexcdi4a): 147(ptr) Variable UniformConstant + 149: TypeImage 23(int) Cube array sampled format:Unknown + 150: TypePointer UniformConstant 149 +151(g_tTexcdu4a): 150(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 77(psout): 76(ptr) Variable Function + 86(psout): 85(ptr) Variable Function 10: 7 Load 9(g_tTex1df4a) - 16: 12(ivec3) Load 14(c3) - 17: 15(ivec2) VectorShuffle 16 16 0 1 - 21: 20(ptr) AccessChain 14(c3) 19 - 22: 11(int) Load 21 - 24: 23(fvec4) ImageFetch 10 17 Lod 22 - 28: 25 Load 27(g_tTex1di4a) - 29: 12(ivec3) Load 14(c3) - 30: 15(ivec2) VectorShuffle 29 29 0 1 - 31: 20(ptr) AccessChain 14(c3) 19 - 32: 11(int) Load 31 - 34: 33(ivec4) ImageFetch 28 30 Lod 32 - 38: 35 Load 37(g_tTex1du4a) - 39: 12(ivec3) Load 14(c3) - 40: 15(ivec2) VectorShuffle 39 39 0 1 - 41: 20(ptr) AccessChain 14(c3) 19 - 42: 11(int) Load 41 - 44: 43(ivec4) ImageFetch 38 40 Lod 42 - 48: 45 Load 47(g_tTex2df4a) - 51: 33(ivec4) Load 50(c4) - 52: 12(ivec3) VectorShuffle 51 51 0 1 2 - 54: 20(ptr) AccessChain 50(c4) 53 - 55: 11(int) Load 54 - 56: 23(fvec4) ImageFetch 48 52 Lod 55 - 60: 57 Load 59(g_tTex2di4a) - 61: 33(ivec4) Load 50(c4) - 62: 12(ivec3) VectorShuffle 61 61 0 1 2 - 63: 20(ptr) AccessChain 50(c4) 53 - 64: 11(int) Load 63 - 65: 33(ivec4) ImageFetch 60 62 Lod 64 - 69: 66 Load 68(g_tTex2du4a) - 70: 33(ivec4) Load 50(c4) - 71: 12(ivec3) VectorShuffle 70 70 0 1 2 - 72: 20(ptr) AccessChain 50(c4) 53 - 73: 11(int) Load 72 - 74: 43(ivec4) ImageFetch 69 71 Lod 73 - 82: 81(ptr) AccessChain 77(psout) 78 - Store 82 80 - 85: 84(ptr) AccessChain 77(psout) 83 - Store 85 79 - 88: 81(ptr) AccessChain 77(psout) 78 - 89: 23(fvec4) Load 88 - Store 87(Color) 89 - 92: 84(ptr) AccessChain 77(psout) 83 - 93: 6(float) Load 92 - Store 91(Depth) 93 + 20: 19(ptr) AccessChain 17 18 + 21: 13(ivec3) Load 20 + 22: 12(ivec2) VectorShuffle 21 21 0 1 + 26: 25(ptr) AccessChain 17 18 24 + 27: 11(int) Load 26 + 29: 28(fvec4) ImageFetch 10 22 Lod 27 + 33: 30 Load 32(g_tTex1di4a) + 34: 19(ptr) AccessChain 17 18 + 35: 13(ivec3) Load 34 + 36: 12(ivec2) VectorShuffle 35 35 0 1 + 37: 25(ptr) AccessChain 17 18 24 + 38: 11(int) Load 37 + 39: 14(ivec4) ImageFetch 33 36 Lod 38 + 43: 40 Load 42(g_tTex1du4a) + 44: 19(ptr) AccessChain 17 18 + 45: 13(ivec3) Load 44 + 46: 12(ivec2) VectorShuffle 45 45 0 1 + 47: 25(ptr) AccessChain 17 18 24 + 48: 11(int) Load 47 + 50: 49(ivec4) ImageFetch 43 46 Lod 48 + 54: 51 Load 53(g_tTex2df4a) + 57: 56(ptr) AccessChain 17 55 + 58: 14(ivec4) Load 57 + 59: 13(ivec3) VectorShuffle 58 58 0 1 2 + 61: 25(ptr) AccessChain 17 55 60 + 62: 11(int) Load 61 + 63: 28(fvec4) ImageFetch 54 59 Lod 62 + 67: 64 Load 66(g_tTex2di4a) + 68: 56(ptr) AccessChain 17 55 + 69: 14(ivec4) Load 68 + 70: 13(ivec3) VectorShuffle 69 69 0 1 2 + 71: 25(ptr) AccessChain 17 55 60 + 72: 11(int) Load 71 + 73: 14(ivec4) ImageFetch 67 70 Lod 72 + 77: 74 Load 76(g_tTex2du4a) + 78: 56(ptr) AccessChain 17 55 + 79: 14(ivec4) Load 78 + 80: 13(ivec3) VectorShuffle 79 79 0 1 2 + 81: 25(ptr) AccessChain 17 55 60 + 82: 11(int) Load 81 + 83: 49(ivec4) ImageFetch 77 80 Lod 82 + 91: 90(ptr) AccessChain 86(psout) 87 + Store 91 89 + 94: 93(ptr) AccessChain 86(psout) 92 + Store 94 88 + 97: 90(ptr) AccessChain 86(psout) 87 + 98: 28(fvec4) Load 97 + Store 96(Color) 98 + 101: 93(ptr) AccessChain 86(psout) 92 + 102: 6(float) Load 101 + Store 100(Depth) 102 Return FunctionEnd diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out index 41d44eee..20b7456d 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -2,85 +2,124 @@ hlsl.load.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch (global 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch (global 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:54 textureFetch (global 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 direct index (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) 0:57 textureFetch (global 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index (temp int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch (global 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index (temp int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:59 textureFetch (global 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index (temp int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) 0:62 textureFetch (global 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) @@ -89,13 +128,19 @@ gl_FragCoord origin is upper left 0:62 Constant: 0:62 2 (const int) 0:62 direct index (temp int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch (global 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) @@ -104,13 +149,19 @@ gl_FragCoord origin is upper left 0:63 Constant: 0:63 2 (const int) 0:63 direct index (temp int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 textureFetch (global 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) @@ -119,7 +170,10 @@ gl_FragCoord origin is upper left 0:64 Constant: 0:64 2 (const int) 0:64 direct index (temp int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:72 move second child to first child (temp 4-component vector of float) @@ -177,16 +231,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -195,85 +242,124 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetch (global 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch (global 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:54 textureFetch (global 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 direct index (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) 0:57 textureFetch (global 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index (temp int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch (global 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index (temp int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:59 textureFetch (global 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index (temp int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) 0:62 textureFetch (global 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) @@ -282,13 +368,19 @@ gl_FragCoord origin is upper left 0:62 Constant: 0:62 2 (const int) 0:62 direct index (temp int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch (global 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) @@ -297,13 +389,19 @@ gl_FragCoord origin is upper left 0:63 Constant: 0:63 2 (const int) 0:63 direct index (temp int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:64 textureFetch (global 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) @@ -312,7 +410,10 @@ gl_FragCoord origin is upper left 0:64 Constant: 0:64 2 (const int) 0:64 direct index (temp int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) 0:72 move second child to first child (temp 4-component vector of float) @@ -370,91 +471,96 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 170 +// Id's are bound by 172 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 118 122 + EntryPoint Fragment 4 "main" 125 129 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "g_tTex1df4" - Name 14 "c2" - Name 27 "g_tTex1di4" - Name 37 "g_tTex1du4" - Name 47 "g_tTex2df4" - Name 51 "c3" - Name 60 "g_tTex2di4" - Name 69 "g_tTex2du4" - Name 78 "g_tTex3df4" - Name 81 "c4" - Name 90 "g_tTex3di4" - Name 99 "g_tTex3du4" - Name 106 "PS_OUTPUT" - MemberName 106(PS_OUTPUT) 0 "Color" - MemberName 106(PS_OUTPUT) 1 "Depth" - Name 108 "psout" - Name 118 "Color" - Name 122 "Depth" - Name 128 "g_sSamp" - Name 131 "g_tTexcdf4" - Name 134 "g_tTexcdi4" - Name 137 "g_tTexcdu4" - Name 140 "g_tTex1df4a" - Name 143 "g_tTex1di4a" - Name 146 "g_tTex1du4a" - Name 149 "g_tTex2df4a" - Name 152 "g_tTex2di4a" - Name 155 "g_tTex2du4a" - Name 158 "g_tTexcdf4a" - Name 161 "g_tTexcdi4a" - Name 164 "g_tTexcdu4a" - Name 165 "c1" - Name 166 "o1" - Name 167 "o2" - Name 168 "o3" - Name 169 "o4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 31 "g_tTex1di4" + Name 40 "g_tTex1du4" + Name 50 "g_tTex2df4" + Name 63 "g_tTex2di4" + Name 73 "g_tTex2du4" + Name 83 "g_tTex3df4" + Name 96 "g_tTex3di4" + Name 106 "g_tTex3du4" + Name 114 "PS_OUTPUT" + MemberName 114(PS_OUTPUT) 0 "Color" + MemberName 114(PS_OUTPUT) 1 "Depth" + Name 116 "psout" + Name 125 "Color" + Name 129 "Depth" + Name 135 "g_sSamp" + Name 138 "g_tTexcdf4" + Name 141 "g_tTexcdi4" + Name 144 "g_tTexcdu4" + Name 147 "g_tTex1df4a" + Name 150 "g_tTex1di4a" + Name 153 "g_tTex1du4a" + Name 156 "g_tTex2df4a" + Name 159 "g_tTex2di4a" + Name 162 "g_tTex2du4a" + Name 165 "g_tTexcdf4a" + Name 168 "g_tTexcdi4a" + Name 171 "g_tTexcdu4a" Decorate 9(g_tTex1df4) DescriptorSet 0 Decorate 9(g_tTex1df4) Binding 0 - Decorate 27(g_tTex1di4) DescriptorSet 0 - Decorate 37(g_tTex1du4) DescriptorSet 0 - Decorate 47(g_tTex2df4) DescriptorSet 0 - Decorate 60(g_tTex2di4) DescriptorSet 0 - Decorate 69(g_tTex2du4) DescriptorSet 0 - Decorate 78(g_tTex3df4) DescriptorSet 0 - Decorate 90(g_tTex3di4) DescriptorSet 0 - Decorate 99(g_tTex3du4) DescriptorSet 0 - Decorate 118(Color) Location 0 - Decorate 122(Depth) BuiltIn FragDepth - Decorate 128(g_sSamp) DescriptorSet 0 - Decorate 128(g_sSamp) Binding 0 - Decorate 131(g_tTexcdf4) DescriptorSet 0 - Decorate 134(g_tTexcdi4) DescriptorSet 0 - Decorate 137(g_tTexcdu4) DescriptorSet 0 - Decorate 140(g_tTex1df4a) DescriptorSet 0 - Decorate 143(g_tTex1di4a) DescriptorSet 0 - Decorate 146(g_tTex1du4a) DescriptorSet 0 - Decorate 149(g_tTex2df4a) DescriptorSet 0 - Decorate 152(g_tTex2di4a) DescriptorSet 0 - Decorate 155(g_tTex2du4a) DescriptorSet 0 - Decorate 158(g_tTexcdf4a) DescriptorSet 0 - Decorate 161(g_tTexcdi4a) DescriptorSet 0 - Decorate 164(g_tTexcdu4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 40(g_tTex1du4) DescriptorSet 0 + Decorate 50(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex2di4) DescriptorSet 0 + Decorate 73(g_tTex2du4) DescriptorSet 0 + Decorate 83(g_tTex3df4) DescriptorSet 0 + Decorate 96(g_tTex3di4) DescriptorSet 0 + Decorate 106(g_tTex3du4) DescriptorSet 0 + Decorate 125(Color) Location 0 + Decorate 129(Depth) BuiltIn FragDepth + Decorate 135(g_sSamp) DescriptorSet 0 + Decorate 135(g_sSamp) Binding 0 + Decorate 138(g_tTexcdf4) DescriptorSet 0 + Decorate 141(g_tTexcdi4) DescriptorSet 0 + Decorate 144(g_tTexcdu4) DescriptorSet 0 + Decorate 147(g_tTex1df4a) DescriptorSet 0 + Decorate 150(g_tTex1di4a) DescriptorSet 0 + Decorate 153(g_tTex1du4a) DescriptorSet 0 + Decorate 156(g_tTex2df4a) DescriptorSet 0 + Decorate 159(g_tTex2di4a) DescriptorSet 0 + Decorate 162(g_tTex2du4a) DescriptorSet 0 + Decorate 165(g_tTexcdf4a) DescriptorSet 0 + Decorate 168(g_tTexcdi4a) DescriptorSet 0 + Decorate 171(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -463,168 +569,170 @@ gl_FragCoord origin is upper left 9(g_tTex1df4): 8(ptr) Variable UniformConstant 11: TypeInt 32 1 12: TypeVector 11(int) 2 - 13: TypePointer UniformConstant 12(ivec2) - 14(c2): 13(ptr) Variable UniformConstant - 15: TypeInt 32 0 - 16: 15(int) Constant 0 - 17: TypePointer UniformConstant 11(int) - 20: 15(int) Constant 1 - 23: TypeVector 6(float) 4 - 25: TypeImage 11(int) 1D sampled format:Unknown - 26: TypePointer UniformConstant 25 - 27(g_tTex1di4): 26(ptr) Variable UniformConstant - 33: TypeVector 11(int) 4 - 35: TypeImage 15(int) 1D sampled format:Unknown - 36: TypePointer UniformConstant 35 - 37(g_tTex1du4): 36(ptr) Variable UniformConstant - 43: TypeVector 15(int) 4 - 45: TypeImage 6(float) 2D sampled format:Unknown - 46: TypePointer UniformConstant 45 - 47(g_tTex2df4): 46(ptr) Variable UniformConstant - 49: TypeVector 11(int) 3 - 50: TypePointer UniformConstant 49(ivec3) - 51(c3): 50(ptr) Variable UniformConstant - 54: 15(int) Constant 2 - 58: TypeImage 11(int) 2D sampled format:Unknown - 59: TypePointer UniformConstant 58 - 60(g_tTex2di4): 59(ptr) Variable UniformConstant - 67: TypeImage 15(int) 2D sampled format:Unknown - 68: TypePointer UniformConstant 67 - 69(g_tTex2du4): 68(ptr) Variable UniformConstant - 76: TypeImage 6(float) 3D sampled format:Unknown - 77: TypePointer UniformConstant 76 - 78(g_tTex3df4): 77(ptr) Variable UniformConstant - 80: TypePointer UniformConstant 33(ivec4) - 81(c4): 80(ptr) Variable UniformConstant - 84: 15(int) Constant 3 - 88: TypeImage 11(int) 3D sampled format:Unknown - 89: TypePointer UniformConstant 88 - 90(g_tTex3di4): 89(ptr) Variable UniformConstant - 97: TypeImage 15(int) 3D sampled format:Unknown - 98: TypePointer UniformConstant 97 - 99(g_tTex3du4): 98(ptr) Variable UniformConstant - 106(PS_OUTPUT): TypeStruct 23(fvec4) 6(float) - 107: TypePointer Function 106(PS_OUTPUT) - 109: 11(int) Constant 0 - 110: 6(float) Constant 1065353216 - 111: 23(fvec4) ConstantComposite 110 110 110 110 - 112: TypePointer Function 23(fvec4) - 114: 11(int) Constant 1 - 115: TypePointer Function 6(float) - 117: TypePointer Output 23(fvec4) - 118(Color): 117(ptr) Variable Output - 121: TypePointer Output 6(float) - 122(Depth): 121(ptr) Variable Output - 126: TypeSampler - 127: TypePointer UniformConstant 126 - 128(g_sSamp): 127(ptr) Variable UniformConstant - 129: TypeImage 6(float) Cube sampled format:Unknown - 130: TypePointer UniformConstant 129 - 131(g_tTexcdf4): 130(ptr) Variable UniformConstant - 132: TypeImage 11(int) Cube sampled format:Unknown - 133: TypePointer UniformConstant 132 - 134(g_tTexcdi4): 133(ptr) Variable UniformConstant - 135: TypeImage 15(int) Cube sampled format:Unknown - 136: TypePointer UniformConstant 135 - 137(g_tTexcdu4): 136(ptr) Variable UniformConstant - 138: TypeImage 6(float) 1D array sampled format:Unknown - 139: TypePointer UniformConstant 138 -140(g_tTex1df4a): 139(ptr) Variable UniformConstant - 141: TypeImage 11(int) 1D array sampled format:Unknown - 142: TypePointer UniformConstant 141 -143(g_tTex1di4a): 142(ptr) Variable UniformConstant - 144: TypeImage 15(int) 1D array sampled format:Unknown - 145: TypePointer UniformConstant 144 -146(g_tTex1du4a): 145(ptr) Variable UniformConstant - 147: TypeImage 6(float) 2D array sampled format:Unknown - 148: TypePointer UniformConstant 147 -149(g_tTex2df4a): 148(ptr) Variable UniformConstant - 150: TypeImage 11(int) 2D array sampled format:Unknown - 151: TypePointer UniformConstant 150 -152(g_tTex2di4a): 151(ptr) Variable UniformConstant - 153: TypeImage 15(int) 2D array sampled format:Unknown - 154: TypePointer UniformConstant 153 -155(g_tTex2du4a): 154(ptr) Variable UniformConstant - 156: TypeImage 6(float) Cube array sampled format:Unknown - 157: TypePointer UniformConstant 156 -158(g_tTexcdf4a): 157(ptr) Variable UniformConstant - 159: TypeImage 11(int) Cube array sampled format:Unknown - 160: TypePointer UniformConstant 159 -161(g_tTexcdi4a): 160(ptr) Variable UniformConstant - 162: TypeImage 15(int) Cube array sampled format:Unknown - 163: TypePointer UniformConstant 162 -164(g_tTexcdu4a): 163(ptr) Variable UniformConstant - 165(c1): 17(ptr) Variable UniformConstant - 166(o1): 17(ptr) Variable UniformConstant - 167(o2): 13(ptr) Variable UniformConstant - 168(o3): 50(ptr) Variable UniformConstant - 169(o4): 80(ptr) Variable UniformConstant + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypeInt 32 0 + 20: 19(int) Constant 0 + 21: TypePointer Uniform 11(int) + 24: 19(int) Constant 1 + 27: TypeVector 6(float) 4 + 29: TypeImage 11(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 38: TypeImage 19(int) 1D sampled format:Unknown + 39: TypePointer UniformConstant 38 + 40(g_tTex1du4): 39(ptr) Variable UniformConstant + 46: TypeVector 19(int) 4 + 48: TypeImage 6(float) 2D sampled format:Unknown + 49: TypePointer UniformConstant 48 + 50(g_tTex2df4): 49(ptr) Variable UniformConstant + 52: 11(int) Constant 2 + 53: TypePointer Uniform 13(ivec3) + 57: 19(int) Constant 2 + 61: TypeImage 11(int) 2D sampled format:Unknown + 62: TypePointer UniformConstant 61 + 63(g_tTex2di4): 62(ptr) Variable UniformConstant + 71: TypeImage 19(int) 2D sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2du4): 72(ptr) Variable UniformConstant + 81: TypeImage 6(float) 3D sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex3df4): 82(ptr) Variable UniformConstant + 85: 11(int) Constant 3 + 86: TypePointer Uniform 14(ivec4) + 90: 19(int) Constant 3 + 94: TypeImage 11(int) 3D sampled format:Unknown + 95: TypePointer UniformConstant 94 + 96(g_tTex3di4): 95(ptr) Variable UniformConstant + 104: TypeImage 19(int) 3D sampled format:Unknown + 105: TypePointer UniformConstant 104 + 106(g_tTex3du4): 105(ptr) Variable UniformConstant + 114(PS_OUTPUT): TypeStruct 27(fvec4) 6(float) + 115: TypePointer Function 114(PS_OUTPUT) + 117: 11(int) Constant 0 + 118: 6(float) Constant 1065353216 + 119: 27(fvec4) ConstantComposite 118 118 118 118 + 120: TypePointer Function 27(fvec4) + 122: TypePointer Function 6(float) + 124: TypePointer Output 27(fvec4) + 125(Color): 124(ptr) Variable Output + 128: TypePointer Output 6(float) + 129(Depth): 128(ptr) Variable Output + 133: TypeSampler + 134: TypePointer UniformConstant 133 + 135(g_sSamp): 134(ptr) Variable UniformConstant + 136: TypeImage 6(float) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdf4): 137(ptr) Variable UniformConstant + 139: TypeImage 11(int) Cube sampled format:Unknown + 140: TypePointer UniformConstant 139 + 141(g_tTexcdi4): 140(ptr) Variable UniformConstant + 142: TypeImage 19(int) Cube sampled format:Unknown + 143: TypePointer UniformConstant 142 + 144(g_tTexcdu4): 143(ptr) Variable UniformConstant + 145: TypeImage 6(float) 1D array sampled format:Unknown + 146: TypePointer UniformConstant 145 +147(g_tTex1df4a): 146(ptr) Variable UniformConstant + 148: TypeImage 11(int) 1D array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTex1di4a): 149(ptr) Variable UniformConstant + 151: TypeImage 19(int) 1D array sampled format:Unknown + 152: TypePointer UniformConstant 151 +153(g_tTex1du4a): 152(ptr) Variable UniformConstant + 154: TypeImage 6(float) 2D array sampled format:Unknown + 155: TypePointer UniformConstant 154 +156(g_tTex2df4a): 155(ptr) Variable UniformConstant + 157: TypeImage 11(int) 2D array sampled format:Unknown + 158: TypePointer UniformConstant 157 +159(g_tTex2di4a): 158(ptr) Variable UniformConstant + 160: TypeImage 19(int) 2D array sampled format:Unknown + 161: TypePointer UniformConstant 160 +162(g_tTex2du4a): 161(ptr) Variable UniformConstant + 163: TypeImage 6(float) Cube array sampled format:Unknown + 164: TypePointer UniformConstant 163 +165(g_tTexcdf4a): 164(ptr) Variable UniformConstant + 166: TypeImage 11(int) Cube array sampled format:Unknown + 167: TypePointer UniformConstant 166 +168(g_tTexcdi4a): 167(ptr) Variable UniformConstant + 169: TypeImage 19(int) Cube array sampled format:Unknown + 170: TypePointer UniformConstant 169 +171(g_tTexcdu4a): 170(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 108(psout): 107(ptr) Variable Function + 116(psout): 115(ptr) Variable Function 10: 7 Load 9(g_tTex1df4) - 18: 17(ptr) AccessChain 14(c2) 16 - 19: 11(int) Load 18 - 21: 17(ptr) AccessChain 14(c2) 20 - 22: 11(int) Load 21 - 24: 23(fvec4) ImageFetch 10 19 Lod 22 - 28: 25 Load 27(g_tTex1di4) - 29: 17(ptr) AccessChain 14(c2) 16 - 30: 11(int) Load 29 - 31: 17(ptr) AccessChain 14(c2) 20 - 32: 11(int) Load 31 - 34: 33(ivec4) ImageFetch 28 30 Lod 32 - 38: 35 Load 37(g_tTex1du4) - 39: 17(ptr) AccessChain 14(c2) 16 - 40: 11(int) Load 39 - 41: 17(ptr) AccessChain 14(c2) 20 - 42: 11(int) Load 41 - 44: 43(ivec4) ImageFetch 38 40 Lod 42 - 48: 45 Load 47(g_tTex2df4) - 52: 49(ivec3) Load 51(c3) - 53: 12(ivec2) VectorShuffle 52 52 0 1 - 55: 17(ptr) AccessChain 51(c3) 54 - 56: 11(int) Load 55 - 57: 23(fvec4) ImageFetch 48 53 Lod 56 - 61: 58 Load 60(g_tTex2di4) - 62: 49(ivec3) Load 51(c3) - 63: 12(ivec2) VectorShuffle 62 62 0 1 - 64: 17(ptr) AccessChain 51(c3) 54 - 65: 11(int) Load 64 - 66: 33(ivec4) ImageFetch 61 63 Lod 65 - 70: 67 Load 69(g_tTex2du4) - 71: 49(ivec3) Load 51(c3) - 72: 12(ivec2) VectorShuffle 71 71 0 1 - 73: 17(ptr) AccessChain 51(c3) 54 - 74: 11(int) Load 73 - 75: 43(ivec4) ImageFetch 70 72 Lod 74 - 79: 76 Load 78(g_tTex3df4) - 82: 33(ivec4) Load 81(c4) - 83: 49(ivec3) VectorShuffle 82 82 0 1 2 - 85: 17(ptr) AccessChain 81(c4) 84 - 86: 11(int) Load 85 - 87: 23(fvec4) ImageFetch 79 83 Lod 86 - 91: 88 Load 90(g_tTex3di4) - 92: 33(ivec4) Load 81(c4) - 93: 49(ivec3) VectorShuffle 92 92 0 1 2 - 94: 17(ptr) AccessChain 81(c4) 84 - 95: 11(int) Load 94 - 96: 33(ivec4) ImageFetch 91 93 Lod 95 - 100: 97 Load 99(g_tTex3du4) - 101: 33(ivec4) Load 81(c4) - 102: 49(ivec3) VectorShuffle 101 101 0 1 2 - 103: 17(ptr) AccessChain 81(c4) 84 - 104: 11(int) Load 103 - 105: 43(ivec4) ImageFetch 100 102 Lod 104 - 113: 112(ptr) AccessChain 108(psout) 109 - Store 113 111 - 116: 115(ptr) AccessChain 108(psout) 114 - Store 116 110 - 119: 112(ptr) AccessChain 108(psout) 109 - 120: 23(fvec4) Load 119 - Store 118(Color) 120 - 123: 115(ptr) AccessChain 108(psout) 114 - 124: 6(float) Load 123 - Store 122(Depth) 124 + 22: 21(ptr) AccessChain 17 18 20 + 23: 11(int) Load 22 + 25: 21(ptr) AccessChain 17 18 24 + 26: 11(int) Load 25 + 28: 27(fvec4) ImageFetch 10 23 Lod 26 + 32: 29 Load 31(g_tTex1di4) + 33: 21(ptr) AccessChain 17 18 20 + 34: 11(int) Load 33 + 35: 21(ptr) AccessChain 17 18 24 + 36: 11(int) Load 35 + 37: 14(ivec4) ImageFetch 32 34 Lod 36 + 41: 38 Load 40(g_tTex1du4) + 42: 21(ptr) AccessChain 17 18 20 + 43: 11(int) Load 42 + 44: 21(ptr) AccessChain 17 18 24 + 45: 11(int) Load 44 + 47: 46(ivec4) ImageFetch 41 43 Lod 45 + 51: 48 Load 50(g_tTex2df4) + 54: 53(ptr) AccessChain 17 52 + 55: 13(ivec3) Load 54 + 56: 12(ivec2) VectorShuffle 55 55 0 1 + 58: 21(ptr) AccessChain 17 52 57 + 59: 11(int) Load 58 + 60: 27(fvec4) ImageFetch 51 56 Lod 59 + 64: 61 Load 63(g_tTex2di4) + 65: 53(ptr) AccessChain 17 52 + 66: 13(ivec3) Load 65 + 67: 12(ivec2) VectorShuffle 66 66 0 1 + 68: 21(ptr) AccessChain 17 52 57 + 69: 11(int) Load 68 + 70: 14(ivec4) ImageFetch 64 67 Lod 69 + 74: 71 Load 73(g_tTex2du4) + 75: 53(ptr) AccessChain 17 52 + 76: 13(ivec3) Load 75 + 77: 12(ivec2) VectorShuffle 76 76 0 1 + 78: 21(ptr) AccessChain 17 52 57 + 79: 11(int) Load 78 + 80: 46(ivec4) ImageFetch 74 77 Lod 79 + 84: 81 Load 83(g_tTex3df4) + 87: 86(ptr) AccessChain 17 85 + 88: 14(ivec4) Load 87 + 89: 13(ivec3) VectorShuffle 88 88 0 1 2 + 91: 21(ptr) AccessChain 17 85 90 + 92: 11(int) Load 91 + 93: 27(fvec4) ImageFetch 84 89 Lod 92 + 97: 94 Load 96(g_tTex3di4) + 98: 86(ptr) AccessChain 17 85 + 99: 14(ivec4) Load 98 + 100: 13(ivec3) VectorShuffle 99 99 0 1 2 + 101: 21(ptr) AccessChain 17 85 90 + 102: 11(int) Load 101 + 103: 14(ivec4) ImageFetch 97 100 Lod 102 + 107: 104 Load 106(g_tTex3du4) + 108: 86(ptr) AccessChain 17 85 + 109: 14(ivec4) Load 108 + 110: 13(ivec3) VectorShuffle 109 109 0 1 2 + 111: 21(ptr) AccessChain 17 85 90 + 112: 11(int) Load 111 + 113: 46(ivec4) ImageFetch 107 110 Lod 112 + 121: 120(ptr) AccessChain 116(psout) 117 + Store 121 119 + 123: 122(ptr) AccessChain 116(psout) 18 + Store 123 118 + 126: 120(ptr) AccessChain 116(psout) 117 + 127: 27(fvec4) Load 126 + Store 125(Color) 127 + 130: 122(ptr) AccessChain 116(psout) 18 + 131: 6(float) Load 130 + Store 129(Depth) 131 Return FunctionEnd diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index 62e6128d..4e1efadb 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -1,85 +1,124 @@ hlsl.load.basic.dx10.vert Shader version: 450 0:? Sequence -0:47 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:47 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence 0:51 textureFetch (global 4-component vector of float) 0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:51 vector swizzle (temp int) -0:51 'c2' (uniform 2-component vector of int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 direct index (temp int) -0:51 'c2' (uniform 2-component vector of int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Constant: 0:51 1 (const int) 0:52 textureFetch (global 4-component vector of int) 0:52 'g_tTex1di4' (uniform itexture1D) 0:52 vector swizzle (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch (global 4-component vector of uint) 0:53 'g_tTex1du4' (uniform utexture1D) 0:53 vector swizzle (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:56 textureFetch (global 4-component vector of float) 0:56 'g_tTex2df4' (uniform texture2D) 0:56 vector swizzle (temp 2-component vector of int) -0:56 'c3' (uniform 3-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 direct index (temp int) -0:56 'c3' (uniform 3-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) 0:56 Constant: 0:56 2 (const int) 0:57 textureFetch (global 4-component vector of int) 0:57 'g_tTex2di4' (uniform itexture2D) 0:57 vector swizzle (temp 2-component vector of int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index (temp int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch (global 4-component vector of uint) 0:58 'g_tTex2du4' (uniform utexture2D) 0:58 vector swizzle (temp 2-component vector of int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index (temp int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:61 textureFetch (global 4-component vector of float) 0:61 'g_tTex3df4' (uniform texture3D) 0:61 vector swizzle (temp 3-component vector of int) -0:61 'c4' (uniform 4-component vector of int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) @@ -88,13 +127,19 @@ Shader version: 450 0:61 Constant: 0:61 2 (const int) 0:61 direct index (temp int) -0:61 'c4' (uniform 4-component vector of int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) 0:61 Constant: 0:61 3 (const int) 0:62 textureFetch (global 4-component vector of int) 0:62 'g_tTex3di4' (uniform itexture3D) 0:62 vector swizzle (temp 3-component vector of int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) @@ -103,13 +148,19 @@ Shader version: 450 0:62 Constant: 0:62 2 (const int) 0:62 direct index (temp int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch (global 4-component vector of uint) 0:63 'g_tTex3du4' (uniform utexture3D) 0:63 vector swizzle (temp 3-component vector of int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) @@ -118,7 +169,10 @@ Shader version: 450 0:63 Constant: 0:63 2 (const int) 0:63 direct index (temp int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:67 move second child to first child (temp 4-component vector of float) @@ -163,15 +217,8 @@ Shader version: 450 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Pos' (out 4-component vector of float Position) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked vertex stage: @@ -179,85 +226,124 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:47 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:47 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence 0:51 textureFetch (global 4-component vector of float) 0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:51 vector swizzle (temp int) -0:51 'c2' (uniform 2-component vector of int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Sequence 0:51 Constant: 0:51 0 (const int) 0:51 direct index (temp int) -0:51 'c2' (uniform 2-component vector of int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) 0:51 Constant: 0:51 1 (const int) 0:52 textureFetch (global 4-component vector of int) 0:52 'g_tTex1di4' (uniform itexture1D) 0:52 vector swizzle (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) 0:53 textureFetch (global 4-component vector of uint) 0:53 'g_tTex1du4' (uniform utexture1D) 0:53 vector swizzle (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) 0:56 textureFetch (global 4-component vector of float) 0:56 'g_tTex2df4' (uniform texture2D) 0:56 vector swizzle (temp 2-component vector of int) -0:56 'c3' (uniform 3-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) 0:56 Sequence 0:56 Constant: 0:56 0 (const int) 0:56 Constant: 0:56 1 (const int) 0:56 direct index (temp int) -0:56 'c3' (uniform 3-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) 0:56 Constant: 0:56 2 (const int) 0:57 textureFetch (global 4-component vector of int) 0:57 'g_tTex2di4' (uniform itexture2D) 0:57 vector swizzle (temp 2-component vector of int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index (temp int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) 0:58 textureFetch (global 4-component vector of uint) 0:58 'g_tTex2du4' (uniform utexture2D) 0:58 vector swizzle (temp 2-component vector of int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index (temp int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) 0:61 textureFetch (global 4-component vector of float) 0:61 'g_tTex3df4' (uniform texture3D) 0:61 vector swizzle (temp 3-component vector of int) -0:61 'c4' (uniform 4-component vector of int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) 0:61 Sequence 0:61 Constant: 0:61 0 (const int) @@ -266,13 +352,19 @@ Shader version: 450 0:61 Constant: 0:61 2 (const int) 0:61 direct index (temp int) -0:61 'c4' (uniform 4-component vector of int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) 0:61 Constant: 0:61 3 (const int) 0:62 textureFetch (global 4-component vector of int) 0:62 'g_tTex3di4' (uniform itexture3D) 0:62 vector swizzle (temp 3-component vector of int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) @@ -281,13 +373,19 @@ Shader version: 450 0:62 Constant: 0:62 2 (const int) 0:62 direct index (temp int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) 0:63 textureFetch (global 4-component vector of uint) 0:63 'g_tTex3du4' (uniform utexture3D) 0:63 vector swizzle (temp 3-component vector of int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) @@ -296,7 +394,10 @@ Shader version: 450 0:63 Constant: 0:63 2 (const int) 0:63 direct index (temp int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) 0:67 move second child to first child (temp 4-component vector of float) @@ -341,86 +442,91 @@ Shader version: 450 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Pos' (out 4-component vector of float Position) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 163 +// Id's are bound by 166 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 115 + EntryPoint Vertex 4 "main" 123 Name 4 "main" Name 9 "g_tTex1df4" - Name 14 "c2" - Name 27 "g_tTex1di4" - Name 37 "g_tTex1du4" - Name 47 "g_tTex2df4" - Name 51 "c3" - Name 60 "g_tTex2di4" - Name 69 "g_tTex2du4" - Name 78 "g_tTex3df4" - Name 81 "c4" - Name 90 "g_tTex3di4" - Name 99 "g_tTex3du4" - Name 106 "VS_OUTPUT" - MemberName 106(VS_OUTPUT) 0 "Pos" - Name 108 "vsout" - Name 115 "Pos" - Name 121 "g_sSamp" - Name 124 "g_tTexcdf4" - Name 127 "g_tTexcdi4" - Name 130 "g_tTexcdu4" - Name 133 "g_tTex1df4a" - Name 136 "g_tTex1di4a" - Name 139 "g_tTex1du4a" - Name 142 "g_tTex2df4a" - Name 145 "g_tTex2di4a" - Name 148 "g_tTex2du4a" - Name 151 "g_tTexcdf4a" - Name 154 "g_tTexcdi4a" - Name 157 "g_tTexcdu4a" - Name 158 "c1" - Name 159 "o1" - Name 160 "o2" - Name 161 "o3" - Name 162 "o4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 31 "g_tTex1di4" + Name 40 "g_tTex1du4" + Name 50 "g_tTex2df4" + Name 63 "g_tTex2di4" + Name 73 "g_tTex2du4" + Name 83 "g_tTex3df4" + Name 96 "g_tTex3di4" + Name 106 "g_tTex3du4" + Name 114 "VS_OUTPUT" + MemberName 114(VS_OUTPUT) 0 "Pos" + Name 116 "vsout" + Name 123 "Pos" + Name 129 "g_sSamp" + Name 132 "g_tTexcdf4" + Name 135 "g_tTexcdi4" + Name 138 "g_tTexcdu4" + Name 141 "g_tTex1df4a" + Name 144 "g_tTex1di4a" + Name 147 "g_tTex1du4a" + Name 150 "g_tTex2df4a" + Name 153 "g_tTex2di4a" + Name 156 "g_tTex2du4a" + Name 159 "g_tTexcdf4a" + Name 162 "g_tTexcdi4a" + Name 165 "g_tTexcdu4a" Decorate 9(g_tTex1df4) DescriptorSet 0 Decorate 9(g_tTex1df4) Binding 0 - Decorate 27(g_tTex1di4) DescriptorSet 0 - Decorate 37(g_tTex1du4) DescriptorSet 0 - Decorate 47(g_tTex2df4) DescriptorSet 0 - Decorate 60(g_tTex2di4) DescriptorSet 0 - Decorate 69(g_tTex2du4) DescriptorSet 0 - Decorate 78(g_tTex3df4) DescriptorSet 0 - Decorate 90(g_tTex3di4) DescriptorSet 0 - Decorate 99(g_tTex3du4) DescriptorSet 0 - Decorate 115(Pos) BuiltIn Position - Decorate 121(g_sSamp) DescriptorSet 0 - Decorate 121(g_sSamp) Binding 0 - Decorate 124(g_tTexcdf4) DescriptorSet 0 - Decorate 127(g_tTexcdi4) DescriptorSet 0 - Decorate 130(g_tTexcdu4) DescriptorSet 0 - Decorate 133(g_tTex1df4a) DescriptorSet 0 - Decorate 136(g_tTex1di4a) DescriptorSet 0 - Decorate 139(g_tTex1du4a) DescriptorSet 0 - Decorate 142(g_tTex2df4a) DescriptorSet 0 - Decorate 145(g_tTex2di4a) DescriptorSet 0 - Decorate 148(g_tTex2du4a) DescriptorSet 0 - Decorate 151(g_tTexcdf4a) DescriptorSet 0 - Decorate 154(g_tTexcdi4a) DescriptorSet 0 - Decorate 157(g_tTexcdu4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 40(g_tTex1du4) DescriptorSet 0 + Decorate 50(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex2di4) DescriptorSet 0 + Decorate 73(g_tTex2du4) DescriptorSet 0 + Decorate 83(g_tTex3df4) DescriptorSet 0 + Decorate 96(g_tTex3di4) DescriptorSet 0 + Decorate 106(g_tTex3du4) DescriptorSet 0 + Decorate 123(Pos) BuiltIn Position + Decorate 129(g_sSamp) DescriptorSet 0 + Decorate 129(g_sSamp) Binding 0 + Decorate 132(g_tTexcdf4) DescriptorSet 0 + Decorate 135(g_tTexcdi4) DescriptorSet 0 + Decorate 138(g_tTexcdu4) DescriptorSet 0 + Decorate 141(g_tTex1df4a) DescriptorSet 0 + Decorate 144(g_tTex1di4a) DescriptorSet 0 + Decorate 147(g_tTex1du4a) DescriptorSet 0 + Decorate 150(g_tTex2df4a) DescriptorSet 0 + Decorate 153(g_tTex2di4a) DescriptorSet 0 + Decorate 156(g_tTex2du4a) DescriptorSet 0 + Decorate 159(g_tTexcdf4a) DescriptorSet 0 + Decorate 162(g_tTexcdi4a) DescriptorSet 0 + Decorate 165(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -429,159 +535,162 @@ Shader version: 450 9(g_tTex1df4): 8(ptr) Variable UniformConstant 11: TypeInt 32 1 12: TypeVector 11(int) 2 - 13: TypePointer UniformConstant 12(ivec2) - 14(c2): 13(ptr) Variable UniformConstant - 15: TypeInt 32 0 - 16: 15(int) Constant 0 - 17: TypePointer UniformConstant 11(int) - 20: 15(int) Constant 1 - 23: TypeVector 6(float) 4 - 25: TypeImage 11(int) 1D sampled format:Unknown - 26: TypePointer UniformConstant 25 - 27(g_tTex1di4): 26(ptr) Variable UniformConstant - 33: TypeVector 11(int) 4 - 35: TypeImage 15(int) 1D sampled format:Unknown - 36: TypePointer UniformConstant 35 - 37(g_tTex1du4): 36(ptr) Variable UniformConstant - 43: TypeVector 15(int) 4 - 45: TypeImage 6(float) 2D sampled format:Unknown - 46: TypePointer UniformConstant 45 - 47(g_tTex2df4): 46(ptr) Variable UniformConstant - 49: TypeVector 11(int) 3 - 50: TypePointer UniformConstant 49(ivec3) - 51(c3): 50(ptr) Variable UniformConstant - 54: 15(int) Constant 2 - 58: TypeImage 11(int) 2D sampled format:Unknown - 59: TypePointer UniformConstant 58 - 60(g_tTex2di4): 59(ptr) Variable UniformConstant - 67: TypeImage 15(int) 2D sampled format:Unknown - 68: TypePointer UniformConstant 67 - 69(g_tTex2du4): 68(ptr) Variable UniformConstant - 76: TypeImage 6(float) 3D sampled format:Unknown - 77: TypePointer UniformConstant 76 - 78(g_tTex3df4): 77(ptr) Variable UniformConstant - 80: TypePointer UniformConstant 33(ivec4) - 81(c4): 80(ptr) Variable UniformConstant - 84: 15(int) Constant 3 - 88: TypeImage 11(int) 3D sampled format:Unknown - 89: TypePointer UniformConstant 88 - 90(g_tTex3di4): 89(ptr) Variable UniformConstant - 97: TypeImage 15(int) 3D sampled format:Unknown - 98: TypePointer UniformConstant 97 - 99(g_tTex3du4): 98(ptr) Variable UniformConstant - 106(VS_OUTPUT): TypeStruct 23(fvec4) - 107: TypePointer Function 106(VS_OUTPUT) - 109: 11(int) Constant 0 - 110: 6(float) Constant 0 - 111: 23(fvec4) ConstantComposite 110 110 110 110 - 112: TypePointer Function 23(fvec4) - 114: TypePointer Output 23(fvec4) - 115(Pos): 114(ptr) Variable Output - 119: TypeSampler - 120: TypePointer UniformConstant 119 - 121(g_sSamp): 120(ptr) Variable UniformConstant - 122: TypeImage 6(float) Cube sampled format:Unknown - 123: TypePointer UniformConstant 122 - 124(g_tTexcdf4): 123(ptr) Variable UniformConstant - 125: TypeImage 11(int) Cube sampled format:Unknown - 126: TypePointer UniformConstant 125 - 127(g_tTexcdi4): 126(ptr) Variable UniformConstant - 128: TypeImage 15(int) Cube sampled format:Unknown - 129: TypePointer UniformConstant 128 - 130(g_tTexcdu4): 129(ptr) Variable UniformConstant - 131: TypeImage 6(float) 1D array sampled format:Unknown - 132: TypePointer UniformConstant 131 -133(g_tTex1df4a): 132(ptr) Variable UniformConstant - 134: TypeImage 11(int) 1D array sampled format:Unknown - 135: TypePointer UniformConstant 134 -136(g_tTex1di4a): 135(ptr) Variable UniformConstant - 137: TypeImage 15(int) 1D array sampled format:Unknown - 138: TypePointer UniformConstant 137 -139(g_tTex1du4a): 138(ptr) Variable UniformConstant - 140: TypeImage 6(float) 2D array sampled format:Unknown - 141: TypePointer UniformConstant 140 -142(g_tTex2df4a): 141(ptr) Variable UniformConstant - 143: TypeImage 11(int) 2D array sampled format:Unknown - 144: TypePointer UniformConstant 143 -145(g_tTex2di4a): 144(ptr) Variable UniformConstant - 146: TypeImage 15(int) 2D array sampled format:Unknown - 147: TypePointer UniformConstant 146 -148(g_tTex2du4a): 147(ptr) Variable UniformConstant - 149: TypeImage 6(float) Cube array sampled format:Unknown - 150: TypePointer UniformConstant 149 -151(g_tTexcdf4a): 150(ptr) Variable UniformConstant - 152: TypeImage 11(int) Cube array sampled format:Unknown - 153: TypePointer UniformConstant 152 -154(g_tTexcdi4a): 153(ptr) Variable UniformConstant - 155: TypeImage 15(int) Cube array sampled format:Unknown - 156: TypePointer UniformConstant 155 -157(g_tTexcdu4a): 156(ptr) Variable UniformConstant - 158(c1): 17(ptr) Variable UniformConstant - 159(o1): 17(ptr) Variable UniformConstant - 160(o2): 13(ptr) Variable UniformConstant - 161(o3): 50(ptr) Variable UniformConstant - 162(o4): 80(ptr) Variable UniformConstant + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypeInt 32 0 + 20: 19(int) Constant 0 + 21: TypePointer Uniform 11(int) + 24: 19(int) Constant 1 + 27: TypeVector 6(float) 4 + 29: TypeImage 11(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 38: TypeImage 19(int) 1D sampled format:Unknown + 39: TypePointer UniformConstant 38 + 40(g_tTex1du4): 39(ptr) Variable UniformConstant + 46: TypeVector 19(int) 4 + 48: TypeImage 6(float) 2D sampled format:Unknown + 49: TypePointer UniformConstant 48 + 50(g_tTex2df4): 49(ptr) Variable UniformConstant + 52: 11(int) Constant 2 + 53: TypePointer Uniform 13(ivec3) + 57: 19(int) Constant 2 + 61: TypeImage 11(int) 2D sampled format:Unknown + 62: TypePointer UniformConstant 61 + 63(g_tTex2di4): 62(ptr) Variable UniformConstant + 71: TypeImage 19(int) 2D sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2du4): 72(ptr) Variable UniformConstant + 81: TypeImage 6(float) 3D sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex3df4): 82(ptr) Variable UniformConstant + 85: 11(int) Constant 3 + 86: TypePointer Uniform 14(ivec4) + 90: 19(int) Constant 3 + 94: TypeImage 11(int) 3D sampled format:Unknown + 95: TypePointer UniformConstant 94 + 96(g_tTex3di4): 95(ptr) Variable UniformConstant + 104: TypeImage 19(int) 3D sampled format:Unknown + 105: TypePointer UniformConstant 104 + 106(g_tTex3du4): 105(ptr) Variable UniformConstant + 114(VS_OUTPUT): TypeStruct 27(fvec4) + 115: TypePointer Function 114(VS_OUTPUT) + 117: 11(int) Constant 0 + 118: 6(float) Constant 0 + 119: 27(fvec4) ConstantComposite 118 118 118 118 + 120: TypePointer Function 27(fvec4) + 122: TypePointer Output 27(fvec4) + 123(Pos): 122(ptr) Variable Output + 127: TypeSampler + 128: TypePointer UniformConstant 127 + 129(g_sSamp): 128(ptr) Variable UniformConstant + 130: TypeImage 6(float) Cube sampled format:Unknown + 131: TypePointer UniformConstant 130 + 132(g_tTexcdf4): 131(ptr) Variable UniformConstant + 133: TypeImage 11(int) Cube sampled format:Unknown + 134: TypePointer UniformConstant 133 + 135(g_tTexcdi4): 134(ptr) Variable UniformConstant + 136: TypeImage 19(int) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdu4): 137(ptr) Variable UniformConstant + 139: TypeImage 6(float) 1D array sampled format:Unknown + 140: TypePointer UniformConstant 139 +141(g_tTex1df4a): 140(ptr) Variable UniformConstant + 142: TypeImage 11(int) 1D array sampled format:Unknown + 143: TypePointer UniformConstant 142 +144(g_tTex1di4a): 143(ptr) Variable UniformConstant + 145: TypeImage 19(int) 1D array sampled format:Unknown + 146: TypePointer UniformConstant 145 +147(g_tTex1du4a): 146(ptr) Variable UniformConstant + 148: TypeImage 6(float) 2D array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTex2df4a): 149(ptr) Variable UniformConstant + 151: TypeImage 11(int) 2D array sampled format:Unknown + 152: TypePointer UniformConstant 151 +153(g_tTex2di4a): 152(ptr) Variable UniformConstant + 154: TypeImage 19(int) 2D array sampled format:Unknown + 155: TypePointer UniformConstant 154 +156(g_tTex2du4a): 155(ptr) Variable UniformConstant + 157: TypeImage 6(float) Cube array sampled format:Unknown + 158: TypePointer UniformConstant 157 +159(g_tTexcdf4a): 158(ptr) Variable UniformConstant + 160: TypeImage 11(int) Cube array sampled format:Unknown + 161: TypePointer UniformConstant 160 +162(g_tTexcdi4a): 161(ptr) Variable UniformConstant + 163: TypeImage 19(int) Cube array sampled format:Unknown + 164: TypePointer UniformConstant 163 +165(g_tTexcdu4a): 164(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 108(vsout): 107(ptr) Variable Function + 116(vsout): 115(ptr) Variable Function 10: 7 Load 9(g_tTex1df4) - 18: 17(ptr) AccessChain 14(c2) 16 - 19: 11(int) Load 18 - 21: 17(ptr) AccessChain 14(c2) 20 - 22: 11(int) Load 21 - 24: 23(fvec4) ImageFetch 10 19 Lod 22 - 28: 25 Load 27(g_tTex1di4) - 29: 17(ptr) AccessChain 14(c2) 16 - 30: 11(int) Load 29 - 31: 17(ptr) AccessChain 14(c2) 20 - 32: 11(int) Load 31 - 34: 33(ivec4) ImageFetch 28 30 Lod 32 - 38: 35 Load 37(g_tTex1du4) - 39: 17(ptr) AccessChain 14(c2) 16 - 40: 11(int) Load 39 - 41: 17(ptr) AccessChain 14(c2) 20 - 42: 11(int) Load 41 - 44: 43(ivec4) ImageFetch 38 40 Lod 42 - 48: 45 Load 47(g_tTex2df4) - 52: 49(ivec3) Load 51(c3) - 53: 12(ivec2) VectorShuffle 52 52 0 1 - 55: 17(ptr) AccessChain 51(c3) 54 - 56: 11(int) Load 55 - 57: 23(fvec4) ImageFetch 48 53 Lod 56 - 61: 58 Load 60(g_tTex2di4) - 62: 49(ivec3) Load 51(c3) - 63: 12(ivec2) VectorShuffle 62 62 0 1 - 64: 17(ptr) AccessChain 51(c3) 54 - 65: 11(int) Load 64 - 66: 33(ivec4) ImageFetch 61 63 Lod 65 - 70: 67 Load 69(g_tTex2du4) - 71: 49(ivec3) Load 51(c3) - 72: 12(ivec2) VectorShuffle 71 71 0 1 - 73: 17(ptr) AccessChain 51(c3) 54 - 74: 11(int) Load 73 - 75: 43(ivec4) ImageFetch 70 72 Lod 74 - 79: 76 Load 78(g_tTex3df4) - 82: 33(ivec4) Load 81(c4) - 83: 49(ivec3) VectorShuffle 82 82 0 1 2 - 85: 17(ptr) AccessChain 81(c4) 84 - 86: 11(int) Load 85 - 87: 23(fvec4) ImageFetch 79 83 Lod 86 - 91: 88 Load 90(g_tTex3di4) - 92: 33(ivec4) Load 81(c4) - 93: 49(ivec3) VectorShuffle 92 92 0 1 2 - 94: 17(ptr) AccessChain 81(c4) 84 - 95: 11(int) Load 94 - 96: 33(ivec4) ImageFetch 91 93 Lod 95 - 100: 97 Load 99(g_tTex3du4) - 101: 33(ivec4) Load 81(c4) - 102: 49(ivec3) VectorShuffle 101 101 0 1 2 - 103: 17(ptr) AccessChain 81(c4) 84 - 104: 11(int) Load 103 - 105: 43(ivec4) ImageFetch 100 102 Lod 104 - 113: 112(ptr) AccessChain 108(vsout) 109 - Store 113 111 - 116: 112(ptr) AccessChain 108(vsout) 109 - 117: 23(fvec4) Load 116 - Store 115(Pos) 117 + 22: 21(ptr) AccessChain 17 18 20 + 23: 11(int) Load 22 + 25: 21(ptr) AccessChain 17 18 24 + 26: 11(int) Load 25 + 28: 27(fvec4) ImageFetch 10 23 Lod 26 + 32: 29 Load 31(g_tTex1di4) + 33: 21(ptr) AccessChain 17 18 20 + 34: 11(int) Load 33 + 35: 21(ptr) AccessChain 17 18 24 + 36: 11(int) Load 35 + 37: 14(ivec4) ImageFetch 32 34 Lod 36 + 41: 38 Load 40(g_tTex1du4) + 42: 21(ptr) AccessChain 17 18 20 + 43: 11(int) Load 42 + 44: 21(ptr) AccessChain 17 18 24 + 45: 11(int) Load 44 + 47: 46(ivec4) ImageFetch 41 43 Lod 45 + 51: 48 Load 50(g_tTex2df4) + 54: 53(ptr) AccessChain 17 52 + 55: 13(ivec3) Load 54 + 56: 12(ivec2) VectorShuffle 55 55 0 1 + 58: 21(ptr) AccessChain 17 52 57 + 59: 11(int) Load 58 + 60: 27(fvec4) ImageFetch 51 56 Lod 59 + 64: 61 Load 63(g_tTex2di4) + 65: 53(ptr) AccessChain 17 52 + 66: 13(ivec3) Load 65 + 67: 12(ivec2) VectorShuffle 66 66 0 1 + 68: 21(ptr) AccessChain 17 52 57 + 69: 11(int) Load 68 + 70: 14(ivec4) ImageFetch 64 67 Lod 69 + 74: 71 Load 73(g_tTex2du4) + 75: 53(ptr) AccessChain 17 52 + 76: 13(ivec3) Load 75 + 77: 12(ivec2) VectorShuffle 76 76 0 1 + 78: 21(ptr) AccessChain 17 52 57 + 79: 11(int) Load 78 + 80: 46(ivec4) ImageFetch 74 77 Lod 79 + 84: 81 Load 83(g_tTex3df4) + 87: 86(ptr) AccessChain 17 85 + 88: 14(ivec4) Load 87 + 89: 13(ivec3) VectorShuffle 88 88 0 1 2 + 91: 21(ptr) AccessChain 17 85 90 + 92: 11(int) Load 91 + 93: 27(fvec4) ImageFetch 84 89 Lod 92 + 97: 94 Load 96(g_tTex3di4) + 98: 86(ptr) AccessChain 17 85 + 99: 14(ivec4) Load 98 + 100: 13(ivec3) VectorShuffle 99 99 0 1 2 + 101: 21(ptr) AccessChain 17 85 90 + 102: 11(int) Load 101 + 103: 14(ivec4) ImageFetch 97 100 Lod 102 + 107: 104 Load 106(g_tTex3du4) + 108: 86(ptr) AccessChain 17 85 + 109: 14(ivec4) Load 108 + 110: 13(ivec3) VectorShuffle 109 109 0 1 2 + 111: 21(ptr) AccessChain 17 85 90 + 112: 11(int) Load 111 + 113: 46(ivec4) ImageFetch 107 110 Lod 112 + 121: 120(ptr) AccessChain 116(vsout) 117 + Store 121 119 + 124: 120(ptr) AccessChain 116(vsout) 117 + 125: 27(fvec4) Load 124 + Store 123(Pos) 125 Return FunctionEnd diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index 012af868..ea1b5df3 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.load.buffer.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence @@ -10,19 +10,28 @@ gl_FragCoord origin is upper left 0:28 'r00' (temp 4-component vector of float) 0:28 textureFetch (global 4-component vector of float) 0:28 'g_tTexbf4' (uniform samplerBuffer) -0:28 'c1' (uniform int) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of int) 0:29 'r01' (temp 4-component vector of int) 0:29 textureFetch (global 4-component vector of int) 0:29 'g_tTexbi4' (uniform isamplerBuffer) -0:29 'c1' (uniform int) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of uint) 0:30 'r02' (temp 4-component vector of uint) 0:30 textureFetch (global 4-component vector of uint) 0:30 'g_tTexbu4' (uniform usamplerBuffer) -0:30 'c1' (uniform int) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) 0:34 move second child to first child (temp 4-component vector of float) 0:34 Color: direct index for structure (temp 4-component vector of float) 0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -60,16 +69,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexbf4' (uniform samplerBuffer) 0:? 'g_tTexbi4' (uniform isamplerBuffer) 0:? 'g_tTexbu4' (uniform usamplerBuffer) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -78,7 +80,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:28 Sequence @@ -86,19 +88,28 @@ gl_FragCoord origin is upper left 0:28 'r00' (temp 4-component vector of float) 0:28 textureFetch (global 4-component vector of float) 0:28 'g_tTexbf4' (uniform samplerBuffer) -0:28 'c1' (uniform int) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of int) 0:29 'r01' (temp 4-component vector of int) 0:29 textureFetch (global 4-component vector of int) 0:29 'g_tTexbi4' (uniform isamplerBuffer) -0:29 'c1' (uniform int) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of uint) 0:30 'r02' (temp 4-component vector of uint) 0:30 textureFetch (global 4-component vector of uint) 0:30 'g_tTexbu4' (uniform usamplerBuffer) -0:30 'c1' (uniform int) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) 0:34 move second child to first child (temp 4-component vector of float) 0:34 Color: direct index for structure (temp 4-component vector of float) 0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -136,56 +147,61 @@ gl_FragCoord origin is upper left 0:? 'g_tTexbf4' (uniform samplerBuffer) 0:? 'g_tTexbi4' (uniform isamplerBuffer) 0:? 'g_tTexbu4' (uniform usamplerBuffer) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 76 +// Id's are bound by 71 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 55 59 + EntryPoint Fragment 4 "main" 62 66 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "r00" Name 13 "g_tTexbf4" - Name 17 "c1" - Name 23 "r01" - Name 27 "g_tTexbi4" - Name 35 "r02" - Name 39 "g_tTexbu4" - Name 44 "PS_OUTPUT" - MemberName 44(PS_OUTPUT) 0 "Color" - MemberName 44(PS_OUTPUT) 1 "Depth" - Name 46 "psout" - Name 55 "Color" - Name 59 "Depth" - Name 63 "g_tTexbf4_test" - Name 66 "c2" - Name 69 "c3" - Name 71 "c4" - Name 72 "o1" - Name 73 "o2" - Name 74 "o3" - Name 75 "o4" + Name 19 "$Global" + MemberName 19($Global) 0 "c1" + MemberName 19($Global) 1 "c2" + MemberName 19($Global) 2 "c3" + MemberName 19($Global) 3 "c4" + MemberName 19($Global) 4 "o1" + MemberName 19($Global) 5 "o2" + MemberName 19($Global) 6 "o3" + MemberName 19($Global) 7 "o4" + Name 21 "" + Name 29 "r01" + Name 33 "g_tTexbi4" + Name 42 "r02" + Name 46 "g_tTexbu4" + Name 52 "PS_OUTPUT" + MemberName 52(PS_OUTPUT) 0 "Color" + MemberName 52(PS_OUTPUT) 1 "Depth" + Name 54 "psout" + Name 62 "Color" + Name 66 "Depth" + Name 70 "g_tTexbf4_test" Decorate 13(g_tTexbf4) DescriptorSet 0 - Decorate 27(g_tTexbi4) DescriptorSet 0 - Decorate 39(g_tTexbu4) DescriptorSet 0 - Decorate 55(Color) Location 0 - Decorate 59(Depth) BuiltIn FragDepth - Decorate 63(g_tTexbf4_test) DescriptorSet 0 - Decorate 63(g_tTexbf4_test) Binding 0 + MemberDecorate 19($Global) 0 Offset 0 + MemberDecorate 19($Global) 1 Offset 8 + MemberDecorate 19($Global) 2 Offset 16 + MemberDecorate 19($Global) 3 Offset 32 + MemberDecorate 19($Global) 4 Offset 48 + MemberDecorate 19($Global) 5 Offset 56 + MemberDecorate 19($Global) 6 Offset 64 + MemberDecorate 19($Global) 7 Offset 80 + Decorate 19($Global) Block + Decorate 21 DescriptorSet 0 + Decorate 33(g_tTexbi4) DescriptorSet 0 + Decorate 46(g_tTexbu4) DescriptorSet 0 + Decorate 62(Color) Location 0 + Decorate 66(Depth) BuiltIn FragDepth + Decorate 70(g_tTexbf4_test) DescriptorSet 0 + Decorate 70(g_tTexbf4_test) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -196,75 +212,70 @@ gl_FragCoord origin is upper left 12: TypePointer UniformConstant 11 13(g_tTexbf4): 12(ptr) Variable UniformConstant 15: TypeInt 32 1 - 16: TypePointer UniformConstant 15(int) - 17(c1): 16(ptr) Variable UniformConstant - 21: TypeVector 15(int) 4 - 22: TypePointer Function 21(ivec4) - 24: TypeImage 15(int) Buffer sampled format:Unknown - 25: TypeSampledImage 24 - 26: TypePointer UniformConstant 25 - 27(g_tTexbi4): 26(ptr) Variable UniformConstant - 32: TypeInt 32 0 - 33: TypeVector 32(int) 4 - 34: TypePointer Function 33(ivec4) - 36: TypeImage 32(int) Buffer sampled format:Unknown - 37: TypeSampledImage 36 - 38: TypePointer UniformConstant 37 - 39(g_tTexbu4): 38(ptr) Variable UniformConstant - 44(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) - 45: TypePointer Function 44(PS_OUTPUT) - 47: 15(int) Constant 0 - 48: 6(float) Constant 1065353216 - 49: 7(fvec4) ConstantComposite 48 48 48 48 - 51: 15(int) Constant 1 - 52: TypePointer Function 6(float) - 54: TypePointer Output 7(fvec4) - 55(Color): 54(ptr) Variable Output - 58: TypePointer Output 6(float) - 59(Depth): 58(ptr) Variable Output -63(g_tTexbf4_test): 12(ptr) Variable UniformConstant - 64: TypeVector 15(int) 2 - 65: TypePointer UniformConstant 64(ivec2) - 66(c2): 65(ptr) Variable UniformConstant - 67: TypeVector 15(int) 3 - 68: TypePointer UniformConstant 67(ivec3) - 69(c3): 68(ptr) Variable UniformConstant - 70: TypePointer UniformConstant 21(ivec4) - 71(c4): 70(ptr) Variable UniformConstant - 72(o1): 16(ptr) Variable UniformConstant - 73(o2): 65(ptr) Variable UniformConstant - 74(o3): 68(ptr) Variable UniformConstant - 75(o4): 70(ptr) Variable UniformConstant + 16: TypeVector 15(int) 2 + 17: TypeVector 15(int) 3 + 18: TypeVector 15(int) 4 + 19($Global): TypeStruct 15(int) 16(ivec2) 17(ivec3) 18(ivec4) 15(int) 16(ivec2) 17(ivec3) 18(ivec4) + 20: TypePointer Uniform 19($Global) + 21: 20(ptr) Variable Uniform + 22: 15(int) Constant 0 + 23: TypePointer Uniform 15(int) + 28: TypePointer Function 18(ivec4) + 30: TypeImage 15(int) Buffer sampled format:Unknown + 31: TypeSampledImage 30 + 32: TypePointer UniformConstant 31 + 33(g_tTexbi4): 32(ptr) Variable UniformConstant + 39: TypeInt 32 0 + 40: TypeVector 39(int) 4 + 41: TypePointer Function 40(ivec4) + 43: TypeImage 39(int) Buffer sampled format:Unknown + 44: TypeSampledImage 43 + 45: TypePointer UniformConstant 44 + 46(g_tTexbu4): 45(ptr) Variable UniformConstant + 52(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 53: TypePointer Function 52(PS_OUTPUT) + 55: 6(float) Constant 1065353216 + 56: 7(fvec4) ConstantComposite 55 55 55 55 + 58: 15(int) Constant 1 + 59: TypePointer Function 6(float) + 61: TypePointer Output 7(fvec4) + 62(Color): 61(ptr) Variable Output + 65: TypePointer Output 6(float) + 66(Depth): 65(ptr) Variable Output +70(g_tTexbf4_test): 12(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(r00): 8(ptr) Variable Function - 23(r01): 22(ptr) Variable Function - 35(r02): 34(ptr) Variable Function - 46(psout): 45(ptr) Variable Function + 29(r01): 28(ptr) Variable Function + 42(r02): 41(ptr) Variable Function + 54(psout): 53(ptr) Variable Function 14: 11 Load 13(g_tTexbf4) - 18: 15(int) Load 17(c1) - 19: 10 Image 14 - 20: 7(fvec4) ImageFetch 19 18 - Store 9(r00) 20 - 28: 25 Load 27(g_tTexbi4) - 29: 15(int) Load 17(c1) - 30: 24 Image 28 - 31: 21(ivec4) ImageFetch 30 29 - Store 23(r01) 31 - 40: 37 Load 39(g_tTexbu4) - 41: 15(int) Load 17(c1) - 42: 36 Image 40 - 43: 33(ivec4) ImageFetch 42 41 - Store 35(r02) 43 - 50: 8(ptr) AccessChain 46(psout) 47 - Store 50 49 - 53: 52(ptr) AccessChain 46(psout) 51 - Store 53 48 - 56: 8(ptr) AccessChain 46(psout) 47 - 57: 7(fvec4) Load 56 - Store 55(Color) 57 - 60: 52(ptr) AccessChain 46(psout) 51 - 61: 6(float) Load 60 - Store 59(Depth) 61 + 24: 23(ptr) AccessChain 21 22 + 25: 15(int) Load 24 + 26: 10 Image 14 + 27: 7(fvec4) ImageFetch 26 25 + Store 9(r00) 27 + 34: 31 Load 33(g_tTexbi4) + 35: 23(ptr) AccessChain 21 22 + 36: 15(int) Load 35 + 37: 30 Image 34 + 38: 18(ivec4) ImageFetch 37 36 + Store 29(r01) 38 + 47: 44 Load 46(g_tTexbu4) + 48: 23(ptr) AccessChain 21 22 + 49: 15(int) Load 48 + 50: 43 Image 47 + 51: 40(ivec4) ImageFetch 50 49 + Store 42(r02) 51 + 57: 8(ptr) AccessChain 54(psout) 22 + Store 57 56 + 60: 59(ptr) AccessChain 54(psout) 58 + Store 60 55 + 63: 8(ptr) AccessChain 54(psout) 22 + 64: 7(fvec4) Load 63 + Store 62(Color) 64 + 67: 59(ptr) AccessChain 54(psout) 58 + 68: 6(float) Load 67 + Store 66(Depth) 68 Return FunctionEnd diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index 2110e6f4..8d711296 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -2,91 +2,148 @@ hlsl.load.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetchOffset (global 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) -0:52 'o1' (uniform int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) 0:53 textureFetchOffset (global 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) -0:53 'o1' (uniform int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) 0:54 textureFetchOffset (global 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 direct index (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) -0:54 'o1' (uniform int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) 0:57 textureFetchOffset (global 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index (temp int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) -0:57 'o2' (uniform 2-component vector of int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) 0:58 textureFetchOffset (global 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index (temp int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) -0:58 'o2' (uniform 2-component vector of int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) 0:59 textureFetchOffset (global 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index (temp int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) -0:59 'o2' (uniform 2-component vector of int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) 0:62 textureFetchOffset (global 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) @@ -95,14 +152,23 @@ gl_FragCoord origin is upper left 0:62 Constant: 0:62 2 (const int) 0:62 direct index (temp int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) -0:62 'o3' (uniform 3-component vector of int) +0:62 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 6 (const uint) 0:63 textureFetchOffset (global 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) @@ -111,14 +177,23 @@ gl_FragCoord origin is upper left 0:63 Constant: 0:63 2 (const int) 0:63 direct index (temp int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) -0:63 'o3' (uniform 3-component vector of int) +0:63 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 6 (const uint) 0:64 textureFetchOffset (global 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) @@ -127,10 +202,16 @@ gl_FragCoord origin is upper left 0:64 Constant: 0:64 2 (const int) 0:64 direct index (temp int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) -0:64 'o3' (uniform 3-component vector of int) +0:64 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 6 (const uint) 0:72 move second child to first child (temp 4-component vector of float) 0:72 Color: direct index for structure (temp 4-component vector of float) 0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -186,16 +267,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -204,91 +278,148 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetchOffset (global 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 direct index (temp int) -0:52 'c2' (uniform 2-component vector of int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) -0:52 'o1' (uniform int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) 0:53 textureFetchOffset (global 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 direct index (temp int) -0:53 'c2' (uniform 2-component vector of int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) -0:53 'o1' (uniform int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) 0:54 textureFetchOffset (global 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 direct index (temp int) -0:54 'c2' (uniform 2-component vector of int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) -0:54 'o1' (uniform int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) 0:57 textureFetchOffset (global 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) 0:57 Constant: 0:57 1 (const int) 0:57 direct index (temp int) -0:57 'c3' (uniform 3-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) -0:57 'o2' (uniform 2-component vector of int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) 0:58 textureFetchOffset (global 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) 0:58 Constant: 0:58 1 (const int) 0:58 direct index (temp int) -0:58 'c3' (uniform 3-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) -0:58 'o2' (uniform 2-component vector of int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) 0:59 textureFetchOffset (global 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) 0:59 Constant: 0:59 1 (const int) 0:59 direct index (temp int) -0:59 'c3' (uniform 3-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) -0:59 'o2' (uniform 2-component vector of int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) 0:62 textureFetchOffset (global 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Sequence 0:62 Constant: 0:62 0 (const int) @@ -297,14 +428,23 @@ gl_FragCoord origin is upper left 0:62 Constant: 0:62 2 (const int) 0:62 direct index (temp int) -0:62 'c4' (uniform 4-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) -0:62 'o3' (uniform 3-component vector of int) +0:62 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 6 (const uint) 0:63 textureFetchOffset (global 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Sequence 0:63 Constant: 0:63 0 (const int) @@ -313,14 +453,23 @@ gl_FragCoord origin is upper left 0:63 Constant: 0:63 2 (const int) 0:63 direct index (temp int) -0:63 'c4' (uniform 4-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) -0:63 'o3' (uniform 3-component vector of int) +0:63 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 6 (const uint) 0:64 textureFetchOffset (global 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Sequence 0:64 Constant: 0:64 0 (const int) @@ -329,10 +478,16 @@ gl_FragCoord origin is upper left 0:64 Constant: 0:64 2 (const int) 0:64 direct index (temp int) -0:64 'c4' (uniform 4-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) 0:64 Constant: 0:64 3 (const int) -0:64 'o3' (uniform 3-component vector of int) +0:64 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 6 (const uint) 0:72 move second child to first child (temp 4-component vector of float) 0:72 Color: direct index for structure (temp 4-component vector of float) 0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -388,20 +543,13 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 179 +// Id's are bound by 194 Capability Shader Capability ImageGatherExtended @@ -409,71 +557,83 @@ gl_FragCoord origin is upper left Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 130 134 + EntryPoint Fragment 4 "main" 147 151 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "g_tTex1df4" - Name 14 "c2" - Name 23 "o1" - Name 29 "g_tTex1di4" - Name 40 "g_tTex1du4" - Name 51 "g_tTex2df4" - Name 55 "c3" - Name 61 "o2" - Name 66 "g_tTex2di4" - Name 76 "g_tTex2du4" - Name 86 "g_tTex3df4" - Name 89 "c4" - Name 95 "o3" - Name 100 "g_tTex3di4" - Name 110 "g_tTex3du4" - Name 118 "PS_OUTPUT" - MemberName 118(PS_OUTPUT) 0 "Color" - MemberName 118(PS_OUTPUT) 1 "Depth" - Name 120 "psout" - Name 130 "Color" - Name 134 "Depth" - Name 140 "g_sSamp" - Name 143 "g_tTexcdf4" - Name 146 "g_tTexcdi4" - Name 149 "g_tTexcdu4" - Name 152 "g_tTex1df4a" - Name 155 "g_tTex1di4a" - Name 158 "g_tTex1du4a" - Name 161 "g_tTex2df4a" - Name 164 "g_tTex2di4a" - Name 167 "g_tTex2du4a" - Name 170 "g_tTexcdf4a" - Name 173 "g_tTexcdi4a" - Name 176 "g_tTexcdu4a" - Name 177 "c1" - Name 178 "o4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 34 "g_tTex1di4" + Name 45 "g_tTex1du4" + Name 57 "g_tTex2df4" + Name 74 "g_tTex2di4" + Name 86 "g_tTex2du4" + Name 98 "g_tTex3df4" + Name 114 "g_tTex3di4" + Name 126 "g_tTex3du4" + Name 136 "PS_OUTPUT" + MemberName 136(PS_OUTPUT) 0 "Color" + MemberName 136(PS_OUTPUT) 1 "Depth" + Name 138 "psout" + Name 147 "Color" + Name 151 "Depth" + Name 157 "g_sSamp" + Name 160 "g_tTexcdf4" + Name 163 "g_tTexcdi4" + Name 166 "g_tTexcdu4" + Name 169 "g_tTex1df4a" + Name 172 "g_tTex1di4a" + Name 175 "g_tTex1du4a" + Name 178 "g_tTex2df4a" + Name 181 "g_tTex2di4a" + Name 184 "g_tTex2du4a" + Name 187 "g_tTexcdf4a" + Name 190 "g_tTexcdi4a" + Name 193 "g_tTexcdu4a" Decorate 9(g_tTex1df4) DescriptorSet 0 Decorate 9(g_tTex1df4) Binding 0 - Decorate 29(g_tTex1di4) DescriptorSet 0 - Decorate 40(g_tTex1du4) DescriptorSet 0 - Decorate 51(g_tTex2df4) DescriptorSet 0 - Decorate 66(g_tTex2di4) DescriptorSet 0 - Decorate 76(g_tTex2du4) DescriptorSet 0 - Decorate 86(g_tTex3df4) DescriptorSet 0 - Decorate 100(g_tTex3di4) DescriptorSet 0 - Decorate 110(g_tTex3du4) DescriptorSet 0 - Decorate 130(Color) Location 0 - Decorate 134(Depth) BuiltIn FragDepth - Decorate 140(g_sSamp) DescriptorSet 0 - Decorate 140(g_sSamp) Binding 0 - Decorate 143(g_tTexcdf4) DescriptorSet 0 - Decorate 146(g_tTexcdi4) DescriptorSet 0 - Decorate 149(g_tTexcdu4) DescriptorSet 0 - Decorate 152(g_tTex1df4a) DescriptorSet 0 - Decorate 155(g_tTex1di4a) DescriptorSet 0 - Decorate 158(g_tTex1du4a) DescriptorSet 0 - Decorate 161(g_tTex2df4a) DescriptorSet 0 - Decorate 164(g_tTex2di4a) DescriptorSet 0 - Decorate 167(g_tTex2du4a) DescriptorSet 0 - Decorate 170(g_tTexcdf4a) DescriptorSet 0 - Decorate 173(g_tTexcdi4a) DescriptorSet 0 - Decorate 176(g_tTexcdu4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 45(g_tTex1du4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 74(g_tTex2di4) DescriptorSet 0 + Decorate 86(g_tTex2du4) DescriptorSet 0 + Decorate 98(g_tTex3df4) DescriptorSet 0 + Decorate 114(g_tTex3di4) DescriptorSet 0 + Decorate 126(g_tTex3du4) DescriptorSet 0 + Decorate 147(Color) Location 0 + Decorate 151(Depth) BuiltIn FragDepth + Decorate 157(g_sSamp) DescriptorSet 0 + Decorate 157(g_sSamp) Binding 0 + Decorate 160(g_tTexcdf4) DescriptorSet 0 + Decorate 163(g_tTexcdi4) DescriptorSet 0 + Decorate 166(g_tTexcdu4) DescriptorSet 0 + Decorate 169(g_tTex1df4a) DescriptorSet 0 + Decorate 172(g_tTex1di4a) DescriptorSet 0 + Decorate 175(g_tTex1du4a) DescriptorSet 0 + Decorate 178(g_tTex2df4a) DescriptorSet 0 + Decorate 181(g_tTex2di4a) DescriptorSet 0 + Decorate 184(g_tTex2du4a) DescriptorSet 0 + Decorate 187(g_tTexcdf4a) DescriptorSet 0 + Decorate 190(g_tTexcdi4a) DescriptorSet 0 + Decorate 193(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -482,177 +642,192 @@ gl_FragCoord origin is upper left 9(g_tTex1df4): 8(ptr) Variable UniformConstant 11: TypeInt 32 1 12: TypeVector 11(int) 2 - 13: TypePointer UniformConstant 12(ivec2) - 14(c2): 13(ptr) Variable UniformConstant - 15: TypeInt 32 0 - 16: 15(int) Constant 0 - 17: TypePointer UniformConstant 11(int) - 20: 15(int) Constant 1 - 23(o1): 17(ptr) Variable UniformConstant - 25: TypeVector 6(float) 4 - 27: TypeImage 11(int) 1D sampled format:Unknown - 28: TypePointer UniformConstant 27 - 29(g_tTex1di4): 28(ptr) Variable UniformConstant - 36: TypeVector 11(int) 4 - 38: TypeImage 15(int) 1D sampled format:Unknown - 39: TypePointer UniformConstant 38 - 40(g_tTex1du4): 39(ptr) Variable UniformConstant - 47: TypeVector 15(int) 4 - 49: TypeImage 6(float) 2D sampled format:Unknown - 50: TypePointer UniformConstant 49 - 51(g_tTex2df4): 50(ptr) Variable UniformConstant - 53: TypeVector 11(int) 3 - 54: TypePointer UniformConstant 53(ivec3) - 55(c3): 54(ptr) Variable UniformConstant - 58: 15(int) Constant 2 - 61(o2): 13(ptr) Variable UniformConstant - 64: TypeImage 11(int) 2D sampled format:Unknown - 65: TypePointer UniformConstant 64 - 66(g_tTex2di4): 65(ptr) Variable UniformConstant - 74: TypeImage 15(int) 2D sampled format:Unknown - 75: TypePointer UniformConstant 74 - 76(g_tTex2du4): 75(ptr) Variable UniformConstant - 84: TypeImage 6(float) 3D sampled format:Unknown + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypeInt 32 0 + 20: 19(int) Constant 0 + 21: TypePointer Uniform 11(int) + 24: 19(int) Constant 1 + 27: 11(int) Constant 4 + 30: TypeVector 6(float) 4 + 32: TypeImage 11(int) 1D sampled format:Unknown + 33: TypePointer UniformConstant 32 + 34(g_tTex1di4): 33(ptr) Variable UniformConstant + 43: TypeImage 19(int) 1D sampled format:Unknown + 44: TypePointer UniformConstant 43 + 45(g_tTex1du4): 44(ptr) Variable UniformConstant + 53: TypeVector 19(int) 4 + 55: TypeImage 6(float) 2D sampled format:Unknown + 56: TypePointer UniformConstant 55 + 57(g_tTex2df4): 56(ptr) Variable UniformConstant + 59: 11(int) Constant 2 + 60: TypePointer Uniform 13(ivec3) + 64: 19(int) Constant 2 + 67: 11(int) Constant 5 + 68: TypePointer Uniform 12(ivec2) + 72: TypeImage 11(int) 2D sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2di4): 73(ptr) Variable UniformConstant + 84: TypeImage 19(int) 2D sampled format:Unknown 85: TypePointer UniformConstant 84 - 86(g_tTex3df4): 85(ptr) Variable UniformConstant - 88: TypePointer UniformConstant 36(ivec4) - 89(c4): 88(ptr) Variable UniformConstant - 92: 15(int) Constant 3 - 95(o3): 54(ptr) Variable UniformConstant - 98: TypeImage 11(int) 3D sampled format:Unknown - 99: TypePointer UniformConstant 98 - 100(g_tTex3di4): 99(ptr) Variable UniformConstant - 108: TypeImage 15(int) 3D sampled format:Unknown - 109: TypePointer UniformConstant 108 - 110(g_tTex3du4): 109(ptr) Variable UniformConstant - 118(PS_OUTPUT): TypeStruct 25(fvec4) 6(float) - 119: TypePointer Function 118(PS_OUTPUT) - 121: 11(int) Constant 0 - 122: 6(float) Constant 1065353216 - 123: 25(fvec4) ConstantComposite 122 122 122 122 - 124: TypePointer Function 25(fvec4) - 126: 11(int) Constant 1 - 127: TypePointer Function 6(float) - 129: TypePointer Output 25(fvec4) - 130(Color): 129(ptr) Variable Output - 133: TypePointer Output 6(float) - 134(Depth): 133(ptr) Variable Output - 138: TypeSampler - 139: TypePointer UniformConstant 138 - 140(g_sSamp): 139(ptr) Variable UniformConstant - 141: TypeImage 6(float) Cube sampled format:Unknown - 142: TypePointer UniformConstant 141 - 143(g_tTexcdf4): 142(ptr) Variable UniformConstant - 144: TypeImage 11(int) Cube sampled format:Unknown - 145: TypePointer UniformConstant 144 - 146(g_tTexcdi4): 145(ptr) Variable UniformConstant - 147: TypeImage 15(int) Cube sampled format:Unknown - 148: TypePointer UniformConstant 147 - 149(g_tTexcdu4): 148(ptr) Variable UniformConstant - 150: TypeImage 6(float) 1D array sampled format:Unknown - 151: TypePointer UniformConstant 150 -152(g_tTex1df4a): 151(ptr) Variable UniformConstant - 153: TypeImage 11(int) 1D array sampled format:Unknown - 154: TypePointer UniformConstant 153 -155(g_tTex1di4a): 154(ptr) Variable UniformConstant - 156: TypeImage 15(int) 1D array sampled format:Unknown - 157: TypePointer UniformConstant 156 -158(g_tTex1du4a): 157(ptr) Variable UniformConstant - 159: TypeImage 6(float) 2D array sampled format:Unknown - 160: TypePointer UniformConstant 159 -161(g_tTex2df4a): 160(ptr) Variable UniformConstant - 162: TypeImage 11(int) 2D array sampled format:Unknown - 163: TypePointer UniformConstant 162 -164(g_tTex2di4a): 163(ptr) Variable UniformConstant - 165: TypeImage 15(int) 2D array sampled format:Unknown - 166: TypePointer UniformConstant 165 -167(g_tTex2du4a): 166(ptr) Variable UniformConstant - 168: TypeImage 6(float) Cube array sampled format:Unknown - 169: TypePointer UniformConstant 168 -170(g_tTexcdf4a): 169(ptr) Variable UniformConstant - 171: TypeImage 11(int) Cube array sampled format:Unknown - 172: TypePointer UniformConstant 171 -173(g_tTexcdi4a): 172(ptr) Variable UniformConstant - 174: TypeImage 15(int) Cube array sampled format:Unknown - 175: TypePointer UniformConstant 174 -176(g_tTexcdu4a): 175(ptr) Variable UniformConstant - 177(c1): 17(ptr) Variable UniformConstant - 178(o4): 88(ptr) Variable UniformConstant + 86(g_tTex2du4): 85(ptr) Variable UniformConstant + 96: TypeImage 6(float) 3D sampled format:Unknown + 97: TypePointer UniformConstant 96 + 98(g_tTex3df4): 97(ptr) Variable UniformConstant + 100: 11(int) Constant 3 + 101: TypePointer Uniform 14(ivec4) + 105: 19(int) Constant 3 + 108: 11(int) Constant 6 + 112: TypeImage 11(int) 3D sampled format:Unknown + 113: TypePointer UniformConstant 112 + 114(g_tTex3di4): 113(ptr) Variable UniformConstant + 124: TypeImage 19(int) 3D sampled format:Unknown + 125: TypePointer UniformConstant 124 + 126(g_tTex3du4): 125(ptr) Variable UniformConstant + 136(PS_OUTPUT): TypeStruct 30(fvec4) 6(float) + 137: TypePointer Function 136(PS_OUTPUT) + 139: 11(int) Constant 0 + 140: 6(float) Constant 1065353216 + 141: 30(fvec4) ConstantComposite 140 140 140 140 + 142: TypePointer Function 30(fvec4) + 144: TypePointer Function 6(float) + 146: TypePointer Output 30(fvec4) + 147(Color): 146(ptr) Variable Output + 150: TypePointer Output 6(float) + 151(Depth): 150(ptr) Variable Output + 155: TypeSampler + 156: TypePointer UniformConstant 155 + 157(g_sSamp): 156(ptr) Variable UniformConstant + 158: TypeImage 6(float) Cube sampled format:Unknown + 159: TypePointer UniformConstant 158 + 160(g_tTexcdf4): 159(ptr) Variable UniformConstant + 161: TypeImage 11(int) Cube sampled format:Unknown + 162: TypePointer UniformConstant 161 + 163(g_tTexcdi4): 162(ptr) Variable UniformConstant + 164: TypeImage 19(int) Cube sampled format:Unknown + 165: TypePointer UniformConstant 164 + 166(g_tTexcdu4): 165(ptr) Variable UniformConstant + 167: TypeImage 6(float) 1D array sampled format:Unknown + 168: TypePointer UniformConstant 167 +169(g_tTex1df4a): 168(ptr) Variable UniformConstant + 170: TypeImage 11(int) 1D array sampled format:Unknown + 171: TypePointer UniformConstant 170 +172(g_tTex1di4a): 171(ptr) Variable UniformConstant + 173: TypeImage 19(int) 1D array sampled format:Unknown + 174: TypePointer UniformConstant 173 +175(g_tTex1du4a): 174(ptr) Variable UniformConstant + 176: TypeImage 6(float) 2D array sampled format:Unknown + 177: TypePointer UniformConstant 176 +178(g_tTex2df4a): 177(ptr) Variable UniformConstant + 179: TypeImage 11(int) 2D array sampled format:Unknown + 180: TypePointer UniformConstant 179 +181(g_tTex2di4a): 180(ptr) Variable UniformConstant + 182: TypeImage 19(int) 2D array sampled format:Unknown + 183: TypePointer UniformConstant 182 +184(g_tTex2du4a): 183(ptr) Variable UniformConstant + 185: TypeImage 6(float) Cube array sampled format:Unknown + 186: TypePointer UniformConstant 185 +187(g_tTexcdf4a): 186(ptr) Variable UniformConstant + 188: TypeImage 11(int) Cube array sampled format:Unknown + 189: TypePointer UniformConstant 188 +190(g_tTexcdi4a): 189(ptr) Variable UniformConstant + 191: TypeImage 19(int) Cube array sampled format:Unknown + 192: TypePointer UniformConstant 191 +193(g_tTexcdu4a): 192(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 120(psout): 119(ptr) Variable Function + 138(psout): 137(ptr) Variable Function 10: 7 Load 9(g_tTex1df4) - 18: 17(ptr) AccessChain 14(c2) 16 - 19: 11(int) Load 18 - 21: 17(ptr) AccessChain 14(c2) 20 - 22: 11(int) Load 21 - 24: 11(int) Load 23(o1) - 26: 25(fvec4) ImageFetch 10 19 Lod Offset 22 24 - 30: 27 Load 29(g_tTex1di4) - 31: 17(ptr) AccessChain 14(c2) 16 - 32: 11(int) Load 31 - 33: 17(ptr) AccessChain 14(c2) 20 - 34: 11(int) Load 33 - 35: 11(int) Load 23(o1) - 37: 36(ivec4) ImageFetch 30 32 Lod Offset 34 35 - 41: 38 Load 40(g_tTex1du4) - 42: 17(ptr) AccessChain 14(c2) 16 - 43: 11(int) Load 42 - 44: 17(ptr) AccessChain 14(c2) 20 - 45: 11(int) Load 44 - 46: 11(int) Load 23(o1) - 48: 47(ivec4) ImageFetch 41 43 Lod Offset 45 46 - 52: 49 Load 51(g_tTex2df4) - 56: 53(ivec3) Load 55(c3) - 57: 12(ivec2) VectorShuffle 56 56 0 1 - 59: 17(ptr) AccessChain 55(c3) 58 - 60: 11(int) Load 59 - 62: 12(ivec2) Load 61(o2) - 63: 25(fvec4) ImageFetch 52 57 Lod Offset 60 62 - 67: 64 Load 66(g_tTex2di4) - 68: 53(ivec3) Load 55(c3) - 69: 12(ivec2) VectorShuffle 68 68 0 1 - 70: 17(ptr) AccessChain 55(c3) 58 - 71: 11(int) Load 70 - 72: 12(ivec2) Load 61(o2) - 73: 36(ivec4) ImageFetch 67 69 Lod Offset 71 72 - 77: 74 Load 76(g_tTex2du4) - 78: 53(ivec3) Load 55(c3) - 79: 12(ivec2) VectorShuffle 78 78 0 1 - 80: 17(ptr) AccessChain 55(c3) 58 - 81: 11(int) Load 80 - 82: 12(ivec2) Load 61(o2) - 83: 47(ivec4) ImageFetch 77 79 Lod Offset 81 82 - 87: 84 Load 86(g_tTex3df4) - 90: 36(ivec4) Load 89(c4) - 91: 53(ivec3) VectorShuffle 90 90 0 1 2 - 93: 17(ptr) AccessChain 89(c4) 92 - 94: 11(int) Load 93 - 96: 53(ivec3) Load 95(o3) - 97: 25(fvec4) ImageFetch 87 91 Lod Offset 94 96 - 101: 98 Load 100(g_tTex3di4) - 102: 36(ivec4) Load 89(c4) - 103: 53(ivec3) VectorShuffle 102 102 0 1 2 - 104: 17(ptr) AccessChain 89(c4) 92 - 105: 11(int) Load 104 - 106: 53(ivec3) Load 95(o3) - 107: 36(ivec4) ImageFetch 101 103 Lod Offset 105 106 - 111: 108 Load 110(g_tTex3du4) - 112: 36(ivec4) Load 89(c4) - 113: 53(ivec3) VectorShuffle 112 112 0 1 2 - 114: 17(ptr) AccessChain 89(c4) 92 - 115: 11(int) Load 114 - 116: 53(ivec3) Load 95(o3) - 117: 47(ivec4) ImageFetch 111 113 Lod Offset 115 116 - 125: 124(ptr) AccessChain 120(psout) 121 - Store 125 123 - 128: 127(ptr) AccessChain 120(psout) 126 - Store 128 122 - 131: 124(ptr) AccessChain 120(psout) 121 - 132: 25(fvec4) Load 131 - Store 130(Color) 132 - 135: 127(ptr) AccessChain 120(psout) 126 - 136: 6(float) Load 135 - Store 134(Depth) 136 + 22: 21(ptr) AccessChain 17 18 20 + 23: 11(int) Load 22 + 25: 21(ptr) AccessChain 17 18 24 + 26: 11(int) Load 25 + 28: 21(ptr) AccessChain 17 27 + 29: 11(int) Load 28 + 31: 30(fvec4) ImageFetch 10 23 Lod Offset 26 29 + 35: 32 Load 34(g_tTex1di4) + 36: 21(ptr) AccessChain 17 18 20 + 37: 11(int) Load 36 + 38: 21(ptr) AccessChain 17 18 24 + 39: 11(int) Load 38 + 40: 21(ptr) AccessChain 17 27 + 41: 11(int) Load 40 + 42: 14(ivec4) ImageFetch 35 37 Lod Offset 39 41 + 46: 43 Load 45(g_tTex1du4) + 47: 21(ptr) AccessChain 17 18 20 + 48: 11(int) Load 47 + 49: 21(ptr) AccessChain 17 18 24 + 50: 11(int) Load 49 + 51: 21(ptr) AccessChain 17 27 + 52: 11(int) Load 51 + 54: 53(ivec4) ImageFetch 46 48 Lod Offset 50 52 + 58: 55 Load 57(g_tTex2df4) + 61: 60(ptr) AccessChain 17 59 + 62: 13(ivec3) Load 61 + 63: 12(ivec2) VectorShuffle 62 62 0 1 + 65: 21(ptr) AccessChain 17 59 64 + 66: 11(int) Load 65 + 69: 68(ptr) AccessChain 17 67 + 70: 12(ivec2) Load 69 + 71: 30(fvec4) ImageFetch 58 63 Lod Offset 66 70 + 75: 72 Load 74(g_tTex2di4) + 76: 60(ptr) AccessChain 17 59 + 77: 13(ivec3) Load 76 + 78: 12(ivec2) VectorShuffle 77 77 0 1 + 79: 21(ptr) AccessChain 17 59 64 + 80: 11(int) Load 79 + 81: 68(ptr) AccessChain 17 67 + 82: 12(ivec2) Load 81 + 83: 14(ivec4) ImageFetch 75 78 Lod Offset 80 82 + 87: 84 Load 86(g_tTex2du4) + 88: 60(ptr) AccessChain 17 59 + 89: 13(ivec3) Load 88 + 90: 12(ivec2) VectorShuffle 89 89 0 1 + 91: 21(ptr) AccessChain 17 59 64 + 92: 11(int) Load 91 + 93: 68(ptr) AccessChain 17 67 + 94: 12(ivec2) Load 93 + 95: 53(ivec4) ImageFetch 87 90 Lod Offset 92 94 + 99: 96 Load 98(g_tTex3df4) + 102: 101(ptr) AccessChain 17 100 + 103: 14(ivec4) Load 102 + 104: 13(ivec3) VectorShuffle 103 103 0 1 2 + 106: 21(ptr) AccessChain 17 100 105 + 107: 11(int) Load 106 + 109: 60(ptr) AccessChain 17 108 + 110: 13(ivec3) Load 109 + 111: 30(fvec4) ImageFetch 99 104 Lod Offset 107 110 + 115: 112 Load 114(g_tTex3di4) + 116: 101(ptr) AccessChain 17 100 + 117: 14(ivec4) Load 116 + 118: 13(ivec3) VectorShuffle 117 117 0 1 2 + 119: 21(ptr) AccessChain 17 100 105 + 120: 11(int) Load 119 + 121: 60(ptr) AccessChain 17 108 + 122: 13(ivec3) Load 121 + 123: 14(ivec4) ImageFetch 115 118 Lod Offset 120 122 + 127: 124 Load 126(g_tTex3du4) + 128: 101(ptr) AccessChain 17 100 + 129: 14(ivec4) Load 128 + 130: 13(ivec3) VectorShuffle 129 129 0 1 2 + 131: 21(ptr) AccessChain 17 100 105 + 132: 11(int) Load 131 + 133: 60(ptr) AccessChain 17 108 + 134: 13(ivec3) Load 133 + 135: 53(ivec4) ImageFetch 127 130 Lod Offset 132 134 + 143: 142(ptr) AccessChain 138(psout) 139 + Store 143 141 + 145: 144(ptr) AccessChain 138(psout) 18 + Store 145 140 + 148: 142(ptr) AccessChain 138(psout) 139 + 149: 30(fvec4) Load 148 + Store 147(Color) 149 + 152: 144(ptr) AccessChain 138(psout) 18 + 153: 6(float) Load 152 + Store 151(Depth) 153 Return FunctionEnd diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index d5f66716..665fc47a 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -2,55 +2,85 @@ hlsl.load.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetchOffset (global 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 direct index (temp int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) -0:52 'o1' (uniform int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) 0:53 textureFetchOffset (global 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 direct index (temp int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) -0:53 'o1' (uniform int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) 0:54 textureFetchOffset (global 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 direct index (temp int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) -0:54 'o1' (uniform int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) 0:57 textureFetchOffset (global 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) @@ -59,14 +89,23 @@ gl_FragCoord origin is upper left 0:57 Constant: 0:57 2 (const int) 0:57 direct index (temp int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) -0:57 'o2' (uniform 2-component vector of int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) 0:58 textureFetchOffset (global 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) @@ -75,14 +114,23 @@ gl_FragCoord origin is upper left 0:58 Constant: 0:58 2 (const int) 0:58 direct index (temp int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) -0:58 'o2' (uniform 2-component vector of int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) 0:59 textureFetchOffset (global 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) @@ -91,10 +139,16 @@ gl_FragCoord origin is upper left 0:59 Constant: 0:59 2 (const int) 0:59 direct index (temp int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Constant: 0:59 3 (const int) -0:59 'o2' (uniform 2-component vector of int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) 0:65 move second child to first child (temp 4-component vector of float) 0:65 Color: direct index for structure (temp 4-component vector of float) 0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -150,16 +204,9 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -168,55 +215,85 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence 0:52 textureFetchOffset (global 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Sequence 0:52 Constant: 0:52 0 (const int) 0:52 Constant: 0:52 1 (const int) 0:52 direct index (temp int) -0:52 'c3' (uniform 3-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) -0:52 'o1' (uniform int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) 0:53 textureFetchOffset (global 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Sequence 0:53 Constant: 0:53 0 (const int) 0:53 Constant: 0:53 1 (const int) 0:53 direct index (temp int) -0:53 'c3' (uniform 3-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) -0:53 'o1' (uniform int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) 0:54 textureFetchOffset (global 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Sequence 0:54 Constant: 0:54 0 (const int) 0:54 Constant: 0:54 1 (const int) 0:54 direct index (temp int) -0:54 'c3' (uniform 3-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) -0:54 'o1' (uniform int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) 0:57 textureFetchOffset (global 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Sequence 0:57 Constant: 0:57 0 (const int) @@ -225,14 +302,23 @@ gl_FragCoord origin is upper left 0:57 Constant: 0:57 2 (const int) 0:57 direct index (temp int) -0:57 'c4' (uniform 4-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) -0:57 'o2' (uniform 2-component vector of int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) 0:58 textureFetchOffset (global 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Sequence 0:58 Constant: 0:58 0 (const int) @@ -241,14 +327,23 @@ gl_FragCoord origin is upper left 0:58 Constant: 0:58 2 (const int) 0:58 direct index (temp int) -0:58 'c4' (uniform 4-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) -0:58 'o2' (uniform 2-component vector of int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) 0:59 textureFetchOffset (global 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Sequence 0:59 Constant: 0:59 0 (const int) @@ -257,10 +352,16 @@ gl_FragCoord origin is upper left 0:59 Constant: 0:59 2 (const int) 0:59 direct index (temp int) -0:59 'c4' (uniform 4-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) 0:59 Constant: 0:59 3 (const int) -0:59 'o2' (uniform 2-component vector of int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) 0:65 move second child to first child (temp 4-component vector of float) 0:65 Color: direct index for structure (temp 4-component vector of float) 0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -316,20 +417,13 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'c1' (uniform int) -0:? 'c2' (uniform 2-component vector of int) -0:? 'c3' (uniform 3-component vector of int) -0:? 'c4' (uniform 4-component vector of int) -0:? 'o1' (uniform int) -0:? 'o2' (uniform 2-component vector of int) -0:? 'o3' (uniform 3-component vector of int) -0:? 'o4' (uniform 4-component vector of int) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 156 +// Id's are bound by 167 Capability Shader Capability ImageGatherExtended @@ -337,71 +431,83 @@ gl_FragCoord origin is upper left Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 96 100 + EntryPoint Fragment 4 "main" 111 115 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "g_tTex1df4a" - Name 14 "c3" - Name 23 "o1" - Name 29 "g_tTex1di4a" - Name 40 "g_tTex1du4a" - Name 51 "g_tTex2df4a" - Name 54 "c4" - Name 61 "o2" - Name 66 "g_tTex2di4a" - Name 76 "g_tTex2du4a" - Name 84 "PS_OUTPUT" - MemberName 84(PS_OUTPUT) 0 "Color" - MemberName 84(PS_OUTPUT) 1 "Depth" - Name 86 "psout" - Name 96 "Color" - Name 100 "Depth" - Name 106 "g_sSamp" - Name 109 "g_tTex1df4" - Name 112 "g_tTex1di4" - Name 115 "g_tTex1du4" - Name 118 "g_tTex2df4" - Name 121 "g_tTex2di4" - Name 124 "g_tTex2du4" - Name 127 "g_tTex3df4" - Name 130 "g_tTex3di4" - Name 133 "g_tTex3du4" - Name 136 "g_tTexcdf4" - Name 139 "g_tTexcdi4" - Name 142 "g_tTexcdu4" - Name 145 "g_tTexcdf4a" - Name 148 "g_tTexcdi4a" - Name 151 "g_tTexcdu4a" - Name 152 "c1" - Name 153 "c2" - Name 154 "o3" - Name 155 "o4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 35 "g_tTex1di4a" + Name 47 "g_tTex1du4a" + Name 60 "g_tTex2df4a" + Name 77 "g_tTex2di4a" + Name 89 "g_tTex2du4a" + Name 99 "PS_OUTPUT" + MemberName 99(PS_OUTPUT) 0 "Color" + MemberName 99(PS_OUTPUT) 1 "Depth" + Name 101 "psout" + Name 111 "Color" + Name 115 "Depth" + Name 121 "g_sSamp" + Name 124 "g_tTex1df4" + Name 127 "g_tTex1di4" + Name 130 "g_tTex1du4" + Name 133 "g_tTex2df4" + Name 136 "g_tTex2di4" + Name 139 "g_tTex2du4" + Name 142 "g_tTex3df4" + Name 145 "g_tTex3di4" + Name 148 "g_tTex3du4" + Name 151 "g_tTexcdf4" + Name 154 "g_tTexcdi4" + Name 157 "g_tTexcdu4" + Name 160 "g_tTexcdf4a" + Name 163 "g_tTexcdi4a" + Name 166 "g_tTexcdu4a" Decorate 9(g_tTex1df4a) DescriptorSet 0 - Decorate 29(g_tTex1di4a) DescriptorSet 0 - Decorate 40(g_tTex1du4a) DescriptorSet 0 - Decorate 51(g_tTex2df4a) DescriptorSet 0 - Decorate 66(g_tTex2di4a) DescriptorSet 0 - Decorate 76(g_tTex2du4a) DescriptorSet 0 - Decorate 96(Color) Location 0 - Decorate 100(Depth) BuiltIn FragDepth - Decorate 106(g_sSamp) DescriptorSet 0 - Decorate 106(g_sSamp) Binding 0 - Decorate 109(g_tTex1df4) DescriptorSet 0 - Decorate 109(g_tTex1df4) Binding 0 - Decorate 112(g_tTex1di4) DescriptorSet 0 - Decorate 115(g_tTex1du4) DescriptorSet 0 - Decorate 118(g_tTex2df4) DescriptorSet 0 - Decorate 121(g_tTex2di4) DescriptorSet 0 - Decorate 124(g_tTex2du4) DescriptorSet 0 - Decorate 127(g_tTex3df4) DescriptorSet 0 - Decorate 130(g_tTex3di4) DescriptorSet 0 - Decorate 133(g_tTex3du4) DescriptorSet 0 - Decorate 136(g_tTexcdf4) DescriptorSet 0 - Decorate 139(g_tTexcdi4) DescriptorSet 0 - Decorate 142(g_tTexcdu4) DescriptorSet 0 - Decorate 145(g_tTexcdf4a) DescriptorSet 0 - Decorate 148(g_tTexcdi4a) DescriptorSet 0 - Decorate 151(g_tTexcdu4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 35(g_tTex1di4a) DescriptorSet 0 + Decorate 47(g_tTex1du4a) DescriptorSet 0 + Decorate 60(g_tTex2df4a) DescriptorSet 0 + Decorate 77(g_tTex2di4a) DescriptorSet 0 + Decorate 89(g_tTex2du4a) DescriptorSet 0 + Decorate 111(Color) Location 0 + Decorate 115(Depth) BuiltIn FragDepth + Decorate 121(g_sSamp) DescriptorSet 0 + Decorate 121(g_sSamp) Binding 0 + Decorate 124(g_tTex1df4) DescriptorSet 0 + Decorate 124(g_tTex1df4) Binding 0 + Decorate 127(g_tTex1di4) DescriptorSet 0 + Decorate 130(g_tTex1du4) DescriptorSet 0 + Decorate 133(g_tTex2df4) DescriptorSet 0 + Decorate 136(g_tTex2di4) DescriptorSet 0 + Decorate 139(g_tTex2du4) DescriptorSet 0 + Decorate 142(g_tTex3df4) DescriptorSet 0 + Decorate 145(g_tTex3di4) DescriptorSet 0 + Decorate 148(g_tTex3du4) DescriptorSet 0 + Decorate 151(g_tTexcdf4) DescriptorSet 0 + Decorate 154(g_tTexcdi4) DescriptorSet 0 + Decorate 157(g_tTexcdu4) DescriptorSet 0 + Decorate 160(g_tTexcdf4a) DescriptorSet 0 + Decorate 163(g_tTexcdi4a) DescriptorSet 0 + Decorate 166(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -409,155 +515,166 @@ gl_FragCoord origin is upper left 8: TypePointer UniformConstant 7 9(g_tTex1df4a): 8(ptr) Variable UniformConstant 11: TypeInt 32 1 - 12: TypeVector 11(int) 3 - 13: TypePointer UniformConstant 12(ivec3) - 14(c3): 13(ptr) Variable UniformConstant - 15: TypeVector 11(int) 2 - 18: TypeInt 32 0 - 19: 18(int) Constant 2 - 20: TypePointer UniformConstant 11(int) - 23(o1): 20(ptr) Variable UniformConstant - 25: TypeVector 6(float) 4 - 27: TypeImage 11(int) 1D array sampled format:Unknown - 28: TypePointer UniformConstant 27 - 29(g_tTex1di4a): 28(ptr) Variable UniformConstant - 36: TypeVector 11(int) 4 - 38: TypeImage 18(int) 1D array sampled format:Unknown - 39: TypePointer UniformConstant 38 - 40(g_tTex1du4a): 39(ptr) Variable UniformConstant - 47: TypeVector 18(int) 4 - 49: TypeImage 6(float) 2D array sampled format:Unknown - 50: TypePointer UniformConstant 49 - 51(g_tTex2df4a): 50(ptr) Variable UniformConstant - 53: TypePointer UniformConstant 36(ivec4) - 54(c4): 53(ptr) Variable UniformConstant - 57: 18(int) Constant 3 - 60: TypePointer UniformConstant 15(ivec2) - 61(o2): 60(ptr) Variable UniformConstant - 64: TypeImage 11(int) 2D array sampled format:Unknown - 65: TypePointer UniformConstant 64 - 66(g_tTex2di4a): 65(ptr) Variable UniformConstant - 74: TypeImage 18(int) 2D array sampled format:Unknown - 75: TypePointer UniformConstant 74 - 76(g_tTex2du4a): 75(ptr) Variable UniformConstant - 84(PS_OUTPUT): TypeStruct 25(fvec4) 6(float) - 85: TypePointer Function 84(PS_OUTPUT) - 87: 11(int) Constant 0 - 88: 6(float) Constant 1065353216 - 89: 25(fvec4) ConstantComposite 88 88 88 88 - 90: TypePointer Function 25(fvec4) - 92: 11(int) Constant 1 - 93: TypePointer Function 6(float) - 95: TypePointer Output 25(fvec4) - 96(Color): 95(ptr) Variable Output - 99: TypePointer Output 6(float) - 100(Depth): 99(ptr) Variable Output - 104: TypeSampler - 105: TypePointer UniformConstant 104 - 106(g_sSamp): 105(ptr) Variable UniformConstant - 107: TypeImage 6(float) 1D sampled format:Unknown - 108: TypePointer UniformConstant 107 - 109(g_tTex1df4): 108(ptr) Variable UniformConstant - 110: TypeImage 11(int) 1D sampled format:Unknown - 111: TypePointer UniformConstant 110 - 112(g_tTex1di4): 111(ptr) Variable UniformConstant - 113: TypeImage 18(int) 1D sampled format:Unknown - 114: TypePointer UniformConstant 113 - 115(g_tTex1du4): 114(ptr) Variable UniformConstant - 116: TypeImage 6(float) 2D sampled format:Unknown - 117: TypePointer UniformConstant 116 - 118(g_tTex2df4): 117(ptr) Variable UniformConstant - 119: TypeImage 11(int) 2D sampled format:Unknown + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 2 + 19: TypePointer Uniform 13(ivec3) + 23: TypeInt 32 0 + 24: 23(int) Constant 2 + 25: TypePointer Uniform 11(int) + 28: 11(int) Constant 4 + 31: TypeVector 6(float) 4 + 33: TypeImage 11(int) 1D array sampled format:Unknown + 34: TypePointer UniformConstant 33 + 35(g_tTex1di4a): 34(ptr) Variable UniformConstant + 45: TypeImage 23(int) 1D array sampled format:Unknown + 46: TypePointer UniformConstant 45 + 47(g_tTex1du4a): 46(ptr) Variable UniformConstant + 56: TypeVector 23(int) 4 + 58: TypeImage 6(float) 2D array sampled format:Unknown + 59: TypePointer UniformConstant 58 + 60(g_tTex2df4a): 59(ptr) Variable UniformConstant + 62: 11(int) Constant 3 + 63: TypePointer Uniform 14(ivec4) + 67: 23(int) Constant 3 + 70: 11(int) Constant 5 + 71: TypePointer Uniform 12(ivec2) + 75: TypeImage 11(int) 2D array sampled format:Unknown + 76: TypePointer UniformConstant 75 + 77(g_tTex2di4a): 76(ptr) Variable UniformConstant + 87: TypeImage 23(int) 2D array sampled format:Unknown + 88: TypePointer UniformConstant 87 + 89(g_tTex2du4a): 88(ptr) Variable UniformConstant + 99(PS_OUTPUT): TypeStruct 31(fvec4) 6(float) + 100: TypePointer Function 99(PS_OUTPUT) + 102: 11(int) Constant 0 + 103: 6(float) Constant 1065353216 + 104: 31(fvec4) ConstantComposite 103 103 103 103 + 105: TypePointer Function 31(fvec4) + 107: 11(int) Constant 1 + 108: TypePointer Function 6(float) + 110: TypePointer Output 31(fvec4) + 111(Color): 110(ptr) Variable Output + 114: TypePointer Output 6(float) + 115(Depth): 114(ptr) Variable Output + 119: TypeSampler 120: TypePointer UniformConstant 119 - 121(g_tTex2di4): 120(ptr) Variable UniformConstant - 122: TypeImage 18(int) 2D sampled format:Unknown + 121(g_sSamp): 120(ptr) Variable UniformConstant + 122: TypeImage 6(float) 1D sampled format:Unknown 123: TypePointer UniformConstant 122 - 124(g_tTex2du4): 123(ptr) Variable UniformConstant - 125: TypeImage 6(float) 3D sampled format:Unknown + 124(g_tTex1df4): 123(ptr) Variable UniformConstant + 125: TypeImage 11(int) 1D sampled format:Unknown 126: TypePointer UniformConstant 125 - 127(g_tTex3df4): 126(ptr) Variable UniformConstant - 128: TypeImage 11(int) 3D sampled format:Unknown + 127(g_tTex1di4): 126(ptr) Variable UniformConstant + 128: TypeImage 23(int) 1D sampled format:Unknown 129: TypePointer UniformConstant 128 - 130(g_tTex3di4): 129(ptr) Variable UniformConstant - 131: TypeImage 18(int) 3D sampled format:Unknown + 130(g_tTex1du4): 129(ptr) Variable UniformConstant + 131: TypeImage 6(float) 2D sampled format:Unknown 132: TypePointer UniformConstant 131 - 133(g_tTex3du4): 132(ptr) Variable UniformConstant - 134: TypeImage 6(float) Cube sampled format:Unknown + 133(g_tTex2df4): 132(ptr) Variable UniformConstant + 134: TypeImage 11(int) 2D sampled format:Unknown 135: TypePointer UniformConstant 134 - 136(g_tTexcdf4): 135(ptr) Variable UniformConstant - 137: TypeImage 11(int) Cube sampled format:Unknown + 136(g_tTex2di4): 135(ptr) Variable UniformConstant + 137: TypeImage 23(int) 2D sampled format:Unknown 138: TypePointer UniformConstant 137 - 139(g_tTexcdi4): 138(ptr) Variable UniformConstant - 140: TypeImage 18(int) Cube sampled format:Unknown + 139(g_tTex2du4): 138(ptr) Variable UniformConstant + 140: TypeImage 6(float) 3D sampled format:Unknown 141: TypePointer UniformConstant 140 - 142(g_tTexcdu4): 141(ptr) Variable UniformConstant - 143: TypeImage 6(float) Cube array sampled format:Unknown + 142(g_tTex3df4): 141(ptr) Variable UniformConstant + 143: TypeImage 11(int) 3D sampled format:Unknown 144: TypePointer UniformConstant 143 -145(g_tTexcdf4a): 144(ptr) Variable UniformConstant - 146: TypeImage 11(int) Cube array sampled format:Unknown + 145(g_tTex3di4): 144(ptr) Variable UniformConstant + 146: TypeImage 23(int) 3D sampled format:Unknown 147: TypePointer UniformConstant 146 -148(g_tTexcdi4a): 147(ptr) Variable UniformConstant - 149: TypeImage 18(int) Cube array sampled format:Unknown + 148(g_tTex3du4): 147(ptr) Variable UniformConstant + 149: TypeImage 6(float) Cube sampled format:Unknown 150: TypePointer UniformConstant 149 -151(g_tTexcdu4a): 150(ptr) Variable UniformConstant - 152(c1): 20(ptr) Variable UniformConstant - 153(c2): 60(ptr) Variable UniformConstant - 154(o3): 13(ptr) Variable UniformConstant - 155(o4): 53(ptr) Variable UniformConstant + 151(g_tTexcdf4): 150(ptr) Variable UniformConstant + 152: TypeImage 11(int) Cube sampled format:Unknown + 153: TypePointer UniformConstant 152 + 154(g_tTexcdi4): 153(ptr) Variable UniformConstant + 155: TypeImage 23(int) Cube sampled format:Unknown + 156: TypePointer UniformConstant 155 + 157(g_tTexcdu4): 156(ptr) Variable UniformConstant + 158: TypeImage 6(float) Cube array sampled format:Unknown + 159: TypePointer UniformConstant 158 +160(g_tTexcdf4a): 159(ptr) Variable UniformConstant + 161: TypeImage 11(int) Cube array sampled format:Unknown + 162: TypePointer UniformConstant 161 +163(g_tTexcdi4a): 162(ptr) Variable UniformConstant + 164: TypeImage 23(int) Cube array sampled format:Unknown + 165: TypePointer UniformConstant 164 +166(g_tTexcdu4a): 165(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 86(psout): 85(ptr) Variable Function + 101(psout): 100(ptr) Variable Function 10: 7 Load 9(g_tTex1df4a) - 16: 12(ivec3) Load 14(c3) - 17: 15(ivec2) VectorShuffle 16 16 0 1 - 21: 20(ptr) AccessChain 14(c3) 19 - 22: 11(int) Load 21 - 24: 11(int) Load 23(o1) - 26: 25(fvec4) ImageFetch 10 17 Lod Offset 22 24 - 30: 27 Load 29(g_tTex1di4a) - 31: 12(ivec3) Load 14(c3) - 32: 15(ivec2) VectorShuffle 31 31 0 1 - 33: 20(ptr) AccessChain 14(c3) 19 - 34: 11(int) Load 33 - 35: 11(int) Load 23(o1) - 37: 36(ivec4) ImageFetch 30 32 Lod Offset 34 35 - 41: 38 Load 40(g_tTex1du4a) - 42: 12(ivec3) Load 14(c3) - 43: 15(ivec2) VectorShuffle 42 42 0 1 - 44: 20(ptr) AccessChain 14(c3) 19 - 45: 11(int) Load 44 - 46: 11(int) Load 23(o1) - 48: 47(ivec4) ImageFetch 41 43 Lod Offset 45 46 - 52: 49 Load 51(g_tTex2df4a) - 55: 36(ivec4) Load 54(c4) - 56: 12(ivec3) VectorShuffle 55 55 0 1 2 - 58: 20(ptr) AccessChain 54(c4) 57 - 59: 11(int) Load 58 - 62: 15(ivec2) Load 61(o2) - 63: 25(fvec4) ImageFetch 52 56 Lod Offset 59 62 - 67: 64 Load 66(g_tTex2di4a) - 68: 36(ivec4) Load 54(c4) - 69: 12(ivec3) VectorShuffle 68 68 0 1 2 - 70: 20(ptr) AccessChain 54(c4) 57 - 71: 11(int) Load 70 - 72: 15(ivec2) Load 61(o2) - 73: 36(ivec4) ImageFetch 67 69 Lod Offset 71 72 - 77: 74 Load 76(g_tTex2du4a) - 78: 36(ivec4) Load 54(c4) - 79: 12(ivec3) VectorShuffle 78 78 0 1 2 - 80: 20(ptr) AccessChain 54(c4) 57 - 81: 11(int) Load 80 - 82: 15(ivec2) Load 61(o2) - 83: 47(ivec4) ImageFetch 77 79 Lod Offset 81 82 - 91: 90(ptr) AccessChain 86(psout) 87 - Store 91 89 - 94: 93(ptr) AccessChain 86(psout) 92 - Store 94 88 - 97: 90(ptr) AccessChain 86(psout) 87 - 98: 25(fvec4) Load 97 - Store 96(Color) 98 - 101: 93(ptr) AccessChain 86(psout) 92 - 102: 6(float) Load 101 - Store 100(Depth) 102 + 20: 19(ptr) AccessChain 17 18 + 21: 13(ivec3) Load 20 + 22: 12(ivec2) VectorShuffle 21 21 0 1 + 26: 25(ptr) AccessChain 17 18 24 + 27: 11(int) Load 26 + 29: 25(ptr) AccessChain 17 28 + 30: 11(int) Load 29 + 32: 31(fvec4) ImageFetch 10 22 Lod Offset 27 30 + 36: 33 Load 35(g_tTex1di4a) + 37: 19(ptr) AccessChain 17 18 + 38: 13(ivec3) Load 37 + 39: 12(ivec2) VectorShuffle 38 38 0 1 + 40: 25(ptr) AccessChain 17 18 24 + 41: 11(int) Load 40 + 42: 25(ptr) AccessChain 17 28 + 43: 11(int) Load 42 + 44: 14(ivec4) ImageFetch 36 39 Lod Offset 41 43 + 48: 45 Load 47(g_tTex1du4a) + 49: 19(ptr) AccessChain 17 18 + 50: 13(ivec3) Load 49 + 51: 12(ivec2) VectorShuffle 50 50 0 1 + 52: 25(ptr) AccessChain 17 18 24 + 53: 11(int) Load 52 + 54: 25(ptr) AccessChain 17 28 + 55: 11(int) Load 54 + 57: 56(ivec4) ImageFetch 48 51 Lod Offset 53 55 + 61: 58 Load 60(g_tTex2df4a) + 64: 63(ptr) AccessChain 17 62 + 65: 14(ivec4) Load 64 + 66: 13(ivec3) VectorShuffle 65 65 0 1 2 + 68: 25(ptr) AccessChain 17 62 67 + 69: 11(int) Load 68 + 72: 71(ptr) AccessChain 17 70 + 73: 12(ivec2) Load 72 + 74: 31(fvec4) ImageFetch 61 66 Lod Offset 69 73 + 78: 75 Load 77(g_tTex2di4a) + 79: 63(ptr) AccessChain 17 62 + 80: 14(ivec4) Load 79 + 81: 13(ivec3) VectorShuffle 80 80 0 1 2 + 82: 25(ptr) AccessChain 17 62 67 + 83: 11(int) Load 82 + 84: 71(ptr) AccessChain 17 70 + 85: 12(ivec2) Load 84 + 86: 14(ivec4) ImageFetch 78 81 Lod Offset 83 85 + 90: 87 Load 89(g_tTex2du4a) + 91: 63(ptr) AccessChain 17 62 + 92: 14(ivec4) Load 91 + 93: 13(ivec3) VectorShuffle 92 92 0 1 2 + 94: 25(ptr) AccessChain 17 62 67 + 95: 11(int) Load 94 + 96: 71(ptr) AccessChain 17 70 + 97: 12(ivec2) Load 96 + 98: 56(ivec4) ImageFetch 90 93 Lod Offset 95 97 + 106: 105(ptr) AccessChain 101(psout) 102 + Store 106 104 + 109: 108(ptr) AccessChain 101(psout) 107 + Store 109 103 + 112: 105(ptr) AccessChain 101(psout) 102 + 113: 31(fvec4) Load 112 + Store 111(Color) 113 + 116: 108(ptr) AccessChain 101(psout) 107 + 117: 6(float) Load 116 + Store 115(Depth) 117 Return FunctionEnd diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index 2d63460b..0066a1de 100755 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -2,12 +2,7 @@ hlsl.matType.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 1-component vector of float) -0:1 'f1' (global 1-component vector of float) -0:1 Constant: -0:1 1.000000 -0:9 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float) +0:9 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:9 Function Parameters: 0:9 'inFloat1' (in 1-component vector of float) 0:9 'inScalar' (in float) @@ -15,12 +10,7 @@ gl_FragCoord origin is upper left 0:10 Branch: Return with expression 0:10 'inFloat1' (in 1-component vector of float) 0:? Linker Objects -0:? 'f1' (global 1-component vector of float) -0:? 'fmat11' (global 1X1 matrix of float) -0:? 'fmat41' (global 4X1 matrix of float) -0:? 'fmat12' (global 1X2 matrix of float) -0:? 'dmat23' (global 2X3 matrix of double) -0:? 'int44' (global 4X4 matrix of int) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) Linked fragment stage: @@ -29,12 +19,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 1-component vector of float) -0:1 'f1' (global 1-component vector of float) -0:1 Constant: -0:1 1.000000 -0:9 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float) +0:9 Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float) 0:9 Function Parameters: 0:9 'inFloat1' (in 1-component vector of float) 0:9 'inScalar' (in float) @@ -42,16 +27,11 @@ gl_FragCoord origin is upper left 0:10 Branch: Return with expression 0:10 'inFloat1' (in 1-component vector of float) 0:? Linker Objects -0:? 'f1' (global 1-component vector of float) -0:? 'fmat11' (global 1X1 matrix of float) -0:? 'fmat41' (global 4X1 matrix of float) -0:? 'fmat12' (global 1X2 matrix of float) -0:? 'dmat23' (global 2X3 matrix of double) -0:? 'int44' (global 4X4 matrix of int) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 40 +// Id's are bound by 30 Capability Shader Capability Float64 @@ -63,49 +43,42 @@ gl_FragCoord origin is upper left Name 11 "ShaderFunction(vf1;f1;" Name 9 "inFloat1" Name 10 "inScalar" - Name 14 "f1" - Name 22 "fmat11" - Name 25 "fmat41" - Name 29 "fmat12" - Name 34 "dmat23" - Name 39 "int44" + Name 27 "$Global" + MemberName 27($Global) 0 "f1" + MemberName 27($Global) 1 "fmat11" + MemberName 27($Global) 2 "fmat41" + MemberName 27($Global) 3 "fmat12" + MemberName 27($Global) 4 "dmat23" + MemberName 27($Global) 5 "int44" + Name 29 "" + Decorate 27($Global) Block + Decorate 29 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 7(ptr) - 13: TypePointer Private 6(float) - 14(f1): 13(ptr) Variable Private - 15: 6(float) Constant 1065353216 - 19: TypeVector 6(float) 1 - 20: TypeMatrix 19(fvec) 1 - 21: TypePointer Private 20 - 22(fmat11): 21(ptr) Variable Private - 23: TypeMatrix 19(fvec) 4 - 24: TypePointer Private 23 - 25(fmat41): 24(ptr) Variable Private - 26: TypeVector 6(float) 2 - 27: TypeMatrix 26(fvec2) 1 - 28: TypePointer Private 27 - 29(fmat12): 28(ptr) Variable Private - 30: TypeFloat 64 - 31: TypeVector 30(float) 3 - 32: TypeMatrix 31(fvec3) 2 - 33: TypePointer Private 32 - 34(dmat23): 33(ptr) Variable Private - 35: TypeInt 32 1 - 36: TypeVector 35(int) 4 - 37: TypeMatrix 36(ivec4) 4 - 38: TypePointer Private 37 - 39(int44): 38(ptr) Variable Private + 16: TypeVector 6(float) 1 + 17: TypeMatrix 16(fvec) 1 + 18: TypeMatrix 16(fvec) 4 + 19: TypeVector 6(float) 2 + 20: TypeMatrix 19(fvec2) 1 + 21: TypeFloat 64 + 22: TypeVector 21(float) 3 + 23: TypeMatrix 22(fvec3) 2 + 24: TypeInt 32 1 + 25: TypeVector 24(int) 4 + 26: TypeMatrix 25(ivec4) 4 + 27($Global): TypeStruct 6(float) 17 18 20 23 26 + 28: TypePointer Uniform 27($Global) + 29: 28(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label - Store 14(f1) 15 FunctionEnd 11(ShaderFunction(vf1;f1;): 6(float) Function None 8 9(inFloat1): 7(ptr) FunctionParameter 10(inScalar): 7(ptr) FunctionParameter 12: Label - 16: 6(float) Load 9(inFloat1) - ReturnValue 16 + 13: 6(float) Load 9(inFloat1) + ReturnValue 13 FunctionEnd diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out index 7acaa717..7d49629d 100644 --- a/Test/baseResults/hlsl.matrixindex.frag.out +++ b/Test/baseResults/hlsl.matrixindex.frag.out @@ -2,7 +2,7 @@ hlsl.matrixindex.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:10 Function Definition: main( (global structure{temp 4-component vector of float Color}) +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:22 Sequence @@ -94,13 +94,22 @@ gl_FragCoord origin is upper left 0:43 23.000000 0:43 24.000000 0:43 25.000000 -0:43 'idx' (uniform int) +0:43 idx: direct index for structure (layout(offset=0 ) uniform int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:43 Constant: +0:43 0 (const uint) 0:44 Sequence 0:44 move second child to first child (temp 2-component vector of float) 0:44 'r0c' (temp 2-component vector of float) -0:44 indirect index (temp 2-component vector of float) -0:44 'um' (uniform 3X2 matrix of float) -0:44 'idx' (uniform int) +0:44 indirect index (layout(offset=16 ) temp 2-component vector of float) +0:44 um: direct index for structure (layout(offset=16 ) uniform 3X2 matrix of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 1 (const uint) +0:44 idx: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 0 (const 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}) @@ -118,9 +127,8 @@ gl_FragCoord origin is upper left 0:48 0 (const int) 0:48 Branch: Return 0:? Linker Objects -0:? 'idx' (uniform int) -0:? 'um' (uniform 3X2 matrix of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) Linked fragment stage: @@ -129,7 +137,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:10 Function Definition: main( (global structure{temp 4-component vector of float Color}) +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:10 Function Parameters: 0:? Sequence 0:22 Sequence @@ -221,13 +229,22 @@ gl_FragCoord origin is upper left 0:43 23.000000 0:43 24.000000 0:43 25.000000 -0:43 'idx' (uniform int) +0:43 idx: direct index for structure (layout(offset=0 ) uniform int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:43 Constant: +0:43 0 (const uint) 0:44 Sequence 0:44 move second child to first child (temp 2-component vector of float) 0:44 'r0c' (temp 2-component vector of float) -0:44 indirect index (temp 2-component vector of float) -0:44 'um' (uniform 3X2 matrix of float) -0:44 'idx' (uniform int) +0:44 indirect index (layout(offset=16 ) temp 2-component vector of float) +0:44 um: direct index for structure (layout(offset=16 ) uniform 3X2 matrix of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 1 (const uint) +0:44 idx: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 0 (const 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}) @@ -245,18 +262,17 @@ gl_FragCoord origin is upper left 0:48 0 (const int) 0:48 Branch: Return 0:? Linker Objects -0:? 'idx' (uniform int) -0:? 'um' (uniform 3X2 matrix of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 75 +// Id's are bound by 78 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 71 + EntryPoint Fragment 4 "main" 74 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "e1_00" @@ -275,15 +291,23 @@ gl_FragCoord origin is upper left Name 36 "r1a" Name 38 "r2a" Name 40 "r0b" - Name 48 "idx" - Name 51 "indexable" - Name 54 "r0c" - Name 56 "um" - Name 62 "PS_OUTPUT" - MemberName 62(PS_OUTPUT) 0 "Color" - Name 64 "psout" - Name 71 "Color" - Decorate 71(Color) Location 0 + Name 47 "$Global" + MemberName 47($Global) 0 "idx" + MemberName 47($Global) 1 "um" + Name 49 "" + Name 55 "indexable" + Name 58 "r0c" + Name 66 "PS_OUTPUT" + MemberName 66(PS_OUTPUT) 0 "Color" + Name 68 "psout" + Name 74 "Color" + MemberDecorate 47($Global) 0 Offset 0 + MemberDecorate 47($Global) 1 RowMajor + MemberDecorate 47($Global) 1 Offset 16 + MemberDecorate 47($Global) 1 MatrixStride 16 + Decorate 47($Global) Block + Decorate 49 DescriptorSet 0 + Decorate 74(Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -311,19 +335,20 @@ gl_FragCoord origin is upper left 44: 32(fvec2) ConstantComposite 29 31 45: 41 ConstantComposite 42 43 44 46: TypeInt 32 1 - 47: TypePointer UniformConstant 46(int) - 48(idx): 47(ptr) Variable UniformConstant - 50: TypePointer Function 41 - 55: TypePointer UniformConstant 41 - 56(um): 55(ptr) Variable UniformConstant - 58: TypePointer UniformConstant 32(fvec2) - 61: TypeVector 6(float) 4 - 62(PS_OUTPUT): TypeStruct 61(fvec4) - 63: TypePointer Function 62(PS_OUTPUT) - 65: 46(int) Constant 0 - 68: TypePointer Function 61(fvec4) - 70: TypePointer Output 61(fvec4) - 71(Color): 70(ptr) Variable Output + 47($Global): TypeStruct 46(int) 41 + 48: TypePointer Uniform 47($Global) + 49: 48(ptr) Variable Uniform + 50: 46(int) Constant 0 + 51: TypePointer Uniform 46(int) + 54: TypePointer Function 41 + 59: 46(int) Constant 1 + 62: TypePointer Uniform 32(fvec2) + 65: TypeVector 6(float) 4 + 66(PS_OUTPUT): TypeStruct 65(fvec4) + 67: TypePointer Function 66(PS_OUTPUT) + 71: TypePointer Function 65(fvec4) + 73: TypePointer Output 65(fvec4) + 74(Color): 73(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(e1_00): 7(ptr) Variable Function @@ -342,9 +367,9 @@ gl_FragCoord origin is upper left 36(r1a): 33(ptr) Variable Function 38(r2a): 33(ptr) Variable Function 40(r0b): 33(ptr) Variable Function - 51(indexable): 50(ptr) Variable Function - 54(r0c): 33(ptr) Variable Function - 64(psout): 63(ptr) Variable Function + 55(indexable): 54(ptr) Variable Function + 58(r0c): 33(ptr) Variable Function + 68(psout): 67(ptr) Variable Function Store 8(e1_00) 9 Store 10(e1_01) 11 Store 12(e1_10) 13 @@ -360,21 +385,23 @@ gl_FragCoord origin is upper left Store 34(r0a) 35 Store 36(r1a) 37 Store 38(r2a) 39 - 49: 46(int) Load 48(idx) - Store 51(indexable) 45 - 52: 33(ptr) AccessChain 51(indexable) 49 - 53: 32(fvec2) Load 52 - Store 40(r0b) 53 - 57: 46(int) Load 48(idx) - 59: 58(ptr) AccessChain 56(um) 57 - 60: 32(fvec2) Load 59 - Store 54(r0c) 60 - 66: 6(float) Load 26(e2_11) - 67: 61(fvec4) CompositeConstruct 66 66 66 66 - 69: 68(ptr) AccessChain 64(psout) 65 - Store 69 67 - 72: 68(ptr) AccessChain 64(psout) 65 - 73: 61(fvec4) Load 72 - Store 71(Color) 73 + 52: 51(ptr) AccessChain 49 50 + 53: 46(int) Load 52 + Store 55(indexable) 45 + 56: 33(ptr) AccessChain 55(indexable) 53 + 57: 32(fvec2) Load 56 + Store 40(r0b) 57 + 60: 51(ptr) AccessChain 49 50 + 61: 46(int) Load 60 + 63: 62(ptr) AccessChain 49 59 61 + 64: 32(fvec2) Load 63 + Store 58(r0c) 64 + 69: 6(float) Load 26(e2_11) + 70: 65(fvec4) CompositeConstruct 69 69 69 69 + 72: 71(ptr) AccessChain 68(psout) 50 + Store 72 70 + 75: 71(ptr) AccessChain 68(psout) 50 + 76: 65(fvec4) Load 75 + Store 74(Color) 76 Return FunctionEnd diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out index d396be8b..53646bb1 100755 --- a/Test/baseResults/hlsl.max.frag.out +++ b/Test/baseResults/hlsl.max.frag.out @@ -2,7 +2,7 @@ hlsl.max.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input1' (layout(location=0 ) in 4-component vector of float) 0:2 'input2' (layout(location=1 ) in 4-component vector of float) @@ -26,7 +26,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input1' (layout(location=0 ) in 4-component vector of float) 0:2 'input2' (layout(location=1 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index 35ecaf50..cec78986 100755 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -1,7 +1,7 @@ hlsl.multiEntry.vert Shader version: 450 0:? Sequence -0:4 Function Definition: FakeEntrypoint(u1; (global 4-component vector of float) +0:4 Function Definition: FakeEntrypoint(u1; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'Index' (in uint) 0:? Sequence @@ -10,14 +10,14 @@ Shader version: 450 0:5 'Position' (uniform samplerBuffer) 0:5 Convert uint to int (temp int) 0:5 'Index' (in uint) -0:9 Function Definition: RealEntrypoint(u1; (global 4-component vector of float Position) +0:9 Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position) 0:9 Function Parameters: 0:9 'Index' (in uint VertexIndex) 0:? Sequence 0:10 Sequence 0:10 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (out 4-component vector of float Position) -0:10 Function Call: FakeEntrypoint(u1; (global 4-component vector of float) +0:10 Function Call: FakeEntrypoint(u1; (temp 4-component vector of float) 0:10 'Index' (in uint VertexIndex) 0:10 Branch: Return 0:? Linker Objects @@ -31,7 +31,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:4 Function Definition: FakeEntrypoint(u1; (global 4-component vector of float) +0:4 Function Definition: FakeEntrypoint(u1; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'Index' (in uint) 0:? Sequence @@ -40,14 +40,14 @@ Shader version: 450 0:5 'Position' (uniform samplerBuffer) 0:5 Convert uint to int (temp int) 0:5 'Index' (in uint) -0:9 Function Definition: RealEntrypoint(u1; (global 4-component vector of float Position) +0:9 Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position) 0:9 Function Parameters: 0:9 'Index' (in uint VertexIndex) 0:? Sequence 0:10 Sequence 0:10 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (out 4-component vector of float Position) -0:10 Function Call: FakeEntrypoint(u1; (global 4-component vector of float) +0:10 Function Call: FakeEntrypoint(u1; (temp 4-component vector of float) 0:10 'Index' (in uint VertexIndex) 0:10 Branch: Return 0:? Linker Objects diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out index 168065bb..6d192c0a 100644 --- a/Test/baseResults/hlsl.numericsuffixes.frag.out +++ b/Test/baseResults/hlsl.numericsuffixes.frag.out @@ -2,7 +2,7 @@ hlsl.numericsuffixes.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:5 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:5 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:5 Function Parameters: 0:? Sequence 0:7 Sequence @@ -77,7 +77,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:5 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:5 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:5 Function Parameters: 0:? Sequence 0:7 Sequence diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out index 0e0f4707..4eed1a3f 100755 --- a/Test/baseResults/hlsl.overload.frag.out +++ b/Test/baseResults/hlsl.overload.frag.out @@ -2,349 +2,349 @@ hlsl.overload.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: foo1(d1;b1; (global void) +0:2 Function Definition: foo1(d1;b1; (temp void) 0:2 Function Parameters: 0:2 'a' (in double) 0:2 'b' (in bool) -0:3 Function Definition: foo1(d1;u1; (global void) +0:3 Function Definition: foo1(d1;u1; (temp void) 0:3 Function Parameters: 0:3 'a' (in double) 0:3 'b' (in uint) -0:4 Function Definition: foo1(d1;i1; (global void) +0:4 Function Definition: foo1(d1;i1; (temp void) 0:4 Function Parameters: 0:4 'a' (in double) 0:4 'b' (in int) -0:5 Function Definition: foo1(d1;f1; (global void) +0:5 Function Definition: foo1(d1;f1; (temp void) 0:5 Function Parameters: 0:5 'a' (in double) 0:5 'b' (in float) -0:6 Function Definition: foo1(d1;d1; (global void) +0:6 Function Definition: foo1(d1;d1; (temp void) 0:6 Function Parameters: 0:6 'a' (in double) 0:6 'b' (in double) -0:9 Function Definition: foo2(i1;b1; (global void) +0:9 Function Definition: foo2(i1;b1; (temp void) 0:9 Function Parameters: 0:9 'a' (in int) 0:9 'b' (in bool) -0:10 Function Definition: foo2(i1;u1; (global void) +0:10 Function Definition: foo2(i1;u1; (temp void) 0:10 Function Parameters: 0:10 'a' (in int) 0:10 'b' (in uint) -0:11 Function Definition: foo2(i1;i1; (global void) +0:11 Function Definition: foo2(i1;i1; (temp void) 0:11 Function Parameters: 0:11 'a' (in int) 0:11 'b' (in int) -0:12 Function Definition: foo2(i1;f1; (global void) +0:12 Function Definition: foo2(i1;f1; (temp void) 0:12 Function Parameters: 0:12 'a' (in int) 0:12 'b' (in float) -0:13 Function Definition: foo2(i1;d1; (global void) +0:13 Function Definition: foo2(i1;d1; (temp void) 0:13 Function Parameters: 0:13 'a' (in int) 0:13 'b' (in double) -0:16 Function Definition: foo3(b1; (global void) +0:16 Function Definition: foo3(b1; (temp void) 0:16 Function Parameters: 0:16 'b' (in bool) -0:17 Function Definition: foo4(u1; (global void) +0:17 Function Definition: foo4(u1; (temp void) 0:17 Function Parameters: 0:17 'b' (in uint) -0:18 Function Definition: foo5(i1; (global void) +0:18 Function Definition: foo5(i1; (temp void) 0:18 Function Parameters: 0:18 'b' (in int) -0:19 Function Definition: foo6(f1; (global void) +0:19 Function Definition: foo6(f1; (temp void) 0:19 Function Parameters: 0:19 'b' (in float) -0:20 Function Definition: foo7(d1; (global void) +0:20 Function Definition: foo7(d1; (temp void) 0:20 Function Parameters: 0:20 'b' (in double) -0:23 Function Definition: foo8(f1; (global void) +0:23 Function Definition: foo8(f1; (temp void) 0:23 Function Parameters: 0:23 '' (in float) -0:24 Function Definition: foo8(d1; (global void) +0:24 Function Definition: foo8(d1; (temp void) 0:24 Function Parameters: 0:24 '' (in double) -0:25 Function Definition: foo9(i1; (global void) +0:25 Function Definition: foo9(i1; (temp void) 0:25 Function Parameters: 0:25 '' (in int) -0:26 Function Definition: foo9(u1; (global void) +0:26 Function Definition: foo9(u1; (temp void) 0:26 Function Parameters: 0:26 '' (in uint) -0:27 Function Definition: foo10(b1; (global void) +0:27 Function Definition: foo10(b1; (temp void) 0:27 Function Parameters: 0:27 '' (in bool) -0:28 Function Definition: foo10(i1; (global void) +0:28 Function Definition: foo10(i1; (temp void) 0:28 Function Parameters: 0:28 '' (in int) -0:31 Function Definition: foo11(vf3; (global void) +0:31 Function Definition: foo11(vf3; (temp void) 0:31 Function Parameters: 0:31 '' (in 3-component vector of float) -0:32 Function Definition: foo11(d1; (global void) +0:32 Function Definition: foo11(d1; (temp void) 0:32 Function Parameters: 0:32 '' (in double) -0:33 Function Definition: foo11(vi3; (global void) +0:33 Function Definition: foo11(vi3; (temp void) 0:33 Function Parameters: 0:33 '' (in 3-component vector of int) -0:34 Function Definition: foo11(u1; (global void) +0:34 Function Definition: foo11(u1; (temp void) 0:34 Function Parameters: 0:34 '' (in uint) -0:35 Function Definition: foo12(vf1; (global void) +0:35 Function Definition: foo12(vf1; (temp void) 0:35 Function Parameters: 0:35 '' (in 1-component vector of float) -0:36 Function Definition: foo12(vd3; (global void) +0:36 Function Definition: foo12(vd3; (temp void) 0:36 Function Parameters: 0:36 '' (in 3-component vector of double) -0:37 Function Definition: foo16(u1; (global void) +0:37 Function Definition: foo16(u1; (temp void) 0:37 Function Parameters: 0:37 '' (in uint) -0:38 Function Definition: foo16(vu2; (global void) +0:38 Function Definition: foo16(vu2; (temp void) 0:38 Function Parameters: 0:38 '' (in 2-component vector of uint) -0:41 Function Definition: foo13(vf3; (global void) +0:41 Function Definition: foo13(vf3; (temp void) 0:41 Function Parameters: 0:41 '' (in 3-component vector of float) -0:42 Function Definition: foo14(vi1; (global void) +0:42 Function Definition: foo14(vi1; (temp void) 0:42 Function Parameters: 0:42 '' (in 1-component vector of int) -0:43 Function Definition: foo15(vb1; (global void) +0:43 Function Definition: foo15(vb1; (temp void) 0:43 Function Parameters: 0:43 '' (in 1-component vector of bool) -0:46 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:46 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:46 Function Parameters: 0:46 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:53 Function Call: foo1(d1;b1; (global void) +0:53 Function Call: foo1(d1;b1; (temp void) 0:53 'd' (temp double) 0:53 'b' (temp bool) -0:54 Function Call: foo1(d1;d1; (global void) +0:54 Function Call: foo1(d1;d1; (temp void) 0:54 'd' (temp double) 0:54 'd' (temp double) -0:55 Function Call: foo1(d1;u1; (global void) +0:55 Function Call: foo1(d1;u1; (temp void) 0:55 'd' (temp double) 0:55 'u' (temp uint) -0:56 Function Call: foo1(d1;i1; (global void) +0:56 Function Call: foo1(d1;i1; (temp void) 0:56 'd' (temp double) 0:56 'i' (temp int) -0:57 Function Call: foo1(d1;f1; (global void) +0:57 Function Call: foo1(d1;f1; (temp void) 0:57 'd' (temp double) 0:57 'f' (temp float) -0:59 Function Call: foo1(d1;b1; (global void) +0:59 Function Call: foo1(d1;b1; (temp void) 0:59 Convert float to double (temp double) 0:59 'f' (temp float) 0:59 'b' (temp bool) -0:60 Function Call: foo1(d1;d1; (global void) +0:60 Function Call: foo1(d1;d1; (temp void) 0:60 Convert float to double (temp double) 0:60 'f' (temp float) 0:60 'd' (temp double) -0:61 Function Call: foo1(d1;u1; (global void) +0:61 Function Call: foo1(d1;u1; (temp void) 0:61 Convert float to double (temp double) 0:61 'f' (temp float) 0:61 'u' (temp uint) -0:62 Function Call: foo1(d1;i1; (global void) +0:62 Function Call: foo1(d1;i1; (temp void) 0:62 Convert float to double (temp double) 0:62 'f' (temp float) 0:62 'i' (temp int) -0:63 Function Call: foo1(d1;f1; (global void) +0:63 Function Call: foo1(d1;f1; (temp void) 0:63 Convert float to double (temp double) 0:63 'f' (temp float) 0:63 'f' (temp float) -0:65 Function Call: foo1(d1;b1; (global void) +0:65 Function Call: foo1(d1;b1; (temp void) 0:65 Convert uint to double (temp double) 0:65 'u' (temp uint) 0:65 'b' (temp bool) -0:66 Function Call: foo1(d1;d1; (global void) +0:66 Function Call: foo1(d1;d1; (temp void) 0:66 Convert uint to double (temp double) 0:66 'u' (temp uint) 0:66 'd' (temp double) -0:67 Function Call: foo1(d1;u1; (global void) +0:67 Function Call: foo1(d1;u1; (temp void) 0:67 Convert uint to double (temp double) 0:67 'u' (temp uint) 0:67 'u' (temp uint) -0:68 Function Call: foo1(d1;i1; (global void) +0:68 Function Call: foo1(d1;i1; (temp void) 0:68 Convert uint to double (temp double) 0:68 'u' (temp uint) 0:68 'i' (temp int) -0:69 Function Call: foo1(d1;f1; (global void) +0:69 Function Call: foo1(d1;f1; (temp void) 0:69 Convert uint to double (temp double) 0:69 'u' (temp uint) 0:69 'f' (temp float) -0:71 Function Call: foo1(d1;b1; (global void) +0:71 Function Call: foo1(d1;b1; (temp void) 0:71 Convert int to double (temp double) 0:71 'i' (temp int) 0:71 'b' (temp bool) -0:72 Function Call: foo1(d1;d1; (global void) +0:72 Function Call: foo1(d1;d1; (temp void) 0:72 Convert int to double (temp double) 0:72 'i' (temp int) 0:72 'd' (temp double) -0:73 Function Call: foo1(d1;u1; (global void) +0:73 Function Call: foo1(d1;u1; (temp void) 0:73 Convert int to double (temp double) 0:73 'i' (temp int) 0:73 'u' (temp uint) -0:74 Function Call: foo1(d1;i1; (global void) +0:74 Function Call: foo1(d1;i1; (temp void) 0:74 Convert int to double (temp double) 0:74 'i' (temp int) 0:74 'i' (temp int) -0:75 Function Call: foo1(d1;f1; (global void) +0:75 Function Call: foo1(d1;f1; (temp void) 0:75 Convert int to double (temp double) 0:75 'i' (temp int) 0:75 'f' (temp float) -0:77 Function Call: foo2(i1;b1; (global void) +0:77 Function Call: foo2(i1;b1; (temp void) 0:77 Convert uint to int (temp int) 0:77 'u' (temp uint) 0:77 'b' (temp bool) -0:78 Function Call: foo2(i1;d1; (global void) +0:78 Function Call: foo2(i1;d1; (temp void) 0:78 Convert uint to int (temp int) 0:78 'u' (temp uint) 0:78 'd' (temp double) -0:79 Function Call: foo2(i1;u1; (global void) +0:79 Function Call: foo2(i1;u1; (temp void) 0:79 Convert uint to int (temp int) 0:79 'u' (temp uint) 0:79 'u' (temp uint) -0:80 Function Call: foo2(i1;i1; (global void) +0:80 Function Call: foo2(i1;i1; (temp void) 0:80 Convert uint to int (temp int) 0:80 'u' (temp uint) 0:80 'i' (temp int) -0:81 Function Call: foo2(i1;f1; (global void) +0:81 Function Call: foo2(i1;f1; (temp void) 0:81 Convert uint to int (temp int) 0:81 'u' (temp uint) 0:81 'f' (temp float) -0:83 Function Call: foo2(i1;b1; (global void) +0:83 Function Call: foo2(i1;b1; (temp void) 0:83 'i' (temp int) 0:83 'b' (temp bool) -0:84 Function Call: foo2(i1;d1; (global void) +0:84 Function Call: foo2(i1;d1; (temp void) 0:84 'i' (temp int) 0:84 'd' (temp double) -0:85 Function Call: foo2(i1;u1; (global void) +0:85 Function Call: foo2(i1;u1; (temp void) 0:85 'i' (temp int) 0:85 'u' (temp uint) -0:86 Function Call: foo2(i1;i1; (global void) +0:86 Function Call: foo2(i1;i1; (temp void) 0:86 'i' (temp int) 0:86 'i' (temp int) -0:87 Function Call: foo2(i1;f1; (global void) +0:87 Function Call: foo2(i1;f1; (temp void) 0:87 'i' (temp int) 0:87 'f' (temp float) -0:89 Function Call: foo3(b1; (global void) +0:89 Function Call: foo3(b1; (temp void) 0:89 'b' (temp bool) -0:90 Function Call: foo3(b1; (global void) +0:90 Function Call: foo3(b1; (temp void) 0:90 Convert double to bool (temp bool) 0:90 'd' (temp double) -0:91 Function Call: foo3(b1; (global void) +0:91 Function Call: foo3(b1; (temp void) 0:91 Convert uint to bool (temp bool) 0:91 'u' (temp uint) -0:92 Function Call: foo3(b1; (global void) +0:92 Function Call: foo3(b1; (temp void) 0:92 Convert int to bool (temp bool) 0:92 'i' (temp int) -0:93 Function Call: foo3(b1; (global void) +0:93 Function Call: foo3(b1; (temp void) 0:93 Convert float to bool (temp bool) 0:93 'f' (temp float) -0:95 Function Call: foo4(u1; (global void) +0:95 Function Call: foo4(u1; (temp void) 0:95 Convert bool to uint (temp uint) 0:95 'b' (temp bool) -0:96 Function Call: foo4(u1; (global void) +0:96 Function Call: foo4(u1; (temp void) 0:96 Convert double to uint (temp uint) 0:96 'd' (temp double) -0:97 Function Call: foo4(u1; (global void) +0:97 Function Call: foo4(u1; (temp void) 0:97 'u' (temp uint) -0:98 Function Call: foo4(u1; (global void) +0:98 Function Call: foo4(u1; (temp void) 0:98 Convert int to uint (temp uint) 0:98 'i' (temp int) -0:99 Function Call: foo4(u1; (global void) +0:99 Function Call: foo4(u1; (temp void) 0:99 Convert float to uint (temp uint) 0:99 'f' (temp float) -0:101 Function Call: foo5(i1; (global void) +0:101 Function Call: foo5(i1; (temp void) 0:101 Convert bool to int (temp int) 0:101 'b' (temp bool) -0:102 Function Call: foo5(i1; (global void) +0:102 Function Call: foo5(i1; (temp void) 0:102 Convert double to int (temp int) 0:102 'd' (temp double) -0:103 Function Call: foo5(i1; (global void) +0:103 Function Call: foo5(i1; (temp void) 0:103 Convert uint to int (temp int) 0:103 'u' (temp uint) -0:104 Function Call: foo5(i1; (global void) +0:104 Function Call: foo5(i1; (temp void) 0:104 'i' (temp int) -0:105 Function Call: foo5(i1; (global void) +0:105 Function Call: foo5(i1; (temp void) 0:105 Convert float to int (temp int) 0:105 'f' (temp float) -0:107 Function Call: foo6(f1; (global void) +0:107 Function Call: foo6(f1; (temp void) 0:107 Convert bool to float (temp float) 0:107 'b' (temp bool) -0:108 Function Call: foo6(f1; (global void) +0:108 Function Call: foo6(f1; (temp void) 0:108 Convert double to float (temp float) 0:108 'd' (temp double) -0:109 Function Call: foo6(f1; (global void) +0:109 Function Call: foo6(f1; (temp void) 0:109 Convert uint to float (temp float) 0:109 'u' (temp uint) -0:110 Function Call: foo6(f1; (global void) +0:110 Function Call: foo6(f1; (temp void) 0:110 Convert int to float (temp float) 0:110 'i' (temp int) -0:111 Function Call: foo6(f1; (global void) +0:111 Function Call: foo6(f1; (temp void) 0:111 'f' (temp float) -0:113 Function Call: foo7(d1; (global void) +0:113 Function Call: foo7(d1; (temp void) 0:113 Convert bool to double (temp double) 0:113 'b' (temp bool) -0:114 Function Call: foo7(d1; (global void) +0:114 Function Call: foo7(d1; (temp void) 0:114 'd' (temp double) -0:115 Function Call: foo7(d1; (global void) +0:115 Function Call: foo7(d1; (temp void) 0:115 Convert uint to double (temp double) 0:115 'u' (temp uint) -0:116 Function Call: foo7(d1; (global void) +0:116 Function Call: foo7(d1; (temp void) 0:116 Convert int to double (temp double) 0:116 'i' (temp int) -0:117 Function Call: foo7(d1; (global void) +0:117 Function Call: foo7(d1; (temp void) 0:117 Convert float to double (temp double) 0:117 'f' (temp float) -0:119 Function Call: foo8(f1; (global void) +0:119 Function Call: foo8(f1; (temp void) 0:119 Convert bool to float (temp float) 0:119 'b' (temp bool) -0:120 Function Call: foo8(f1; (global void) +0:120 Function Call: foo8(f1; (temp void) 0:120 Convert uint to float (temp float) 0:120 'u' (temp uint) -0:121 Function Call: foo8(f1; (global void) +0:121 Function Call: foo8(f1; (temp void) 0:121 Convert int to float (temp float) 0:121 'i' (temp int) -0:123 Function Call: foo9(i1; (global void) +0:123 Function Call: foo9(i1; (temp void) 0:123 Convert bool to int (temp int) 0:123 'b' (temp bool) -0:124 Function Call: foo9(u1; (global void) +0:124 Function Call: foo9(u1; (temp void) 0:124 Convert float to uint (temp uint) 0:124 'f' (temp float) -0:125 Function Call: foo9(u1; (global void) +0:125 Function Call: foo9(u1; (temp void) 0:125 Convert double to uint (temp uint) 0:125 'd' (temp double) -0:127 Function Call: foo10(i1; (global void) +0:127 Function Call: foo10(i1; (temp void) 0:127 Convert uint to int (temp int) 0:127 'u' (temp uint) -0:128 Function Call: foo10(i1; (global void) +0:128 Function Call: foo10(i1; (temp void) 0:128 Convert float to int (temp int) 0:128 'f' (temp float) -0:129 Function Call: foo10(i1; (global void) +0:129 Function Call: foo10(i1; (temp void) 0:129 Convert double to int (temp int) 0:129 'd' (temp double) -0:131 Function Call: foo11(u1; (global void) +0:131 Function Call: foo11(u1; (temp void) 0:131 Convert bool to uint (temp uint) 0:131 'b' (temp bool) -0:132 Function Call: foo11(d1; (global void) +0:132 Function Call: foo11(d1; (temp void) 0:132 Convert float to double (temp double) 0:132 'f' (temp float) -0:133 Function Call: foo12(vd3; (global void) +0:133 Function Call: foo12(vd3; (temp void) 0:133 Convert float to double (temp 3-component vector of double) 0:133 Construct vec3 (temp 3-component vector of float) 0:133 'f' (temp float) -0:134 Function Call: foo16(vu2; (global void) +0:134 Function Call: foo16(vu2; (temp void) 0:? Convert int to uint (temp 2-component vector of uint) 0:? Construct ivec2 (temp 2-component vector of int) 0:134 'i' (temp int) 0:134 'i' (temp int) -0:136 Function Call: foo13(vf3; (global void) +0:136 Function Call: foo13(vf3; (temp void) 0:136 Construct vec3 (in 3-component vector of float) 0:136 'f' (temp float) -0:137 Function Call: foo14(vi1; (global void) +0:137 Function Call: foo14(vi1; (temp void) 0:137 Construct int (in 1-component vector of int) 0:137 Construct ivec4 (temp 4-component vector of int) 0:137 'i' (temp int) -0:138 Function Call: foo15(vb1; (global void) +0:138 Function Call: foo15(vb1; (temp void) 0:138 Construct bool (in 1-component vector of bool) 0:138 'b' (temp bool) -0:139 Function Call: foo15(vb1; (global void) +0:139 Function Call: foo15(vb1; (temp void) 0:139 Construct bool (in 1-component vector of bool) 0:139 Construct bvec3 (temp 3-component vector of bool) 0:139 'b' (temp bool) @@ -364,349 +364,349 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: foo1(d1;b1; (global void) +0:2 Function Definition: foo1(d1;b1; (temp void) 0:2 Function Parameters: 0:2 'a' (in double) 0:2 'b' (in bool) -0:3 Function Definition: foo1(d1;u1; (global void) +0:3 Function Definition: foo1(d1;u1; (temp void) 0:3 Function Parameters: 0:3 'a' (in double) 0:3 'b' (in uint) -0:4 Function Definition: foo1(d1;i1; (global void) +0:4 Function Definition: foo1(d1;i1; (temp void) 0:4 Function Parameters: 0:4 'a' (in double) 0:4 'b' (in int) -0:5 Function Definition: foo1(d1;f1; (global void) +0:5 Function Definition: foo1(d1;f1; (temp void) 0:5 Function Parameters: 0:5 'a' (in double) 0:5 'b' (in float) -0:6 Function Definition: foo1(d1;d1; (global void) +0:6 Function Definition: foo1(d1;d1; (temp void) 0:6 Function Parameters: 0:6 'a' (in double) 0:6 'b' (in double) -0:9 Function Definition: foo2(i1;b1; (global void) +0:9 Function Definition: foo2(i1;b1; (temp void) 0:9 Function Parameters: 0:9 'a' (in int) 0:9 'b' (in bool) -0:10 Function Definition: foo2(i1;u1; (global void) +0:10 Function Definition: foo2(i1;u1; (temp void) 0:10 Function Parameters: 0:10 'a' (in int) 0:10 'b' (in uint) -0:11 Function Definition: foo2(i1;i1; (global void) +0:11 Function Definition: foo2(i1;i1; (temp void) 0:11 Function Parameters: 0:11 'a' (in int) 0:11 'b' (in int) -0:12 Function Definition: foo2(i1;f1; (global void) +0:12 Function Definition: foo2(i1;f1; (temp void) 0:12 Function Parameters: 0:12 'a' (in int) 0:12 'b' (in float) -0:13 Function Definition: foo2(i1;d1; (global void) +0:13 Function Definition: foo2(i1;d1; (temp void) 0:13 Function Parameters: 0:13 'a' (in int) 0:13 'b' (in double) -0:16 Function Definition: foo3(b1; (global void) +0:16 Function Definition: foo3(b1; (temp void) 0:16 Function Parameters: 0:16 'b' (in bool) -0:17 Function Definition: foo4(u1; (global void) +0:17 Function Definition: foo4(u1; (temp void) 0:17 Function Parameters: 0:17 'b' (in uint) -0:18 Function Definition: foo5(i1; (global void) +0:18 Function Definition: foo5(i1; (temp void) 0:18 Function Parameters: 0:18 'b' (in int) -0:19 Function Definition: foo6(f1; (global void) +0:19 Function Definition: foo6(f1; (temp void) 0:19 Function Parameters: 0:19 'b' (in float) -0:20 Function Definition: foo7(d1; (global void) +0:20 Function Definition: foo7(d1; (temp void) 0:20 Function Parameters: 0:20 'b' (in double) -0:23 Function Definition: foo8(f1; (global void) +0:23 Function Definition: foo8(f1; (temp void) 0:23 Function Parameters: 0:23 '' (in float) -0:24 Function Definition: foo8(d1; (global void) +0:24 Function Definition: foo8(d1; (temp void) 0:24 Function Parameters: 0:24 '' (in double) -0:25 Function Definition: foo9(i1; (global void) +0:25 Function Definition: foo9(i1; (temp void) 0:25 Function Parameters: 0:25 '' (in int) -0:26 Function Definition: foo9(u1; (global void) +0:26 Function Definition: foo9(u1; (temp void) 0:26 Function Parameters: 0:26 '' (in uint) -0:27 Function Definition: foo10(b1; (global void) +0:27 Function Definition: foo10(b1; (temp void) 0:27 Function Parameters: 0:27 '' (in bool) -0:28 Function Definition: foo10(i1; (global void) +0:28 Function Definition: foo10(i1; (temp void) 0:28 Function Parameters: 0:28 '' (in int) -0:31 Function Definition: foo11(vf3; (global void) +0:31 Function Definition: foo11(vf3; (temp void) 0:31 Function Parameters: 0:31 '' (in 3-component vector of float) -0:32 Function Definition: foo11(d1; (global void) +0:32 Function Definition: foo11(d1; (temp void) 0:32 Function Parameters: 0:32 '' (in double) -0:33 Function Definition: foo11(vi3; (global void) +0:33 Function Definition: foo11(vi3; (temp void) 0:33 Function Parameters: 0:33 '' (in 3-component vector of int) -0:34 Function Definition: foo11(u1; (global void) +0:34 Function Definition: foo11(u1; (temp void) 0:34 Function Parameters: 0:34 '' (in uint) -0:35 Function Definition: foo12(vf1; (global void) +0:35 Function Definition: foo12(vf1; (temp void) 0:35 Function Parameters: 0:35 '' (in 1-component vector of float) -0:36 Function Definition: foo12(vd3; (global void) +0:36 Function Definition: foo12(vd3; (temp void) 0:36 Function Parameters: 0:36 '' (in 3-component vector of double) -0:37 Function Definition: foo16(u1; (global void) +0:37 Function Definition: foo16(u1; (temp void) 0:37 Function Parameters: 0:37 '' (in uint) -0:38 Function Definition: foo16(vu2; (global void) +0:38 Function Definition: foo16(vu2; (temp void) 0:38 Function Parameters: 0:38 '' (in 2-component vector of uint) -0:41 Function Definition: foo13(vf3; (global void) +0:41 Function Definition: foo13(vf3; (temp void) 0:41 Function Parameters: 0:41 '' (in 3-component vector of float) -0:42 Function Definition: foo14(vi1; (global void) +0:42 Function Definition: foo14(vi1; (temp void) 0:42 Function Parameters: 0:42 '' (in 1-component vector of int) -0:43 Function Definition: foo15(vb1; (global void) +0:43 Function Definition: foo15(vb1; (temp void) 0:43 Function Parameters: 0:43 '' (in 1-component vector of bool) -0:46 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:46 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:46 Function Parameters: 0:46 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:53 Function Call: foo1(d1;b1; (global void) +0:53 Function Call: foo1(d1;b1; (temp void) 0:53 'd' (temp double) 0:53 'b' (temp bool) -0:54 Function Call: foo1(d1;d1; (global void) +0:54 Function Call: foo1(d1;d1; (temp void) 0:54 'd' (temp double) 0:54 'd' (temp double) -0:55 Function Call: foo1(d1;u1; (global void) +0:55 Function Call: foo1(d1;u1; (temp void) 0:55 'd' (temp double) 0:55 'u' (temp uint) -0:56 Function Call: foo1(d1;i1; (global void) +0:56 Function Call: foo1(d1;i1; (temp void) 0:56 'd' (temp double) 0:56 'i' (temp int) -0:57 Function Call: foo1(d1;f1; (global void) +0:57 Function Call: foo1(d1;f1; (temp void) 0:57 'd' (temp double) 0:57 'f' (temp float) -0:59 Function Call: foo1(d1;b1; (global void) +0:59 Function Call: foo1(d1;b1; (temp void) 0:59 Convert float to double (temp double) 0:59 'f' (temp float) 0:59 'b' (temp bool) -0:60 Function Call: foo1(d1;d1; (global void) +0:60 Function Call: foo1(d1;d1; (temp void) 0:60 Convert float to double (temp double) 0:60 'f' (temp float) 0:60 'd' (temp double) -0:61 Function Call: foo1(d1;u1; (global void) +0:61 Function Call: foo1(d1;u1; (temp void) 0:61 Convert float to double (temp double) 0:61 'f' (temp float) 0:61 'u' (temp uint) -0:62 Function Call: foo1(d1;i1; (global void) +0:62 Function Call: foo1(d1;i1; (temp void) 0:62 Convert float to double (temp double) 0:62 'f' (temp float) 0:62 'i' (temp int) -0:63 Function Call: foo1(d1;f1; (global void) +0:63 Function Call: foo1(d1;f1; (temp void) 0:63 Convert float to double (temp double) 0:63 'f' (temp float) 0:63 'f' (temp float) -0:65 Function Call: foo1(d1;b1; (global void) +0:65 Function Call: foo1(d1;b1; (temp void) 0:65 Convert uint to double (temp double) 0:65 'u' (temp uint) 0:65 'b' (temp bool) -0:66 Function Call: foo1(d1;d1; (global void) +0:66 Function Call: foo1(d1;d1; (temp void) 0:66 Convert uint to double (temp double) 0:66 'u' (temp uint) 0:66 'd' (temp double) -0:67 Function Call: foo1(d1;u1; (global void) +0:67 Function Call: foo1(d1;u1; (temp void) 0:67 Convert uint to double (temp double) 0:67 'u' (temp uint) 0:67 'u' (temp uint) -0:68 Function Call: foo1(d1;i1; (global void) +0:68 Function Call: foo1(d1;i1; (temp void) 0:68 Convert uint to double (temp double) 0:68 'u' (temp uint) 0:68 'i' (temp int) -0:69 Function Call: foo1(d1;f1; (global void) +0:69 Function Call: foo1(d1;f1; (temp void) 0:69 Convert uint to double (temp double) 0:69 'u' (temp uint) 0:69 'f' (temp float) -0:71 Function Call: foo1(d1;b1; (global void) +0:71 Function Call: foo1(d1;b1; (temp void) 0:71 Convert int to double (temp double) 0:71 'i' (temp int) 0:71 'b' (temp bool) -0:72 Function Call: foo1(d1;d1; (global void) +0:72 Function Call: foo1(d1;d1; (temp void) 0:72 Convert int to double (temp double) 0:72 'i' (temp int) 0:72 'd' (temp double) -0:73 Function Call: foo1(d1;u1; (global void) +0:73 Function Call: foo1(d1;u1; (temp void) 0:73 Convert int to double (temp double) 0:73 'i' (temp int) 0:73 'u' (temp uint) -0:74 Function Call: foo1(d1;i1; (global void) +0:74 Function Call: foo1(d1;i1; (temp void) 0:74 Convert int to double (temp double) 0:74 'i' (temp int) 0:74 'i' (temp int) -0:75 Function Call: foo1(d1;f1; (global void) +0:75 Function Call: foo1(d1;f1; (temp void) 0:75 Convert int to double (temp double) 0:75 'i' (temp int) 0:75 'f' (temp float) -0:77 Function Call: foo2(i1;b1; (global void) +0:77 Function Call: foo2(i1;b1; (temp void) 0:77 Convert uint to int (temp int) 0:77 'u' (temp uint) 0:77 'b' (temp bool) -0:78 Function Call: foo2(i1;d1; (global void) +0:78 Function Call: foo2(i1;d1; (temp void) 0:78 Convert uint to int (temp int) 0:78 'u' (temp uint) 0:78 'd' (temp double) -0:79 Function Call: foo2(i1;u1; (global void) +0:79 Function Call: foo2(i1;u1; (temp void) 0:79 Convert uint to int (temp int) 0:79 'u' (temp uint) 0:79 'u' (temp uint) -0:80 Function Call: foo2(i1;i1; (global void) +0:80 Function Call: foo2(i1;i1; (temp void) 0:80 Convert uint to int (temp int) 0:80 'u' (temp uint) 0:80 'i' (temp int) -0:81 Function Call: foo2(i1;f1; (global void) +0:81 Function Call: foo2(i1;f1; (temp void) 0:81 Convert uint to int (temp int) 0:81 'u' (temp uint) 0:81 'f' (temp float) -0:83 Function Call: foo2(i1;b1; (global void) +0:83 Function Call: foo2(i1;b1; (temp void) 0:83 'i' (temp int) 0:83 'b' (temp bool) -0:84 Function Call: foo2(i1;d1; (global void) +0:84 Function Call: foo2(i1;d1; (temp void) 0:84 'i' (temp int) 0:84 'd' (temp double) -0:85 Function Call: foo2(i1;u1; (global void) +0:85 Function Call: foo2(i1;u1; (temp void) 0:85 'i' (temp int) 0:85 'u' (temp uint) -0:86 Function Call: foo2(i1;i1; (global void) +0:86 Function Call: foo2(i1;i1; (temp void) 0:86 'i' (temp int) 0:86 'i' (temp int) -0:87 Function Call: foo2(i1;f1; (global void) +0:87 Function Call: foo2(i1;f1; (temp void) 0:87 'i' (temp int) 0:87 'f' (temp float) -0:89 Function Call: foo3(b1; (global void) +0:89 Function Call: foo3(b1; (temp void) 0:89 'b' (temp bool) -0:90 Function Call: foo3(b1; (global void) +0:90 Function Call: foo3(b1; (temp void) 0:90 Convert double to bool (temp bool) 0:90 'd' (temp double) -0:91 Function Call: foo3(b1; (global void) +0:91 Function Call: foo3(b1; (temp void) 0:91 Convert uint to bool (temp bool) 0:91 'u' (temp uint) -0:92 Function Call: foo3(b1; (global void) +0:92 Function Call: foo3(b1; (temp void) 0:92 Convert int to bool (temp bool) 0:92 'i' (temp int) -0:93 Function Call: foo3(b1; (global void) +0:93 Function Call: foo3(b1; (temp void) 0:93 Convert float to bool (temp bool) 0:93 'f' (temp float) -0:95 Function Call: foo4(u1; (global void) +0:95 Function Call: foo4(u1; (temp void) 0:95 Convert bool to uint (temp uint) 0:95 'b' (temp bool) -0:96 Function Call: foo4(u1; (global void) +0:96 Function Call: foo4(u1; (temp void) 0:96 Convert double to uint (temp uint) 0:96 'd' (temp double) -0:97 Function Call: foo4(u1; (global void) +0:97 Function Call: foo4(u1; (temp void) 0:97 'u' (temp uint) -0:98 Function Call: foo4(u1; (global void) +0:98 Function Call: foo4(u1; (temp void) 0:98 Convert int to uint (temp uint) 0:98 'i' (temp int) -0:99 Function Call: foo4(u1; (global void) +0:99 Function Call: foo4(u1; (temp void) 0:99 Convert float to uint (temp uint) 0:99 'f' (temp float) -0:101 Function Call: foo5(i1; (global void) +0:101 Function Call: foo5(i1; (temp void) 0:101 Convert bool to int (temp int) 0:101 'b' (temp bool) -0:102 Function Call: foo5(i1; (global void) +0:102 Function Call: foo5(i1; (temp void) 0:102 Convert double to int (temp int) 0:102 'd' (temp double) -0:103 Function Call: foo5(i1; (global void) +0:103 Function Call: foo5(i1; (temp void) 0:103 Convert uint to int (temp int) 0:103 'u' (temp uint) -0:104 Function Call: foo5(i1; (global void) +0:104 Function Call: foo5(i1; (temp void) 0:104 'i' (temp int) -0:105 Function Call: foo5(i1; (global void) +0:105 Function Call: foo5(i1; (temp void) 0:105 Convert float to int (temp int) 0:105 'f' (temp float) -0:107 Function Call: foo6(f1; (global void) +0:107 Function Call: foo6(f1; (temp void) 0:107 Convert bool to float (temp float) 0:107 'b' (temp bool) -0:108 Function Call: foo6(f1; (global void) +0:108 Function Call: foo6(f1; (temp void) 0:108 Convert double to float (temp float) 0:108 'd' (temp double) -0:109 Function Call: foo6(f1; (global void) +0:109 Function Call: foo6(f1; (temp void) 0:109 Convert uint to float (temp float) 0:109 'u' (temp uint) -0:110 Function Call: foo6(f1; (global void) +0:110 Function Call: foo6(f1; (temp void) 0:110 Convert int to float (temp float) 0:110 'i' (temp int) -0:111 Function Call: foo6(f1; (global void) +0:111 Function Call: foo6(f1; (temp void) 0:111 'f' (temp float) -0:113 Function Call: foo7(d1; (global void) +0:113 Function Call: foo7(d1; (temp void) 0:113 Convert bool to double (temp double) 0:113 'b' (temp bool) -0:114 Function Call: foo7(d1; (global void) +0:114 Function Call: foo7(d1; (temp void) 0:114 'd' (temp double) -0:115 Function Call: foo7(d1; (global void) +0:115 Function Call: foo7(d1; (temp void) 0:115 Convert uint to double (temp double) 0:115 'u' (temp uint) -0:116 Function Call: foo7(d1; (global void) +0:116 Function Call: foo7(d1; (temp void) 0:116 Convert int to double (temp double) 0:116 'i' (temp int) -0:117 Function Call: foo7(d1; (global void) +0:117 Function Call: foo7(d1; (temp void) 0:117 Convert float to double (temp double) 0:117 'f' (temp float) -0:119 Function Call: foo8(f1; (global void) +0:119 Function Call: foo8(f1; (temp void) 0:119 Convert bool to float (temp float) 0:119 'b' (temp bool) -0:120 Function Call: foo8(f1; (global void) +0:120 Function Call: foo8(f1; (temp void) 0:120 Convert uint to float (temp float) 0:120 'u' (temp uint) -0:121 Function Call: foo8(f1; (global void) +0:121 Function Call: foo8(f1; (temp void) 0:121 Convert int to float (temp float) 0:121 'i' (temp int) -0:123 Function Call: foo9(i1; (global void) +0:123 Function Call: foo9(i1; (temp void) 0:123 Convert bool to int (temp int) 0:123 'b' (temp bool) -0:124 Function Call: foo9(u1; (global void) +0:124 Function Call: foo9(u1; (temp void) 0:124 Convert float to uint (temp uint) 0:124 'f' (temp float) -0:125 Function Call: foo9(u1; (global void) +0:125 Function Call: foo9(u1; (temp void) 0:125 Convert double to uint (temp uint) 0:125 'd' (temp double) -0:127 Function Call: foo10(i1; (global void) +0:127 Function Call: foo10(i1; (temp void) 0:127 Convert uint to int (temp int) 0:127 'u' (temp uint) -0:128 Function Call: foo10(i1; (global void) +0:128 Function Call: foo10(i1; (temp void) 0:128 Convert float to int (temp int) 0:128 'f' (temp float) -0:129 Function Call: foo10(i1; (global void) +0:129 Function Call: foo10(i1; (temp void) 0:129 Convert double to int (temp int) 0:129 'd' (temp double) -0:131 Function Call: foo11(u1; (global void) +0:131 Function Call: foo11(u1; (temp void) 0:131 Convert bool to uint (temp uint) 0:131 'b' (temp bool) -0:132 Function Call: foo11(d1; (global void) +0:132 Function Call: foo11(d1; (temp void) 0:132 Convert float to double (temp double) 0:132 'f' (temp float) -0:133 Function Call: foo12(vd3; (global void) +0:133 Function Call: foo12(vd3; (temp void) 0:133 Convert float to double (temp 3-component vector of double) 0:133 Construct vec3 (temp 3-component vector of float) 0:133 'f' (temp float) -0:134 Function Call: foo16(vu2; (global void) +0:134 Function Call: foo16(vu2; (temp void) 0:? Convert int to uint (temp 2-component vector of uint) 0:? Construct ivec2 (temp 2-component vector of int) 0:134 'i' (temp int) 0:134 'i' (temp int) -0:136 Function Call: foo13(vf3; (global void) +0:136 Function Call: foo13(vf3; (temp void) 0:136 Construct vec3 (in 3-component vector of float) 0:136 'f' (temp float) -0:137 Function Call: foo14(vi1; (global void) +0:137 Function Call: foo14(vi1; (temp void) 0:137 Construct int (in 1-component vector of int) 0:137 Construct ivec4 (temp 4-component vector of int) 0:137 'i' (temp int) -0:138 Function Call: foo15(vb1; (global void) +0:138 Function Call: foo15(vb1; (temp void) 0:138 Construct bool (in 1-component vector of bool) 0:138 'b' (temp bool) -0:139 Function Call: foo15(vb1; (global void) +0:139 Function Call: foo15(vb1; (temp void) 0:139 Construct bool (in 1-component vector of bool) 0:139 Construct bvec3 (temp 3-component vector of bool) 0:139 'b' (temp bool) diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out index 95a2f25a..281b680b 100644 --- a/Test/baseResults/hlsl.pp.line.frag.out +++ b/Test/baseResults/hlsl.pp.line.frag.out @@ -2,7 +2,7 @@ hlsl.pp.line.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:4 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:4 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:4 Function Parameters: 0:? Sequence 0:124 Sequence @@ -57,7 +57,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:4 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:4 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:4 Function Parameters: 0:? Sequence 0:124 Sequence diff --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out index e6338470..1e18a405 100755 --- a/Test/baseResults/hlsl.precedence.frag.out +++ b/Test/baseResults/hlsl.precedence.frag.out @@ -2,7 +2,7 @@ hlsl.precedence.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float) +0:7 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:7 Function Parameters: 0:7 'a1' (layout(location=0 ) in 4-component vector of float) 0:7 'a2' (layout(location=1 ) in 4-component vector of float) @@ -59,7 +59,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float) +0:7 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float) 0:7 Function Parameters: 0:7 'a1' (layout(location=0 ) in 4-component vector of float) 0:7 'a2' (layout(location=1 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.precedence2.frag.out b/Test/baseResults/hlsl.precedence2.frag.out index 7021837b..64cce2c7 100755 --- a/Test/baseResults/hlsl.precedence2.frag.out +++ b/Test/baseResults/hlsl.precedence2.frag.out @@ -2,7 +2,7 @@ hlsl.precedence2.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int) +0:7 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int) 0:7 Function Parameters: 0:7 'a1' (layout(location=0 ) in int) 0:7 'a2' (layout(location=1 ) in int) @@ -42,7 +42,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int) +0:7 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int) 0:7 Function Parameters: 0:7 'a1' (layout(location=0 ) in int) 0:7 'a2' (layout(location=1 ) in int) diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out index d76dc3f0..40b6c4d9 100644 --- a/Test/baseResults/hlsl.precise.frag.out +++ b/Test/baseResults/hlsl.precise.frag.out @@ -2,11 +2,11 @@ hlsl.precise.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:6 Function Definition: MyFunction(f1;vf3; (global void) +0:6 Function Definition: MyFunction(f1;vf3; (temp void) 0:6 Function Parameters: 0:6 'myfloat' (noContraction in float) 0:6 'myfloat3' (noContraction out 3-component vector of float) -0:9 Function Definition: main( (global structure{noContraction temp 4-component vector of float color}) +0:9 Function Definition: main( (temp structure{noContraction temp 4-component vector of float color}) 0:9 Function Parameters: 0:? Sequence 0:11 move second child to first child (noContraction temp 4-component vector of float) @@ -39,11 +39,11 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:6 Function Definition: MyFunction(f1;vf3; (global void) +0:6 Function Definition: MyFunction(f1;vf3; (temp void) 0:6 Function Parameters: 0:6 'myfloat' (noContraction in float) 0:6 'myfloat3' (noContraction out 3-component vector of float) -0:9 Function Definition: main( (global structure{noContraction temp 4-component vector of float color}) +0:9 Function Definition: main( (temp structure{noContraction temp 4-component vector of float color}) 0:9 Function Parameters: 0:? Sequence 0:11 move second child to first child (noContraction temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out index 3f1c7886..25238beb 100644 --- a/Test/baseResults/hlsl.promotions.frag.out +++ b/Test/baseResults/hlsl.promotions.frag.out @@ -2,472 +2,748 @@ hlsl.promotions.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:19 Function Definition: Fn_F3(vf3; (global void) +0:19 Function Definition: Fn_F3(vf3; (temp void) 0:19 Function Parameters: 0:19 'x' (in 3-component vector of float) -0:20 Function Definition: Fn_I3(vi3; (global void) +0:20 Function Definition: Fn_I3(vi3; (temp void) 0:20 Function Parameters: 0:20 'x' (in 3-component vector of int) -0:21 Function Definition: Fn_U3(vu3; (global void) +0:21 Function Definition: Fn_U3(vu3; (temp void) 0:21 Function Parameters: 0:21 'x' (in 3-component vector of uint) -0:22 Function Definition: Fn_B3(vb3; (global void) +0:22 Function Definition: Fn_B3(vb3; (temp void) 0:22 Function Parameters: 0:22 'x' (in 3-component vector of bool) -0:23 Function Definition: Fn_D3(vd3; (global void) +0:23 Function Definition: Fn_D3(vd3; (temp void) 0:23 Function Parameters: 0:23 'x' (in 3-component vector of double) -0:26 Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float) +0:26 Function Definition: Fn_R_F3I(vf3; (temp 3-component vector of float) 0:26 Function Parameters: 0:26 'p' (out 3-component vector of float) 0:? Sequence 0:26 move second child to first child (temp 3-component vector of float) 0:26 'p' (out 3-component vector of float) 0:26 Convert int to float (temp 3-component vector of float) -0:26 'i3' (uniform 3-component vector of int) +0:26 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) 0:26 Branch: Return with expression 0:26 Convert int to float (temp 3-component vector of float) -0:26 'i3' (uniform 3-component vector of int) -0:27 Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float) +0:26 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) +0:27 Function Definition: Fn_R_F3U(vf3; (temp 3-component vector of float) 0:27 Function Parameters: 0:27 'p' (out 3-component vector of float) 0:? Sequence 0:27 move second child to first child (temp 3-component vector of float) 0:27 'p' (out 3-component vector of float) 0:27 Convert uint to float (temp 3-component vector of float) -0:27 'u3' (uniform 3-component vector of uint) +0:27 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) 0:27 Branch: Return with expression 0:27 Convert uint to float (temp 3-component vector of float) -0:27 'u3' (uniform 3-component vector of uint) -0:28 Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float) +0:27 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) +0:28 Function Definition: Fn_R_F3B(vf3; (temp 3-component vector of float) 0:28 Function Parameters: 0:28 'p' (out 3-component vector of float) 0:? Sequence 0:28 move second child to first child (temp 3-component vector of float) 0:28 'p' (out 3-component vector of float) 0:28 Convert bool to float (temp 3-component vector of float) -0:28 'b3' (uniform 3-component vector of bool) +0:28 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) 0:28 Branch: Return with expression 0:28 Convert bool to float (temp 3-component vector of float) -0:28 'b3' (uniform 3-component vector of bool) -0:29 Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float) +0:28 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) +0:29 Function Definition: Fn_R_F3D(vf3; (temp 3-component vector of float) 0:29 Function Parameters: 0:29 'p' (out 3-component vector of float) 0:? Sequence 0:29 move second child to first child (temp 3-component vector of float) 0:29 'p' (out 3-component vector of float) 0:29 Convert double to float (temp 3-component vector of float) -0:29 'd3' (uniform 3-component vector of double) +0:29 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) 0:29 Branch: Return with expression 0:29 Convert double to float (temp 3-component vector of float) -0:29 'd3' (uniform 3-component vector of double) -0:31 Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int) +0:29 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) +0:31 Function Definition: Fn_R_I3U(vi3; (temp 3-component vector of int) 0:31 Function Parameters: 0:31 'p' (out 3-component vector of int) 0:? Sequence 0:31 move second child to first child (temp 3-component vector of int) 0:31 'p' (out 3-component vector of int) 0:31 Convert uint to int (temp 3-component vector of int) -0:31 'u3' (uniform 3-component vector of uint) +0:31 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) 0:31 Branch: Return with expression 0:31 Convert uint to int (temp 3-component vector of int) -0:31 'u3' (uniform 3-component vector of uint) -0:32 Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int) +0:31 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) +0:32 Function Definition: Fn_R_I3B(vi3; (temp 3-component vector of int) 0:32 Function Parameters: 0:32 'p' (out 3-component vector of int) 0:? Sequence 0:32 move second child to first child (temp 3-component vector of int) 0:32 'p' (out 3-component vector of int) 0:32 Convert bool to int (temp 3-component vector of int) -0:32 'b3' (uniform 3-component vector of bool) +0:32 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) 0:32 Branch: Return with expression 0:32 Convert bool to int (temp 3-component vector of int) -0:32 'b3' (uniform 3-component vector of bool) -0:33 Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int) +0:32 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) +0:33 Function Definition: Fn_R_I3F(vi3; (temp 3-component vector of int) 0:33 Function Parameters: 0:33 'p' (out 3-component vector of int) 0:? Sequence 0:33 move second child to first child (temp 3-component vector of int) 0:33 'p' (out 3-component vector of int) 0:33 Convert float to int (temp 3-component vector of int) -0:33 'f3' (uniform 3-component vector of float) +0:33 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) 0:33 Branch: Return with expression 0:33 Convert float to int (temp 3-component vector of int) -0:33 'f3' (uniform 3-component vector of float) -0:34 Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int) +0:33 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) +0:34 Function Definition: Fn_R_I3D(vi3; (temp 3-component vector of int) 0:34 Function Parameters: 0:34 'p' (out 3-component vector of int) 0:? Sequence 0:34 move second child to first child (temp 3-component vector of int) 0:34 'p' (out 3-component vector of int) 0:34 Convert double to int (temp 3-component vector of int) -0:34 'd3' (uniform 3-component vector of double) +0:34 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) 0:34 Branch: Return with expression 0:34 Convert double to int (temp 3-component vector of int) -0:34 'd3' (uniform 3-component vector of double) -0:36 Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint) +0:34 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) +0:36 Function Definition: Fn_R_U3I(vu3; (temp 3-component vector of uint) 0:36 Function Parameters: 0:36 'p' (out 3-component vector of uint) 0:? Sequence 0:36 move second child to first child (temp 3-component vector of uint) 0:36 'p' (out 3-component vector of uint) 0:36 Convert int to uint (temp 3-component vector of uint) -0:36 'i3' (uniform 3-component vector of int) +0:36 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) 0:36 Branch: Return with expression 0:36 Convert int to uint (temp 3-component vector of uint) -0:36 'i3' (uniform 3-component vector of int) -0:37 Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint) +0:36 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) +0:37 Function Definition: Fn_R_U3F(vu3; (temp 3-component vector of uint) 0:37 Function Parameters: 0:37 'p' (out 3-component vector of uint) 0:? Sequence 0:37 move second child to first child (temp 3-component vector of uint) 0:37 'p' (out 3-component vector of uint) 0:37 Convert float to uint (temp 3-component vector of uint) -0:37 'f3' (uniform 3-component vector of float) +0:37 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) 0:37 Branch: Return with expression 0:37 Convert float to uint (temp 3-component vector of uint) -0:37 'f3' (uniform 3-component vector of float) -0:38 Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint) +0:37 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) +0:38 Function Definition: Fn_R_U3B(vu3; (temp 3-component vector of uint) 0:38 Function Parameters: 0:38 'p' (out 3-component vector of uint) 0:? Sequence 0:38 move second child to first child (temp 3-component vector of uint) 0:38 'p' (out 3-component vector of uint) 0:38 Convert bool to uint (temp 3-component vector of uint) -0:38 'b3' (uniform 3-component vector of bool) +0:38 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) 0:38 Branch: Return with expression 0:38 Convert bool to uint (temp 3-component vector of uint) -0:38 'b3' (uniform 3-component vector of bool) -0:39 Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint) +0:38 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) +0:39 Function Definition: Fn_R_U3D(vu3; (temp 3-component vector of uint) 0:39 Function Parameters: 0:39 'p' (out 3-component vector of uint) 0:? Sequence 0:39 move second child to first child (temp 3-component vector of uint) 0:39 'p' (out 3-component vector of uint) 0:39 Convert double to uint (temp 3-component vector of uint) -0:39 'd3' (uniform 3-component vector of double) +0:39 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) 0:39 Branch: Return with expression 0:39 Convert double to uint (temp 3-component vector of uint) -0:39 'd3' (uniform 3-component vector of double) -0:41 Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool) +0:39 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) +0:41 Function Definition: Fn_R_B3I(vb3; (temp 3-component vector of bool) 0:41 Function Parameters: 0:41 'p' (out 3-component vector of bool) 0:? Sequence 0:41 move second child to first child (temp 3-component vector of bool) 0:41 'p' (out 3-component vector of bool) 0:41 Convert int to bool (temp 3-component vector of bool) -0:41 'i3' (uniform 3-component vector of int) +0:41 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) 0:41 Branch: Return with expression 0:41 Convert int to bool (temp 3-component vector of bool) -0:41 'i3' (uniform 3-component vector of int) -0:42 Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool) +0:41 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) +0:42 Function Definition: Fn_R_B3U(vb3; (temp 3-component vector of bool) 0:42 Function Parameters: 0:42 'p' (out 3-component vector of bool) 0:? Sequence 0:42 move second child to first child (temp 3-component vector of bool) 0:42 'p' (out 3-component vector of bool) 0:42 Convert uint to bool (temp 3-component vector of bool) -0:42 'u3' (uniform 3-component vector of uint) +0:42 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) 0:42 Branch: Return with expression 0:42 Convert uint to bool (temp 3-component vector of bool) -0:42 'u3' (uniform 3-component vector of uint) -0:43 Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool) +0:42 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) +0:43 Function Definition: Fn_R_B3F(vb3; (temp 3-component vector of bool) 0:43 Function Parameters: 0:43 'p' (out 3-component vector of bool) 0:? Sequence 0:43 move second child to first child (temp 3-component vector of bool) 0:43 'p' (out 3-component vector of bool) 0:43 Convert float to bool (temp 3-component vector of bool) -0:43 'f3' (uniform 3-component vector of float) +0:43 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) 0:43 Branch: Return with expression 0:43 Convert float to bool (temp 3-component vector of bool) -0:43 'f3' (uniform 3-component vector of float) -0:44 Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool) +0:43 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) +0:44 Function Definition: Fn_R_B3D(vb3; (temp 3-component vector of bool) 0:44 Function Parameters: 0:44 'p' (out 3-component vector of bool) 0:? Sequence 0:44 move second child to first child (temp 3-component vector of bool) 0:44 'p' (out 3-component vector of bool) 0:44 Convert double to bool (temp 3-component vector of bool) -0:44 'd3' (uniform 3-component vector of double) +0:44 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) 0:44 Branch: Return with expression 0:44 Convert double to bool (temp 3-component vector of bool) -0:44 'd3' (uniform 3-component vector of double) -0:46 Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double) +0:44 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) +0:46 Function Definition: Fn_R_D3I(vd3; (temp 3-component vector of double) 0:46 Function Parameters: 0:46 'p' (out 3-component vector of double) 0:? Sequence 0:46 move second child to first child (temp 3-component vector of double) 0:46 'p' (out 3-component vector of double) 0:46 Convert int to double (temp 3-component vector of double) -0:46 'i3' (uniform 3-component vector of int) +0:46 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) 0:46 Branch: Return with expression 0:46 Convert int to double (temp 3-component vector of double) -0:46 'i3' (uniform 3-component vector of int) -0:47 Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double) +0:46 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) +0:47 Function Definition: Fn_R_D3U(vd3; (temp 3-component vector of double) 0:47 Function Parameters: 0:47 'p' (out 3-component vector of double) 0:? Sequence 0:47 move second child to first child (temp 3-component vector of double) 0:47 'p' (out 3-component vector of double) 0:47 Convert uint to double (temp 3-component vector of double) -0:47 'u3' (uniform 3-component vector of uint) +0:47 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) 0:47 Branch: Return with expression 0:47 Convert uint to double (temp 3-component vector of double) -0:47 'u3' (uniform 3-component vector of uint) -0:48 Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double) +0:47 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) +0:48 Function Definition: Fn_R_D3B(vd3; (temp 3-component vector of double) 0:48 Function Parameters: 0:48 'p' (out 3-component vector of double) 0:? Sequence 0:48 move second child to first child (temp 3-component vector of double) 0:48 'p' (out 3-component vector of double) 0:48 Convert bool to double (temp 3-component vector of double) -0:48 'b3' (uniform 3-component vector of bool) +0:48 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) 0:48 Branch: Return with expression 0:48 Convert bool to double (temp 3-component vector of double) -0:48 'b3' (uniform 3-component vector of bool) -0:49 Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double) +0:48 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) +0:49 Function Definition: Fn_R_D3F(vd3; (temp 3-component vector of double) 0:49 Function Parameters: 0:49 'p' (out 3-component vector of double) 0:? Sequence 0:49 move second child to first child (temp 3-component vector of double) 0:49 'p' (out 3-component vector of double) 0:49 Convert float to double (temp 3-component vector of double) -0:49 'f3' (uniform 3-component vector of float) +0:49 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) 0:49 Branch: Return with expression 0:49 Convert float to double (temp 3-component vector of double) -0:49 'f3' (uniform 3-component vector of float) -0:52 Function Definition: main( (global structure{temp 4-component vector of float Color}) +0:49 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) +0:52 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:52 Function Parameters: 0:? Sequence 0:54 Sequence 0:54 move second child to first child (temp 3-component vector of float) 0:54 'r00' (temp 3-component vector of float) 0:54 Convert int to float (temp 3-component vector of float) -0:54 'i3' (uniform 3-component vector of int) +0:54 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:54 Constant: +0:54 0 (const uint) 0:55 Sequence 0:55 move second child to first child (temp 3-component vector of float) 0:55 'r01' (temp 3-component vector of float) 0:55 Convert bool to float (temp 3-component vector of float) -0:55 'b3' (uniform 3-component vector of bool) +0:55 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:55 Constant: +0:55 1 (const uint) 0:56 Sequence 0:56 move second child to first child (temp 3-component vector of float) 0:56 'r02' (temp 3-component vector of float) 0:56 Convert uint to float (temp 3-component vector of float) -0:56 'u3' (uniform 3-component vector of uint) +0:56 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:56 Constant: +0:56 3 (const uint) 0:57 Sequence 0:57 move second child to first child (temp 3-component vector of float) 0:57 'r03' (temp 3-component vector of float) 0:57 Convert double to float (temp 3-component vector of float) -0:57 'd3' (uniform 3-component vector of double) +0:57 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:57 Constant: +0:57 4 (const uint) 0:59 Sequence 0:59 move second child to first child (temp 3-component vector of int) 0:59 'r10' (temp 3-component vector of int) 0:59 Convert bool to int (temp 3-component vector of int) -0:59 'b3' (uniform 3-component vector of bool) +0:59 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:59 Constant: +0:59 1 (const uint) 0:60 Sequence 0:60 move second child to first child (temp 3-component vector of int) 0:60 'r11' (temp 3-component vector of int) 0:60 Convert uint to int (temp 3-component vector of int) -0:60 'u3' (uniform 3-component vector of uint) +0:60 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:60 Constant: +0:60 3 (const uint) 0:61 Sequence 0:61 move second child to first child (temp 3-component vector of int) 0:61 'r12' (temp 3-component vector of int) 0:61 Convert float to int (temp 3-component vector of int) -0:61 'f3' (uniform 3-component vector of float) +0:61 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:61 Constant: +0:61 2 (const uint) 0:62 Sequence 0:62 move second child to first child (temp 3-component vector of int) 0:62 'r13' (temp 3-component vector of int) 0:62 Convert double to int (temp 3-component vector of int) -0:62 'd3' (uniform 3-component vector of double) +0:62 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:62 Constant: +0:62 4 (const uint) 0:64 Sequence 0:64 move second child to first child (temp 3-component vector of uint) 0:64 'r20' (temp 3-component vector of uint) 0:64 Convert bool to uint (temp 3-component vector of uint) -0:64 'b3' (uniform 3-component vector of bool) +0:64 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:64 Constant: +0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child (temp 3-component vector of uint) 0:65 'r21' (temp 3-component vector of uint) 0:65 Convert int to uint (temp 3-component vector of uint) -0:65 'i3' (uniform 3-component vector of int) +0:65 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:65 Constant: +0:65 0 (const uint) 0:66 Sequence 0:66 move second child to first child (temp 3-component vector of uint) 0:66 'r22' (temp 3-component vector of uint) 0:66 Convert float to uint (temp 3-component vector of uint) -0:66 'f3' (uniform 3-component vector of float) +0:66 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:66 Constant: +0:66 2 (const uint) 0:67 Sequence 0:67 move second child to first child (temp 3-component vector of uint) 0:67 'r23' (temp 3-component vector of uint) 0:67 Convert double to uint (temp 3-component vector of uint) -0:67 'd3' (uniform 3-component vector of double) +0:67 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:67 Constant: +0:67 4 (const uint) 0:69 Sequence 0:69 move second child to first child (temp 3-component vector of bool) 0:69 'r30' (temp 3-component vector of bool) 0:69 Convert int to bool (temp 3-component vector of bool) -0:69 'i3' (uniform 3-component vector of int) +0:69 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:69 Constant: +0:69 0 (const uint) 0:70 Sequence 0:70 move second child to first child (temp 3-component vector of bool) 0:70 'r31' (temp 3-component vector of bool) 0:70 Convert uint to bool (temp 3-component vector of bool) -0:70 'u3' (uniform 3-component vector of uint) +0:70 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:70 Constant: +0:70 3 (const uint) 0:71 Sequence 0:71 move second child to first child (temp 3-component vector of bool) 0:71 'r32' (temp 3-component vector of bool) 0:71 Convert float to bool (temp 3-component vector of bool) -0:71 'f3' (uniform 3-component vector of float) +0:71 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:71 Constant: +0:71 2 (const uint) 0:72 Sequence 0:72 move second child to first child (temp 3-component vector of bool) 0:72 'r33' (temp 3-component vector of bool) 0:72 Convert double to bool (temp 3-component vector of bool) -0:72 'd3' (uniform 3-component vector of double) +0:72 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:72 Constant: +0:72 4 (const uint) 0:74 Sequence 0:74 move second child to first child (temp 3-component vector of double) 0:74 'r40' (temp 3-component vector of double) 0:74 Convert int to double (temp 3-component vector of double) -0:74 'i3' (uniform 3-component vector of int) +0:74 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:74 Constant: +0:74 0 (const uint) 0:75 Sequence 0:75 move second child to first child (temp 3-component vector of double) 0:75 'r41' (temp 3-component vector of double) 0:75 Convert uint to double (temp 3-component vector of double) -0:75 'u3' (uniform 3-component vector of uint) +0:75 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:75 Constant: +0:75 3 (const uint) 0:76 Sequence 0:76 move second child to first child (temp 3-component vector of double) 0:76 'r42' (temp 3-component vector of double) 0:76 Convert float to double (temp 3-component vector of double) -0:76 'f3' (uniform 3-component vector of float) +0:76 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:76 Constant: +0:76 2 (const uint) 0:77 Sequence 0:77 move second child to first child (temp 3-component vector of double) 0:77 'r43' (temp 3-component vector of double) 0:77 Convert bool to double (temp 3-component vector of double) -0:77 'b3' (uniform 3-component vector of bool) +0:77 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:77 Constant: +0:77 1 (const uint) 0:80 multiply second child into first child (temp 3-component vector of float) 0:80 'r00' (temp 3-component vector of float) 0:80 Convert int to float (temp 3-component vector of float) -0:80 'i3' (uniform 3-component vector of int) +0:80 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:80 Constant: +0:80 0 (const uint) 0:81 multiply second child into first child (temp 3-component vector of float) 0:81 'r01' (temp 3-component vector of float) 0:81 Convert bool to float (temp 3-component vector of float) -0:81 'b3' (uniform 3-component vector of bool) +0:81 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:81 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:81 Constant: +0:81 1 (const uint) 0:82 multiply second child into first child (temp 3-component vector of float) 0:82 'r02' (temp 3-component vector of float) 0:82 Convert uint to float (temp 3-component vector of float) -0:82 'u3' (uniform 3-component vector of uint) +0:82 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:82 Constant: +0:82 3 (const uint) 0:83 multiply second child into first child (temp 3-component vector of float) 0:83 'r03' (temp 3-component vector of float) 0:83 Convert double to float (temp 3-component vector of float) -0:83 'd3' (uniform 3-component vector of double) +0:83 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:83 Constant: +0:83 4 (const uint) 0:85 multiply second child into first child (temp 3-component vector of int) 0:85 'r10' (temp 3-component vector of int) 0:85 Convert bool to int (temp 3-component vector of int) -0:85 'b3' (uniform 3-component vector of bool) +0:85 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:85 Constant: +0:85 1 (const uint) 0:86 multiply second child into first child (temp 3-component vector of int) 0:86 'r11' (temp 3-component vector of int) 0:86 Convert uint to int (temp 3-component vector of int) -0:86 'u3' (uniform 3-component vector of uint) +0:86 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:86 Constant: +0:86 3 (const uint) 0:87 multiply second child into first child (temp 3-component vector of int) 0:87 'r12' (temp 3-component vector of int) 0:87 Convert float to int (temp 3-component vector of int) -0:87 'f3' (uniform 3-component vector of float) +0:87 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:87 Constant: +0:87 2 (const uint) 0:88 multiply second child into first child (temp 3-component vector of int) 0:88 'r13' (temp 3-component vector of int) 0:88 Convert double to int (temp 3-component vector of int) -0:88 'd3' (uniform 3-component vector of double) +0:88 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:88 Constant: +0:88 4 (const uint) 0:90 multiply second child into first child (temp 3-component vector of uint) 0:90 'r20' (temp 3-component vector of uint) 0:90 Convert bool to uint (temp 3-component vector of uint) -0:90 'b3' (uniform 3-component vector of bool) +0:90 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:90 Constant: +0:90 1 (const uint) 0:91 multiply second child into first child (temp 3-component vector of uint) 0:91 'r21' (temp 3-component vector of uint) 0:91 Convert int to uint (temp 3-component vector of uint) -0:91 'i3' (uniform 3-component vector of int) +0:91 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:91 Constant: +0:91 0 (const uint) 0:92 multiply second child into first child (temp 3-component vector of uint) 0:92 'r22' (temp 3-component vector of uint) 0:92 Convert float to uint (temp 3-component vector of uint) -0:92 'f3' (uniform 3-component vector of float) +0:92 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:92 Constant: +0:92 2 (const uint) 0:93 multiply second child into first child (temp 3-component vector of uint) 0:93 'r23' (temp 3-component vector of uint) 0:93 Convert double to uint (temp 3-component vector of uint) -0:93 'd3' (uniform 3-component vector of double) +0:93 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:93 Constant: +0:93 4 (const uint) 0:97 multiply second child into first child (temp 3-component vector of double) 0:97 'r40' (temp 3-component vector of double) 0:97 Convert int to double (temp 3-component vector of double) -0:97 'i3' (uniform 3-component vector of int) +0:97 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:97 Constant: +0:97 0 (const uint) 0:98 multiply second child into first child (temp 3-component vector of double) 0:98 'r41' (temp 3-component vector of double) 0:98 Convert uint to double (temp 3-component vector of double) -0:98 'u3' (uniform 3-component vector of uint) +0:98 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:98 Constant: +0:98 3 (const uint) 0:99 multiply second child into first child (temp 3-component vector of double) 0:99 'r42' (temp 3-component vector of double) 0:99 Convert float to double (temp 3-component vector of double) -0:99 'f3' (uniform 3-component vector of float) +0:99 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:99 Constant: +0:99 2 (const uint) 0:100 multiply second child into first child (temp 3-component vector of double) 0:100 'r43' (temp 3-component vector of double) 0:100 Convert bool to double (temp 3-component vector of double) -0:100 'b3' (uniform 3-component vector of bool) +0:100 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:100 Constant: +0:100 1 (const uint) 0:103 vector scale second child into first child (temp 3-component vector of float) 0:103 'r00' (temp 3-component vector of float) 0:103 Convert int to float (temp float) -0:103 'is' (uniform int) +0:103 is: direct index for structure (layout(offset=88 ) uniform int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:103 Constant: +0:103 5 (const uint) 0:104 vector scale second child into first child (temp 3-component vector of float) 0:104 'r01' (temp 3-component vector of float) 0:104 Convert bool to float (temp float) -0:104 'bs' (uniform bool) +0:104 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:104 Constant: +0:104 6 (const uint) 0:105 vector scale second child into first child (temp 3-component vector of float) 0:105 'r02' (temp 3-component vector of float) 0:105 Convert uint to float (temp float) -0:105 'us' (uniform uint) +0:105 us: direct index for structure (layout(offset=100 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:105 Constant: +0:105 8 (const uint) 0:106 vector scale second child into first child (temp 3-component vector of float) 0:106 'r03' (temp 3-component vector of float) 0:106 Convert double to float (temp float) -0:106 'ds' (uniform double) +0:106 ds: direct index for structure (layout(offset=104 ) uniform double) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:106 Constant: +0:106 9 (const uint) 0:108 vector scale second child into first child (temp 3-component vector of int) 0:108 'r10' (temp 3-component vector of int) 0:108 Convert bool to int (temp int) -0:108 'bs' (uniform bool) +0:108 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:108 Constant: +0:108 6 (const uint) 0:109 vector scale second child into first child (temp 3-component vector of int) 0:109 'r11' (temp 3-component vector of int) 0:109 Convert uint to int (temp int) -0:109 'us' (uniform uint) +0:109 us: direct index for structure (layout(offset=100 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:109 Constant: +0:109 8 (const uint) 0:110 vector scale second child into first child (temp 3-component vector of int) 0:110 'r12' (temp 3-component vector of int) 0:110 Convert float to int (temp int) -0:110 'fs' (uniform float) +0:110 fs: direct index for structure (layout(offset=96 ) uniform float) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:110 Constant: +0:110 7 (const uint) 0:111 vector scale second child into first child (temp 3-component vector of int) 0:111 'r13' (temp 3-component vector of int) 0:111 Convert double to int (temp int) -0:111 'ds' (uniform double) +0:111 ds: direct index for structure (layout(offset=104 ) uniform double) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:111 Constant: +0:111 9 (const uint) 0:113 vector scale second child into first child (temp 3-component vector of uint) 0:113 'r20' (temp 3-component vector of uint) 0:113 Convert bool to uint (temp uint) -0:113 'bs' (uniform bool) +0:113 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:113 Constant: +0:113 6 (const uint) 0:114 vector scale second child into first child (temp 3-component vector of uint) 0:114 'r21' (temp 3-component vector of uint) 0:114 Convert int to uint (temp uint) -0:114 'is' (uniform int) +0:114 is: direct index for structure (layout(offset=88 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:114 Constant: +0:114 5 (const uint) 0:115 vector scale second child into first child (temp 3-component vector of uint) 0:115 'r22' (temp 3-component vector of uint) 0:115 Convert float to uint (temp uint) -0:115 'fs' (uniform float) +0:115 fs: direct index for structure (layout(offset=96 ) uniform float) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:115 Constant: +0:115 7 (const uint) 0:116 vector scale second child into first child (temp 3-component vector of uint) 0:116 'r23' (temp 3-component vector of uint) 0:116 Convert double to uint (temp uint) -0:116 'ds' (uniform double) +0:116 ds: direct index for structure (layout(offset=104 ) uniform double) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:116 Constant: +0:116 9 (const uint) 0:120 vector scale second child into first child (temp 3-component vector of double) 0:120 'r40' (temp 3-component vector of double) 0:120 Convert int to double (temp double) -0:120 'is' (uniform int) +0:120 is: direct index for structure (layout(offset=88 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:120 Constant: +0:120 5 (const uint) 0:121 vector scale second child into first child (temp 3-component vector of double) 0:121 'r41' (temp 3-component vector of double) 0:121 Convert uint to double (temp double) -0:121 'us' (uniform uint) +0:121 us: direct index for structure (layout(offset=100 ) uniform uint) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:121 Constant: +0:121 8 (const uint) 0:122 vector scale second child into first child (temp 3-component vector of double) 0:122 'r42' (temp 3-component vector of double) 0:122 Convert float to double (temp double) -0:122 'fs' (uniform float) +0:122 fs: direct index for structure (layout(offset=96 ) uniform float) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:122 Constant: +0:122 7 (const uint) 0:123 vector scale second child into first child (temp 3-component vector of double) 0:123 'r43' (temp 3-component vector of double) 0:123 Convert bool to double (temp double) -0:123 'bs' (uniform bool) +0:123 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:123 Constant: +0:123 6 (const uint) 0:193 Sequence 0:193 move second child to first child (temp int) 0:193 'c1' (temp int) @@ -506,16 +782,7 @@ gl_FragCoord origin is upper left 0:200 0 (const int) 0:200 Branch: Return 0:? Linker Objects -0:? 'i3' (uniform 3-component vector of int) -0:? 'b3' (uniform 3-component vector of bool) -0:? 'f3' (uniform 3-component vector of float) -0:? 'u3' (uniform 3-component vector of uint) -0:? 'd3' (uniform 3-component vector of double) -0:? 'is' (uniform int) -0:? 'bs' (uniform bool) -0:? 'fs' (uniform float) -0:? 'us' (uniform uint) -0:? 'ds' (uniform double) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) @@ -525,472 +792,748 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:19 Function Definition: Fn_F3(vf3; (global void) +0:19 Function Definition: Fn_F3(vf3; (temp void) 0:19 Function Parameters: 0:19 'x' (in 3-component vector of float) -0:20 Function Definition: Fn_I3(vi3; (global void) +0:20 Function Definition: Fn_I3(vi3; (temp void) 0:20 Function Parameters: 0:20 'x' (in 3-component vector of int) -0:21 Function Definition: Fn_U3(vu3; (global void) +0:21 Function Definition: Fn_U3(vu3; (temp void) 0:21 Function Parameters: 0:21 'x' (in 3-component vector of uint) -0:22 Function Definition: Fn_B3(vb3; (global void) +0:22 Function Definition: Fn_B3(vb3; (temp void) 0:22 Function Parameters: 0:22 'x' (in 3-component vector of bool) -0:23 Function Definition: Fn_D3(vd3; (global void) +0:23 Function Definition: Fn_D3(vd3; (temp void) 0:23 Function Parameters: 0:23 'x' (in 3-component vector of double) -0:26 Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float) +0:26 Function Definition: Fn_R_F3I(vf3; (temp 3-component vector of float) 0:26 Function Parameters: 0:26 'p' (out 3-component vector of float) 0:? Sequence 0:26 move second child to first child (temp 3-component vector of float) 0:26 'p' (out 3-component vector of float) 0:26 Convert int to float (temp 3-component vector of float) -0:26 'i3' (uniform 3-component vector of int) +0:26 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) 0:26 Branch: Return with expression 0:26 Convert int to float (temp 3-component vector of float) -0:26 'i3' (uniform 3-component vector of int) -0:27 Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float) +0:26 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) +0:27 Function Definition: Fn_R_F3U(vf3; (temp 3-component vector of float) 0:27 Function Parameters: 0:27 'p' (out 3-component vector of float) 0:? Sequence 0:27 move second child to first child (temp 3-component vector of float) 0:27 'p' (out 3-component vector of float) 0:27 Convert uint to float (temp 3-component vector of float) -0:27 'u3' (uniform 3-component vector of uint) +0:27 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) 0:27 Branch: Return with expression 0:27 Convert uint to float (temp 3-component vector of float) -0:27 'u3' (uniform 3-component vector of uint) -0:28 Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float) +0:27 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) +0:28 Function Definition: Fn_R_F3B(vf3; (temp 3-component vector of float) 0:28 Function Parameters: 0:28 'p' (out 3-component vector of float) 0:? Sequence 0:28 move second child to first child (temp 3-component vector of float) 0:28 'p' (out 3-component vector of float) 0:28 Convert bool to float (temp 3-component vector of float) -0:28 'b3' (uniform 3-component vector of bool) +0:28 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) 0:28 Branch: Return with expression 0:28 Convert bool to float (temp 3-component vector of float) -0:28 'b3' (uniform 3-component vector of bool) -0:29 Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float) +0:28 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) +0:29 Function Definition: Fn_R_F3D(vf3; (temp 3-component vector of float) 0:29 Function Parameters: 0:29 'p' (out 3-component vector of float) 0:? Sequence 0:29 move second child to first child (temp 3-component vector of float) 0:29 'p' (out 3-component vector of float) 0:29 Convert double to float (temp 3-component vector of float) -0:29 'd3' (uniform 3-component vector of double) +0:29 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) 0:29 Branch: Return with expression 0:29 Convert double to float (temp 3-component vector of float) -0:29 'd3' (uniform 3-component vector of double) -0:31 Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int) +0:29 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) +0:31 Function Definition: Fn_R_I3U(vi3; (temp 3-component vector of int) 0:31 Function Parameters: 0:31 'p' (out 3-component vector of int) 0:? Sequence 0:31 move second child to first child (temp 3-component vector of int) 0:31 'p' (out 3-component vector of int) 0:31 Convert uint to int (temp 3-component vector of int) -0:31 'u3' (uniform 3-component vector of uint) +0:31 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) 0:31 Branch: Return with expression 0:31 Convert uint to int (temp 3-component vector of int) -0:31 'u3' (uniform 3-component vector of uint) -0:32 Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int) +0:31 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) +0:32 Function Definition: Fn_R_I3B(vi3; (temp 3-component vector of int) 0:32 Function Parameters: 0:32 'p' (out 3-component vector of int) 0:? Sequence 0:32 move second child to first child (temp 3-component vector of int) 0:32 'p' (out 3-component vector of int) 0:32 Convert bool to int (temp 3-component vector of int) -0:32 'b3' (uniform 3-component vector of bool) +0:32 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) 0:32 Branch: Return with expression 0:32 Convert bool to int (temp 3-component vector of int) -0:32 'b3' (uniform 3-component vector of bool) -0:33 Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int) +0:32 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) +0:33 Function Definition: Fn_R_I3F(vi3; (temp 3-component vector of int) 0:33 Function Parameters: 0:33 'p' (out 3-component vector of int) 0:? Sequence 0:33 move second child to first child (temp 3-component vector of int) 0:33 'p' (out 3-component vector of int) 0:33 Convert float to int (temp 3-component vector of int) -0:33 'f3' (uniform 3-component vector of float) +0:33 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) 0:33 Branch: Return with expression 0:33 Convert float to int (temp 3-component vector of int) -0:33 'f3' (uniform 3-component vector of float) -0:34 Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int) +0:33 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) +0:34 Function Definition: Fn_R_I3D(vi3; (temp 3-component vector of int) 0:34 Function Parameters: 0:34 'p' (out 3-component vector of int) 0:? Sequence 0:34 move second child to first child (temp 3-component vector of int) 0:34 'p' (out 3-component vector of int) 0:34 Convert double to int (temp 3-component vector of int) -0:34 'd3' (uniform 3-component vector of double) +0:34 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) 0:34 Branch: Return with expression 0:34 Convert double to int (temp 3-component vector of int) -0:34 'd3' (uniform 3-component vector of double) -0:36 Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint) +0:34 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) +0:36 Function Definition: Fn_R_U3I(vu3; (temp 3-component vector of uint) 0:36 Function Parameters: 0:36 'p' (out 3-component vector of uint) 0:? Sequence 0:36 move second child to first child (temp 3-component vector of uint) 0:36 'p' (out 3-component vector of uint) 0:36 Convert int to uint (temp 3-component vector of uint) -0:36 'i3' (uniform 3-component vector of int) +0:36 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) 0:36 Branch: Return with expression 0:36 Convert int to uint (temp 3-component vector of uint) -0:36 'i3' (uniform 3-component vector of int) -0:37 Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint) +0:36 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) +0:37 Function Definition: Fn_R_U3F(vu3; (temp 3-component vector of uint) 0:37 Function Parameters: 0:37 'p' (out 3-component vector of uint) 0:? Sequence 0:37 move second child to first child (temp 3-component vector of uint) 0:37 'p' (out 3-component vector of uint) 0:37 Convert float to uint (temp 3-component vector of uint) -0:37 'f3' (uniform 3-component vector of float) +0:37 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) 0:37 Branch: Return with expression 0:37 Convert float to uint (temp 3-component vector of uint) -0:37 'f3' (uniform 3-component vector of float) -0:38 Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint) +0:37 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) +0:38 Function Definition: Fn_R_U3B(vu3; (temp 3-component vector of uint) 0:38 Function Parameters: 0:38 'p' (out 3-component vector of uint) 0:? Sequence 0:38 move second child to first child (temp 3-component vector of uint) 0:38 'p' (out 3-component vector of uint) 0:38 Convert bool to uint (temp 3-component vector of uint) -0:38 'b3' (uniform 3-component vector of bool) +0:38 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) 0:38 Branch: Return with expression 0:38 Convert bool to uint (temp 3-component vector of uint) -0:38 'b3' (uniform 3-component vector of bool) -0:39 Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint) +0:38 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) +0:39 Function Definition: Fn_R_U3D(vu3; (temp 3-component vector of uint) 0:39 Function Parameters: 0:39 'p' (out 3-component vector of uint) 0:? Sequence 0:39 move second child to first child (temp 3-component vector of uint) 0:39 'p' (out 3-component vector of uint) 0:39 Convert double to uint (temp 3-component vector of uint) -0:39 'd3' (uniform 3-component vector of double) +0:39 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) 0:39 Branch: Return with expression 0:39 Convert double to uint (temp 3-component vector of uint) -0:39 'd3' (uniform 3-component vector of double) -0:41 Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool) +0:39 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) +0:41 Function Definition: Fn_R_B3I(vb3; (temp 3-component vector of bool) 0:41 Function Parameters: 0:41 'p' (out 3-component vector of bool) 0:? Sequence 0:41 move second child to first child (temp 3-component vector of bool) 0:41 'p' (out 3-component vector of bool) 0:41 Convert int to bool (temp 3-component vector of bool) -0:41 'i3' (uniform 3-component vector of int) +0:41 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) 0:41 Branch: Return with expression 0:41 Convert int to bool (temp 3-component vector of bool) -0:41 'i3' (uniform 3-component vector of int) -0:42 Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool) +0:41 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) +0:42 Function Definition: Fn_R_B3U(vb3; (temp 3-component vector of bool) 0:42 Function Parameters: 0:42 'p' (out 3-component vector of bool) 0:? Sequence 0:42 move second child to first child (temp 3-component vector of bool) 0:42 'p' (out 3-component vector of bool) 0:42 Convert uint to bool (temp 3-component vector of bool) -0:42 'u3' (uniform 3-component vector of uint) +0:42 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) 0:42 Branch: Return with expression 0:42 Convert uint to bool (temp 3-component vector of bool) -0:42 'u3' (uniform 3-component vector of uint) -0:43 Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool) +0:42 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) +0:43 Function Definition: Fn_R_B3F(vb3; (temp 3-component vector of bool) 0:43 Function Parameters: 0:43 'p' (out 3-component vector of bool) 0:? Sequence 0:43 move second child to first child (temp 3-component vector of bool) 0:43 'p' (out 3-component vector of bool) 0:43 Convert float to bool (temp 3-component vector of bool) -0:43 'f3' (uniform 3-component vector of float) +0:43 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) 0:43 Branch: Return with expression 0:43 Convert float to bool (temp 3-component vector of bool) -0:43 'f3' (uniform 3-component vector of float) -0:44 Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool) +0:43 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) +0:44 Function Definition: Fn_R_B3D(vb3; (temp 3-component vector of bool) 0:44 Function Parameters: 0:44 'p' (out 3-component vector of bool) 0:? Sequence 0:44 move second child to first child (temp 3-component vector of bool) 0:44 'p' (out 3-component vector of bool) 0:44 Convert double to bool (temp 3-component vector of bool) -0:44 'd3' (uniform 3-component vector of double) +0:44 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) 0:44 Branch: Return with expression 0:44 Convert double to bool (temp 3-component vector of bool) -0:44 'd3' (uniform 3-component vector of double) -0:46 Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double) +0:44 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) +0:46 Function Definition: Fn_R_D3I(vd3; (temp 3-component vector of double) 0:46 Function Parameters: 0:46 'p' (out 3-component vector of double) 0:? Sequence 0:46 move second child to first child (temp 3-component vector of double) 0:46 'p' (out 3-component vector of double) 0:46 Convert int to double (temp 3-component vector of double) -0:46 'i3' (uniform 3-component vector of int) +0:46 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) 0:46 Branch: Return with expression 0:46 Convert int to double (temp 3-component vector of double) -0:46 'i3' (uniform 3-component vector of int) -0:47 Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double) +0:46 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) +0:47 Function Definition: Fn_R_D3U(vd3; (temp 3-component vector of double) 0:47 Function Parameters: 0:47 'p' (out 3-component vector of double) 0:? Sequence 0:47 move second child to first child (temp 3-component vector of double) 0:47 'p' (out 3-component vector of double) 0:47 Convert uint to double (temp 3-component vector of double) -0:47 'u3' (uniform 3-component vector of uint) +0:47 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) 0:47 Branch: Return with expression 0:47 Convert uint to double (temp 3-component vector of double) -0:47 'u3' (uniform 3-component vector of uint) -0:48 Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double) +0:47 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) +0:48 Function Definition: Fn_R_D3B(vd3; (temp 3-component vector of double) 0:48 Function Parameters: 0:48 'p' (out 3-component vector of double) 0:? Sequence 0:48 move second child to first child (temp 3-component vector of double) 0:48 'p' (out 3-component vector of double) 0:48 Convert bool to double (temp 3-component vector of double) -0:48 'b3' (uniform 3-component vector of bool) +0:48 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) 0:48 Branch: Return with expression 0:48 Convert bool to double (temp 3-component vector of double) -0:48 'b3' (uniform 3-component vector of bool) -0:49 Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double) +0:48 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) +0:49 Function Definition: Fn_R_D3F(vd3; (temp 3-component vector of double) 0:49 Function Parameters: 0:49 'p' (out 3-component vector of double) 0:? Sequence 0:49 move second child to first child (temp 3-component vector of double) 0:49 'p' (out 3-component vector of double) 0:49 Convert float to double (temp 3-component vector of double) -0:49 'f3' (uniform 3-component vector of float) +0:49 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) 0:49 Branch: Return with expression 0:49 Convert float to double (temp 3-component vector of double) -0:49 'f3' (uniform 3-component vector of float) -0:52 Function Definition: main( (global structure{temp 4-component vector of float Color}) +0:49 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) +0:52 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:52 Function Parameters: 0:? Sequence 0:54 Sequence 0:54 move second child to first child (temp 3-component vector of float) 0:54 'r00' (temp 3-component vector of float) 0:54 Convert int to float (temp 3-component vector of float) -0:54 'i3' (uniform 3-component vector of int) +0:54 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:54 Constant: +0:54 0 (const uint) 0:55 Sequence 0:55 move second child to first child (temp 3-component vector of float) 0:55 'r01' (temp 3-component vector of float) 0:55 Convert bool to float (temp 3-component vector of float) -0:55 'b3' (uniform 3-component vector of bool) +0:55 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:55 Constant: +0:55 1 (const uint) 0:56 Sequence 0:56 move second child to first child (temp 3-component vector of float) 0:56 'r02' (temp 3-component vector of float) 0:56 Convert uint to float (temp 3-component vector of float) -0:56 'u3' (uniform 3-component vector of uint) +0:56 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:56 Constant: +0:56 3 (const uint) 0:57 Sequence 0:57 move second child to first child (temp 3-component vector of float) 0:57 'r03' (temp 3-component vector of float) 0:57 Convert double to float (temp 3-component vector of float) -0:57 'd3' (uniform 3-component vector of double) +0:57 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:57 Constant: +0:57 4 (const uint) 0:59 Sequence 0:59 move second child to first child (temp 3-component vector of int) 0:59 'r10' (temp 3-component vector of int) 0:59 Convert bool to int (temp 3-component vector of int) -0:59 'b3' (uniform 3-component vector of bool) +0:59 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:59 Constant: +0:59 1 (const uint) 0:60 Sequence 0:60 move second child to first child (temp 3-component vector of int) 0:60 'r11' (temp 3-component vector of int) 0:60 Convert uint to int (temp 3-component vector of int) -0:60 'u3' (uniform 3-component vector of uint) +0:60 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:60 Constant: +0:60 3 (const uint) 0:61 Sequence 0:61 move second child to first child (temp 3-component vector of int) 0:61 'r12' (temp 3-component vector of int) 0:61 Convert float to int (temp 3-component vector of int) -0:61 'f3' (uniform 3-component vector of float) +0:61 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:61 Constant: +0:61 2 (const uint) 0:62 Sequence 0:62 move second child to first child (temp 3-component vector of int) 0:62 'r13' (temp 3-component vector of int) 0:62 Convert double to int (temp 3-component vector of int) -0:62 'd3' (uniform 3-component vector of double) +0:62 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:62 Constant: +0:62 4 (const uint) 0:64 Sequence 0:64 move second child to first child (temp 3-component vector of uint) 0:64 'r20' (temp 3-component vector of uint) 0:64 Convert bool to uint (temp 3-component vector of uint) -0:64 'b3' (uniform 3-component vector of bool) +0:64 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:64 Constant: +0:64 1 (const uint) 0:65 Sequence 0:65 move second child to first child (temp 3-component vector of uint) 0:65 'r21' (temp 3-component vector of uint) 0:65 Convert int to uint (temp 3-component vector of uint) -0:65 'i3' (uniform 3-component vector of int) +0:65 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:65 Constant: +0:65 0 (const uint) 0:66 Sequence 0:66 move second child to first child (temp 3-component vector of uint) 0:66 'r22' (temp 3-component vector of uint) 0:66 Convert float to uint (temp 3-component vector of uint) -0:66 'f3' (uniform 3-component vector of float) +0:66 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:66 Constant: +0:66 2 (const uint) 0:67 Sequence 0:67 move second child to first child (temp 3-component vector of uint) 0:67 'r23' (temp 3-component vector of uint) 0:67 Convert double to uint (temp 3-component vector of uint) -0:67 'd3' (uniform 3-component vector of double) +0:67 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:67 Constant: +0:67 4 (const uint) 0:69 Sequence 0:69 move second child to first child (temp 3-component vector of bool) 0:69 'r30' (temp 3-component vector of bool) 0:69 Convert int to bool (temp 3-component vector of bool) -0:69 'i3' (uniform 3-component vector of int) +0:69 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:69 Constant: +0:69 0 (const uint) 0:70 Sequence 0:70 move second child to first child (temp 3-component vector of bool) 0:70 'r31' (temp 3-component vector of bool) 0:70 Convert uint to bool (temp 3-component vector of bool) -0:70 'u3' (uniform 3-component vector of uint) +0:70 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:70 Constant: +0:70 3 (const uint) 0:71 Sequence 0:71 move second child to first child (temp 3-component vector of bool) 0:71 'r32' (temp 3-component vector of bool) 0:71 Convert float to bool (temp 3-component vector of bool) -0:71 'f3' (uniform 3-component vector of float) +0:71 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:71 Constant: +0:71 2 (const uint) 0:72 Sequence 0:72 move second child to first child (temp 3-component vector of bool) 0:72 'r33' (temp 3-component vector of bool) 0:72 Convert double to bool (temp 3-component vector of bool) -0:72 'd3' (uniform 3-component vector of double) +0:72 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:72 Constant: +0:72 4 (const uint) 0:74 Sequence 0:74 move second child to first child (temp 3-component vector of double) 0:74 'r40' (temp 3-component vector of double) 0:74 Convert int to double (temp 3-component vector of double) -0:74 'i3' (uniform 3-component vector of int) +0:74 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:74 Constant: +0:74 0 (const uint) 0:75 Sequence 0:75 move second child to first child (temp 3-component vector of double) 0:75 'r41' (temp 3-component vector of double) 0:75 Convert uint to double (temp 3-component vector of double) -0:75 'u3' (uniform 3-component vector of uint) +0:75 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:75 Constant: +0:75 3 (const uint) 0:76 Sequence 0:76 move second child to first child (temp 3-component vector of double) 0:76 'r42' (temp 3-component vector of double) 0:76 Convert float to double (temp 3-component vector of double) -0:76 'f3' (uniform 3-component vector of float) +0:76 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:76 Constant: +0:76 2 (const uint) 0:77 Sequence 0:77 move second child to first child (temp 3-component vector of double) 0:77 'r43' (temp 3-component vector of double) 0:77 Convert bool to double (temp 3-component vector of double) -0:77 'b3' (uniform 3-component vector of bool) +0:77 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:77 Constant: +0:77 1 (const uint) 0:80 multiply second child into first child (temp 3-component vector of float) 0:80 'r00' (temp 3-component vector of float) 0:80 Convert int to float (temp 3-component vector of float) -0:80 'i3' (uniform 3-component vector of int) +0:80 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:80 Constant: +0:80 0 (const uint) 0:81 multiply second child into first child (temp 3-component vector of float) 0:81 'r01' (temp 3-component vector of float) 0:81 Convert bool to float (temp 3-component vector of float) -0:81 'b3' (uniform 3-component vector of bool) +0:81 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:81 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:81 Constant: +0:81 1 (const uint) 0:82 multiply second child into first child (temp 3-component vector of float) 0:82 'r02' (temp 3-component vector of float) 0:82 Convert uint to float (temp 3-component vector of float) -0:82 'u3' (uniform 3-component vector of uint) +0:82 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:82 Constant: +0:82 3 (const uint) 0:83 multiply second child into first child (temp 3-component vector of float) 0:83 'r03' (temp 3-component vector of float) 0:83 Convert double to float (temp 3-component vector of float) -0:83 'd3' (uniform 3-component vector of double) +0:83 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:83 Constant: +0:83 4 (const uint) 0:85 multiply second child into first child (temp 3-component vector of int) 0:85 'r10' (temp 3-component vector of int) 0:85 Convert bool to int (temp 3-component vector of int) -0:85 'b3' (uniform 3-component vector of bool) +0:85 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:85 Constant: +0:85 1 (const uint) 0:86 multiply second child into first child (temp 3-component vector of int) 0:86 'r11' (temp 3-component vector of int) 0:86 Convert uint to int (temp 3-component vector of int) -0:86 'u3' (uniform 3-component vector of uint) +0:86 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:86 Constant: +0:86 3 (const uint) 0:87 multiply second child into first child (temp 3-component vector of int) 0:87 'r12' (temp 3-component vector of int) 0:87 Convert float to int (temp 3-component vector of int) -0:87 'f3' (uniform 3-component vector of float) +0:87 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:87 Constant: +0:87 2 (const uint) 0:88 multiply second child into first child (temp 3-component vector of int) 0:88 'r13' (temp 3-component vector of int) 0:88 Convert double to int (temp 3-component vector of int) -0:88 'd3' (uniform 3-component vector of double) +0:88 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:88 Constant: +0:88 4 (const uint) 0:90 multiply second child into first child (temp 3-component vector of uint) 0:90 'r20' (temp 3-component vector of uint) 0:90 Convert bool to uint (temp 3-component vector of uint) -0:90 'b3' (uniform 3-component vector of bool) +0:90 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:90 Constant: +0:90 1 (const uint) 0:91 multiply second child into first child (temp 3-component vector of uint) 0:91 'r21' (temp 3-component vector of uint) 0:91 Convert int to uint (temp 3-component vector of uint) -0:91 'i3' (uniform 3-component vector of int) +0:91 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:91 Constant: +0:91 0 (const uint) 0:92 multiply second child into first child (temp 3-component vector of uint) 0:92 'r22' (temp 3-component vector of uint) 0:92 Convert float to uint (temp 3-component vector of uint) -0:92 'f3' (uniform 3-component vector of float) +0:92 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:92 Constant: +0:92 2 (const uint) 0:93 multiply second child into first child (temp 3-component vector of uint) 0:93 'r23' (temp 3-component vector of uint) 0:93 Convert double to uint (temp 3-component vector of uint) -0:93 'd3' (uniform 3-component vector of double) +0:93 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:93 Constant: +0:93 4 (const uint) 0:97 multiply second child into first child (temp 3-component vector of double) 0:97 'r40' (temp 3-component vector of double) 0:97 Convert int to double (temp 3-component vector of double) -0:97 'i3' (uniform 3-component vector of int) +0:97 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:97 Constant: +0:97 0 (const uint) 0:98 multiply second child into first child (temp 3-component vector of double) 0:98 'r41' (temp 3-component vector of double) 0:98 Convert uint to double (temp 3-component vector of double) -0:98 'u3' (uniform 3-component vector of uint) +0:98 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:98 Constant: +0:98 3 (const uint) 0:99 multiply second child into first child (temp 3-component vector of double) 0:99 'r42' (temp 3-component vector of double) 0:99 Convert float to double (temp 3-component vector of double) -0:99 'f3' (uniform 3-component vector of float) +0:99 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:99 Constant: +0:99 2 (const uint) 0:100 multiply second child into first child (temp 3-component vector of double) 0:100 'r43' (temp 3-component vector of double) 0:100 Convert bool to double (temp 3-component vector of double) -0:100 'b3' (uniform 3-component vector of bool) +0:100 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:100 Constant: +0:100 1 (const uint) 0:103 vector scale second child into first child (temp 3-component vector of float) 0:103 'r00' (temp 3-component vector of float) 0:103 Convert int to float (temp float) -0:103 'is' (uniform int) +0:103 is: direct index for structure (layout(offset=88 ) uniform int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:103 Constant: +0:103 5 (const uint) 0:104 vector scale second child into first child (temp 3-component vector of float) 0:104 'r01' (temp 3-component vector of float) 0:104 Convert bool to float (temp float) -0:104 'bs' (uniform bool) +0:104 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:104 Constant: +0:104 6 (const uint) 0:105 vector scale second child into first child (temp 3-component vector of float) 0:105 'r02' (temp 3-component vector of float) 0:105 Convert uint to float (temp float) -0:105 'us' (uniform uint) +0:105 us: direct index for structure (layout(offset=100 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:105 Constant: +0:105 8 (const uint) 0:106 vector scale second child into first child (temp 3-component vector of float) 0:106 'r03' (temp 3-component vector of float) 0:106 Convert double to float (temp float) -0:106 'ds' (uniform double) +0:106 ds: direct index for structure (layout(offset=104 ) uniform double) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:106 Constant: +0:106 9 (const uint) 0:108 vector scale second child into first child (temp 3-component vector of int) 0:108 'r10' (temp 3-component vector of int) 0:108 Convert bool to int (temp int) -0:108 'bs' (uniform bool) +0:108 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:108 Constant: +0:108 6 (const uint) 0:109 vector scale second child into first child (temp 3-component vector of int) 0:109 'r11' (temp 3-component vector of int) 0:109 Convert uint to int (temp int) -0:109 'us' (uniform uint) +0:109 us: direct index for structure (layout(offset=100 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:109 Constant: +0:109 8 (const uint) 0:110 vector scale second child into first child (temp 3-component vector of int) 0:110 'r12' (temp 3-component vector of int) 0:110 Convert float to int (temp int) -0:110 'fs' (uniform float) +0:110 fs: direct index for structure (layout(offset=96 ) uniform float) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:110 Constant: +0:110 7 (const uint) 0:111 vector scale second child into first child (temp 3-component vector of int) 0:111 'r13' (temp 3-component vector of int) 0:111 Convert double to int (temp int) -0:111 'ds' (uniform double) +0:111 ds: direct index for structure (layout(offset=104 ) uniform double) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:111 Constant: +0:111 9 (const uint) 0:113 vector scale second child into first child (temp 3-component vector of uint) 0:113 'r20' (temp 3-component vector of uint) 0:113 Convert bool to uint (temp uint) -0:113 'bs' (uniform bool) +0:113 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:113 Constant: +0:113 6 (const uint) 0:114 vector scale second child into first child (temp 3-component vector of uint) 0:114 'r21' (temp 3-component vector of uint) 0:114 Convert int to uint (temp uint) -0:114 'is' (uniform int) +0:114 is: direct index for structure (layout(offset=88 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:114 Constant: +0:114 5 (const uint) 0:115 vector scale second child into first child (temp 3-component vector of uint) 0:115 'r22' (temp 3-component vector of uint) 0:115 Convert float to uint (temp uint) -0:115 'fs' (uniform float) +0:115 fs: direct index for structure (layout(offset=96 ) uniform float) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:115 Constant: +0:115 7 (const uint) 0:116 vector scale second child into first child (temp 3-component vector of uint) 0:116 'r23' (temp 3-component vector of uint) 0:116 Convert double to uint (temp uint) -0:116 'ds' (uniform double) +0:116 ds: direct index for structure (layout(offset=104 ) uniform double) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:116 Constant: +0:116 9 (const uint) 0:120 vector scale second child into first child (temp 3-component vector of double) 0:120 'r40' (temp 3-component vector of double) 0:120 Convert int to double (temp double) -0:120 'is' (uniform int) +0:120 is: direct index for structure (layout(offset=88 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:120 Constant: +0:120 5 (const uint) 0:121 vector scale second child into first child (temp 3-component vector of double) 0:121 'r41' (temp 3-component vector of double) 0:121 Convert uint to double (temp double) -0:121 'us' (uniform uint) +0:121 us: direct index for structure (layout(offset=100 ) uniform uint) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:121 Constant: +0:121 8 (const uint) 0:122 vector scale second child into first child (temp 3-component vector of double) 0:122 'r42' (temp 3-component vector of double) 0:122 Convert float to double (temp double) -0:122 'fs' (uniform float) +0:122 fs: direct index for structure (layout(offset=96 ) uniform float) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:122 Constant: +0:122 7 (const uint) 0:123 vector scale second child into first child (temp 3-component vector of double) 0:123 'r43' (temp 3-component vector of double) 0:123 Convert bool to double (temp double) -0:123 'bs' (uniform bool) +0:123 bs: direct index for structure (layout(offset=92 ) uniform bool) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:123 Constant: +0:123 6 (const uint) 0:193 Sequence 0:193 move second child to first child (temp int) 0:193 'c1' (temp int) @@ -1029,27 +1572,18 @@ gl_FragCoord origin is upper left 0:200 0 (const int) 0:200 Branch: Return 0:? Linker Objects -0:? 'i3' (uniform 3-component vector of int) -0:? 'b3' (uniform 3-component vector of bool) -0:? 'f3' (uniform 3-component vector of float) -0:? 'u3' (uniform 3-component vector of uint) -0:? 'd3' (uniform 3-component vector of double) -0:? 'is' (uniform int) -0:? 'bs' (uniform bool) -0:? 'fs' (uniform float) -0:? 'us' (uniform uint) -0:? 'ds' (uniform double) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 481 +// Id's are bound by 591 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 477 + EntryPoint Fragment 4 "main" 587 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 11 "Fn_F3(vf3;" @@ -1102,44 +1636,58 @@ gl_FragCoord origin is upper left Name 100 "p" Name 104 "Fn_R_D3F(vd3;" Name 103 "p" - Name 107 "i3" - Name 115 "u3" - Name 123 "b3" - Name 135 "d3" - Name 159 "f3" - Name 252 "r00" - Name 255 "r01" - Name 258 "r02" - Name 261 "r03" - Name 264 "r10" - Name 267 "r11" - Name 270 "r12" - Name 273 "r13" - Name 276 "r20" - Name 279 "r21" - Name 282 "r22" - Name 285 "r23" - Name 288 "r30" - Name 291 "r31" - Name 294 "r32" - Name 297 "r33" - Name 300 "r40" - Name 303 "r41" - Name 306 "r42" - Name 309 "r43" - Name 377 "is" - Name 383 "bs" - Name 389 "us" - Name 395 "ds" - Name 411 "fs" - Name 459 "c1" - Name 461 "c2" - Name 464 "outval" - Name 471 "PS_OUTPUT" - MemberName 471(PS_OUTPUT) 0 "Color" - Name 473 "psout" - Name 477 "Color" - Decorate 477(Color) Location 0 + Name 106 "$Global" + MemberName 106($Global) 0 "i3" + MemberName 106($Global) 1 "b3" + MemberName 106($Global) 2 "f3" + MemberName 106($Global) 3 "u3" + MemberName 106($Global) 4 "d3" + MemberName 106($Global) 5 "is" + MemberName 106($Global) 6 "bs" + MemberName 106($Global) 7 "fs" + MemberName 106($Global) 8 "us" + MemberName 106($Global) 9 "ds" + Name 108 "" + Name 300 "r00" + Name 304 "r01" + Name 309 "r02" + Name 313 "r03" + Name 317 "r10" + Name 322 "r11" + Name 326 "r12" + Name 330 "r13" + Name 334 "r20" + Name 339 "r21" + Name 343 "r22" + Name 347 "r23" + Name 351 "r30" + Name 355 "r31" + Name 359 "r32" + Name 363 "r33" + Name 367 "r40" + Name 371 "r41" + Name 375 "r42" + Name 379 "r43" + Name 570 "c1" + Name 571 "c2" + Name 574 "outval" + Name 581 "PS_OUTPUT" + MemberName 581(PS_OUTPUT) 0 "Color" + Name 583 "psout" + Name 587 "Color" + MemberDecorate 106($Global) 0 Offset 0 + MemberDecorate 106($Global) 1 Offset 16 + MemberDecorate 106($Global) 2 Offset 32 + MemberDecorate 106($Global) 3 Offset 48 + MemberDecorate 106($Global) 4 Offset 64 + MemberDecorate 106($Global) 5 Offset 88 + MemberDecorate 106($Global) 6 Offset 92 + MemberDecorate 106($Global) 7 Offset 96 + MemberDecorate 106($Global) 8 Offset 100 + MemberDecorate 106($Global) 9 Offset 104 + Decorate 106($Global) Block + Decorate 108 DescriptorSet 0 + Decorate 587(Color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -1167,319 +1715,381 @@ gl_FragCoord origin is upper left 67: TypeFunction 21(ivec3) 22(ptr) 80: TypeFunction 28(bvec3) 29(ptr) 93: TypeFunction 35(fvec3) 36(ptr) - 106: TypePointer UniformConstant 14(ivec3) - 107(i3): 106(ptr) Variable UniformConstant - 114: TypePointer UniformConstant 21(ivec3) - 115(u3): 114(ptr) Variable UniformConstant - 122: TypePointer UniformConstant 28(bvec3) - 123(b3): 122(ptr) Variable UniformConstant - 125: 6(float) Constant 0 - 126: 6(float) Constant 1065353216 - 127: 7(fvec3) ConstantComposite 125 125 125 - 128: 7(fvec3) ConstantComposite 126 126 126 - 134: TypePointer UniformConstant 35(fvec3) - 135(d3): 134(ptr) Variable UniformConstant - 149: 13(int) Constant 0 - 150: 13(int) Constant 1 - 151: 14(ivec3) ConstantComposite 149 149 149 - 152: 14(ivec3) ConstantComposite 150 150 150 - 158: TypePointer UniformConstant 7(fvec3) - 159(f3): 158(ptr) Variable UniformConstant - 185: 20(int) Constant 0 - 186: 20(int) Constant 1 - 187: 21(ivec3) ConstantComposite 185 185 185 - 188: 21(ivec3) ConstantComposite 186 186 186 - 219: 34(float) Constant 0 0 - 220: 35(fvec3) ConstantComposite 219 219 219 - 239: 34(float) Constant 0 1072693248 - 240: 35(fvec3) ConstantComposite 239 239 239 - 376: TypePointer UniformConstant 13(int) - 377(is): 376(ptr) Variable UniformConstant - 382: TypePointer UniformConstant 27(bool) - 383(bs): 382(ptr) Variable UniformConstant - 388: TypePointer UniformConstant 20(int) - 389(us): 388(ptr) Variable UniformConstant - 394: TypePointer UniformConstant 34(float) - 395(ds): 394(ptr) Variable UniformConstant - 410: TypePointer UniformConstant 6(float) - 411(fs): 410(ptr) Variable UniformConstant - 458: TypePointer Function 13(int) - 460: 13(int) Constant 3 - 462: TypeVector 6(float) 4 - 463: TypePointer Function 462(fvec4) - 465: 6(float) Constant 1080452710 - 471(PS_OUTPUT): TypeStruct 462(fvec4) - 472: TypePointer Function 471(PS_OUTPUT) - 476: TypePointer Output 462(fvec4) - 477(Color): 476(ptr) Variable Output + 106($Global): TypeStruct 14(ivec3) 21(ivec3) 7(fvec3) 21(ivec3) 35(fvec3) 13(int) 20(int) 6(float) 20(int) 34(float) + 107: TypePointer Uniform 106($Global) + 108: 107(ptr) Variable Uniform + 109: 13(int) Constant 0 + 110: TypePointer Uniform 14(ivec3) + 119: 13(int) Constant 3 + 120: TypePointer Uniform 21(ivec3) + 129: 13(int) Constant 1 + 132: 20(int) Constant 0 + 133: 21(ivec3) ConstantComposite 132 132 132 + 135: 6(float) Constant 0 + 136: 6(float) Constant 1065353216 + 137: 7(fvec3) ConstantComposite 135 135 135 + 138: 7(fvec3) ConstantComposite 136 136 136 + 146: 13(int) Constant 4 + 147: TypePointer Uniform 35(fvec3) + 167: 14(ivec3) ConstantComposite 109 109 109 + 168: 14(ivec3) ConstantComposite 129 129 129 + 176: 13(int) Constant 2 + 177: TypePointer Uniform 7(fvec3) + 213: 20(int) Constant 1 + 214: 21(ivec3) ConstantComposite 213 213 213 + 256: 34(float) Constant 0 0 + 257: 35(fvec3) ConstantComposite 256 256 256 + 283: 34(float) Constant 0 1072693248 + 284: 35(fvec3) ConstantComposite 283 283 283 + 468: 13(int) Constant 5 + 469: TypePointer Uniform 13(int) + 475: 13(int) Constant 6 + 476: TypePointer Uniform 20(int) + 483: 13(int) Constant 8 + 489: 13(int) Constant 9 + 490: TypePointer Uniform 34(float) + 509: 13(int) Constant 7 + 510: TypePointer Uniform 6(float) + 569: TypePointer Function 13(int) + 572: TypeVector 6(float) 4 + 573: TypePointer Function 572(fvec4) + 575: 6(float) Constant 1080452710 + 581(PS_OUTPUT): TypeStruct 572(fvec4) + 582: TypePointer Function 581(PS_OUTPUT) + 586: TypePointer Output 572(fvec4) + 587(Color): 586(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 252(r00): 8(ptr) Variable Function - 255(r01): 8(ptr) Variable Function - 258(r02): 8(ptr) Variable Function - 261(r03): 8(ptr) Variable Function - 264(r10): 15(ptr) Variable Function - 267(r11): 15(ptr) Variable Function - 270(r12): 15(ptr) Variable Function - 273(r13): 15(ptr) Variable Function - 276(r20): 22(ptr) Variable Function - 279(r21): 22(ptr) Variable Function - 282(r22): 22(ptr) Variable Function - 285(r23): 22(ptr) Variable Function - 288(r30): 29(ptr) Variable Function - 291(r31): 29(ptr) Variable Function - 294(r32): 29(ptr) Variable Function - 297(r33): 29(ptr) Variable Function - 300(r40): 36(ptr) Variable Function - 303(r41): 36(ptr) Variable Function - 306(r42): 36(ptr) Variable Function - 309(r43): 36(ptr) Variable Function - 459(c1): 458(ptr) Variable Function - 461(c2): 458(ptr) Variable Function - 464(outval): 463(ptr) Variable Function - 473(psout): 472(ptr) Variable Function - 253: 14(ivec3) Load 107(i3) - 254: 7(fvec3) ConvertSToF 253 - Store 252(r00) 254 - 256: 28(bvec3) Load 123(b3) - 257: 7(fvec3) Select 256 128 127 - Store 255(r01) 257 - 259: 21(ivec3) Load 115(u3) - 260: 7(fvec3) ConvertUToF 259 - Store 258(r02) 260 - 262: 35(fvec3) Load 135(d3) - 263: 7(fvec3) FConvert 262 - Store 261(r03) 263 - 265: 28(bvec3) Load 123(b3) - 266: 14(ivec3) Select 265 152 151 - Store 264(r10) 266 - 268: 21(ivec3) Load 115(u3) - 269: 14(ivec3) Bitcast 268 - Store 267(r11) 269 - 271: 7(fvec3) Load 159(f3) - 272: 14(ivec3) ConvertFToS 271 - Store 270(r12) 272 - 274: 35(fvec3) Load 135(d3) - 275: 14(ivec3) ConvertFToS 274 - Store 273(r13) 275 - 277: 28(bvec3) Load 123(b3) - 278: 21(ivec3) Select 277 188 187 - Store 276(r20) 278 - 280: 14(ivec3) Load 107(i3) - 281: 21(ivec3) Bitcast 280 - Store 279(r21) 281 - 283: 7(fvec3) Load 159(f3) - 284: 21(ivec3) ConvertFToU 283 - Store 282(r22) 284 - 286: 35(fvec3) Load 135(d3) - 287: 21(ivec3) ConvertFToU 286 - Store 285(r23) 287 - 289: 14(ivec3) Load 107(i3) - 290: 28(bvec3) INotEqual 289 187 - Store 288(r30) 290 - 292: 21(ivec3) Load 115(u3) - 293: 28(bvec3) INotEqual 292 187 - Store 291(r31) 293 - 295: 7(fvec3) Load 159(f3) - 296: 28(bvec3) FOrdNotEqual 295 127 - Store 294(r32) 296 - 298: 35(fvec3) Load 135(d3) - 299: 28(bvec3) FOrdNotEqual 298 220 - Store 297(r33) 299 - 301: 14(ivec3) Load 107(i3) - 302: 35(fvec3) ConvertSToF 301 - Store 300(r40) 302 - 304: 21(ivec3) Load 115(u3) - 305: 35(fvec3) ConvertUToF 304 - Store 303(r41) 305 - 307: 7(fvec3) Load 159(f3) - 308: 35(fvec3) FConvert 307 - Store 306(r42) 308 - 310: 28(bvec3) Load 123(b3) - 311: 35(fvec3) Select 310 240 220 - Store 309(r43) 311 - 312: 14(ivec3) Load 107(i3) - 313: 7(fvec3) ConvertSToF 312 - 314: 7(fvec3) Load 252(r00) - 315: 7(fvec3) FMul 314 313 - Store 252(r00) 315 - 316: 28(bvec3) Load 123(b3) - 317: 7(fvec3) Select 316 128 127 - 318: 7(fvec3) Load 255(r01) - 319: 7(fvec3) FMul 318 317 - Store 255(r01) 319 - 320: 21(ivec3) Load 115(u3) - 321: 7(fvec3) ConvertUToF 320 - 322: 7(fvec3) Load 258(r02) - 323: 7(fvec3) FMul 322 321 - Store 258(r02) 323 - 324: 35(fvec3) Load 135(d3) - 325: 7(fvec3) FConvert 324 - 326: 7(fvec3) Load 261(r03) - 327: 7(fvec3) FMul 326 325 - Store 261(r03) 327 - 328: 28(bvec3) Load 123(b3) - 329: 14(ivec3) Select 328 152 151 - 330: 14(ivec3) Load 264(r10) - 331: 14(ivec3) IMul 330 329 - Store 264(r10) 331 - 332: 21(ivec3) Load 115(u3) - 333: 14(ivec3) Bitcast 332 - 334: 14(ivec3) Load 267(r11) - 335: 14(ivec3) IMul 334 333 - Store 267(r11) 335 - 336: 7(fvec3) Load 159(f3) - 337: 14(ivec3) ConvertFToS 336 - 338: 14(ivec3) Load 270(r12) - 339: 14(ivec3) IMul 338 337 - Store 270(r12) 339 - 340: 35(fvec3) Load 135(d3) - 341: 14(ivec3) ConvertFToS 340 - 342: 14(ivec3) Load 273(r13) - 343: 14(ivec3) IMul 342 341 - Store 273(r13) 343 - 344: 28(bvec3) Load 123(b3) - 345: 21(ivec3) Select 344 188 187 - 346: 21(ivec3) Load 276(r20) - 347: 21(ivec3) IMul 346 345 - Store 276(r20) 347 - 348: 14(ivec3) Load 107(i3) - 349: 21(ivec3) Bitcast 348 - 350: 21(ivec3) Load 279(r21) - 351: 21(ivec3) IMul 350 349 - Store 279(r21) 351 - 352: 7(fvec3) Load 159(f3) - 353: 21(ivec3) ConvertFToU 352 - 354: 21(ivec3) Load 282(r22) - 355: 21(ivec3) IMul 354 353 - Store 282(r22) 355 - 356: 35(fvec3) Load 135(d3) - 357: 21(ivec3) ConvertFToU 356 - 358: 21(ivec3) Load 285(r23) - 359: 21(ivec3) IMul 358 357 - Store 285(r23) 359 - 360: 14(ivec3) Load 107(i3) - 361: 35(fvec3) ConvertSToF 360 - 362: 35(fvec3) Load 300(r40) - 363: 35(fvec3) FMul 362 361 - Store 300(r40) 363 - 364: 21(ivec3) Load 115(u3) - 365: 35(fvec3) ConvertUToF 364 - 366: 35(fvec3) Load 303(r41) - 367: 35(fvec3) FMul 366 365 - Store 303(r41) 367 - 368: 7(fvec3) Load 159(f3) - 369: 35(fvec3) FConvert 368 - 370: 35(fvec3) Load 306(r42) - 371: 35(fvec3) FMul 370 369 - Store 306(r42) 371 - 372: 28(bvec3) Load 123(b3) - 373: 35(fvec3) Select 372 240 220 - 374: 35(fvec3) Load 309(r43) - 375: 35(fvec3) FMul 374 373 - Store 309(r43) 375 - 378: 13(int) Load 377(is) - 379: 6(float) ConvertSToF 378 - 380: 7(fvec3) Load 252(r00) - 381: 7(fvec3) VectorTimesScalar 380 379 - Store 252(r00) 381 - 384: 27(bool) Load 383(bs) - 385: 6(float) Select 384 126 125 - 386: 7(fvec3) Load 255(r01) - 387: 7(fvec3) VectorTimesScalar 386 385 - Store 255(r01) 387 - 390: 20(int) Load 389(us) - 391: 6(float) ConvertUToF 390 - 392: 7(fvec3) Load 258(r02) - 393: 7(fvec3) VectorTimesScalar 392 391 - Store 258(r02) 393 - 396: 34(float) Load 395(ds) - 397: 6(float) FConvert 396 - 398: 7(fvec3) Load 261(r03) - 399: 7(fvec3) VectorTimesScalar 398 397 - Store 261(r03) 399 - 400: 27(bool) Load 383(bs) - 401: 13(int) Select 400 150 149 - 402: 14(ivec3) Load 264(r10) - 403: 14(ivec3) CompositeConstruct 401 401 401 - 404: 14(ivec3) IMul 402 403 - Store 264(r10) 404 - 405: 20(int) Load 389(us) - 406: 13(int) Bitcast 405 - 407: 14(ivec3) Load 267(r11) - 408: 14(ivec3) CompositeConstruct 406 406 406 - 409: 14(ivec3) IMul 407 408 - Store 267(r11) 409 - 412: 6(float) Load 411(fs) - 413: 13(int) ConvertFToS 412 - 414: 14(ivec3) Load 270(r12) - 415: 14(ivec3) CompositeConstruct 413 413 413 - 416: 14(ivec3) IMul 414 415 - Store 270(r12) 416 - 417: 34(float) Load 395(ds) - 418: 13(int) ConvertFToS 417 - 419: 14(ivec3) Load 273(r13) - 420: 14(ivec3) CompositeConstruct 418 418 418 - 421: 14(ivec3) IMul 419 420 - Store 273(r13) 421 - 422: 27(bool) Load 383(bs) - 423: 20(int) Select 422 186 185 - 424: 21(ivec3) Load 276(r20) - 425: 21(ivec3) CompositeConstruct 423 423 423 - 426: 21(ivec3) IMul 424 425 - Store 276(r20) 426 - 427: 13(int) Load 377(is) - 428: 20(int) Bitcast 427 - 429: 21(ivec3) Load 279(r21) - 430: 21(ivec3) CompositeConstruct 428 428 428 - 431: 21(ivec3) IMul 429 430 - Store 279(r21) 431 - 432: 6(float) Load 411(fs) - 433: 20(int) ConvertFToU 432 - 434: 21(ivec3) Load 282(r22) - 435: 21(ivec3) CompositeConstruct 433 433 433 - 436: 21(ivec3) IMul 434 435 - Store 282(r22) 436 - 437: 34(float) Load 395(ds) - 438: 20(int) ConvertFToU 437 - 439: 21(ivec3) Load 285(r23) - 440: 21(ivec3) CompositeConstruct 438 438 438 - 441: 21(ivec3) IMul 439 440 - Store 285(r23) 441 - 442: 13(int) Load 377(is) - 443: 34(float) ConvertSToF 442 - 444: 35(fvec3) Load 300(r40) - 445: 35(fvec3) VectorTimesScalar 444 443 - Store 300(r40) 445 - 446: 20(int) Load 389(us) - 447: 34(float) ConvertUToF 446 - 448: 35(fvec3) Load 303(r41) - 449: 35(fvec3) VectorTimesScalar 448 447 - Store 303(r41) 449 - 450: 6(float) Load 411(fs) - 451: 34(float) FConvert 450 - 452: 35(fvec3) Load 306(r42) - 453: 35(fvec3) VectorTimesScalar 452 451 - Store 306(r42) 453 - 454: 27(bool) Load 383(bs) - 455: 34(float) Select 454 239 219 - 456: 35(fvec3) Load 309(r43) - 457: 35(fvec3) VectorTimesScalar 456 455 - Store 309(r43) 457 - Store 459(c1) 460 - Store 461(c2) 460 - 466: 13(int) Load 459(c1) - 467: 6(float) ConvertSToF 466 - 468: 13(int) Load 461(c2) - 469: 6(float) ConvertSToF 468 - 470: 462(fvec4) CompositeConstruct 465 465 467 469 - Store 464(outval) 470 - 474: 462(fvec4) Load 464(outval) - 475: 463(ptr) AccessChain 473(psout) 149 - Store 475 474 - 478: 463(ptr) AccessChain 473(psout) 149 - 479: 462(fvec4) Load 478 - Store 477(Color) 479 + 300(r00): 8(ptr) Variable Function + 304(r01): 8(ptr) Variable Function + 309(r02): 8(ptr) Variable Function + 313(r03): 8(ptr) Variable Function + 317(r10): 15(ptr) Variable Function + 322(r11): 15(ptr) Variable Function + 326(r12): 15(ptr) Variable Function + 330(r13): 15(ptr) Variable Function + 334(r20): 22(ptr) Variable Function + 339(r21): 22(ptr) Variable Function + 343(r22): 22(ptr) Variable Function + 347(r23): 22(ptr) Variable Function + 351(r30): 29(ptr) Variable Function + 355(r31): 29(ptr) Variable Function + 359(r32): 29(ptr) Variable Function + 363(r33): 29(ptr) Variable Function + 367(r40): 36(ptr) Variable Function + 371(r41): 36(ptr) Variable Function + 375(r42): 36(ptr) Variable Function + 379(r43): 36(ptr) Variable Function + 570(c1): 569(ptr) Variable Function + 571(c2): 569(ptr) Variable Function + 574(outval): 573(ptr) Variable Function + 583(psout): 582(ptr) Variable Function + 301: 110(ptr) AccessChain 108 109 + 302: 14(ivec3) Load 301 + 303: 7(fvec3) ConvertSToF 302 + Store 300(r00) 303 + 305: 120(ptr) AccessChain 108 129 + 306: 21(ivec3) Load 305 + 307: 28(bvec3) INotEqual 306 133 + 308: 7(fvec3) Select 307 138 137 + Store 304(r01) 308 + 310: 120(ptr) AccessChain 108 119 + 311: 21(ivec3) Load 310 + 312: 7(fvec3) ConvertUToF 311 + Store 309(r02) 312 + 314: 147(ptr) AccessChain 108 146 + 315: 35(fvec3) Load 314 + 316: 7(fvec3) FConvert 315 + Store 313(r03) 316 + 318: 120(ptr) AccessChain 108 129 + 319: 21(ivec3) Load 318 + 320: 28(bvec3) INotEqual 319 133 + 321: 14(ivec3) Select 320 168 167 + Store 317(r10) 321 + 323: 120(ptr) AccessChain 108 119 + 324: 21(ivec3) Load 323 + 325: 14(ivec3) Bitcast 324 + Store 322(r11) 325 + 327: 177(ptr) AccessChain 108 176 + 328: 7(fvec3) Load 327 + 329: 14(ivec3) ConvertFToS 328 + Store 326(r12) 329 + 331: 147(ptr) AccessChain 108 146 + 332: 35(fvec3) Load 331 + 333: 14(ivec3) ConvertFToS 332 + Store 330(r13) 333 + 335: 120(ptr) AccessChain 108 129 + 336: 21(ivec3) Load 335 + 337: 28(bvec3) INotEqual 336 133 + 338: 21(ivec3) Select 337 214 133 + Store 334(r20) 338 + 340: 110(ptr) AccessChain 108 109 + 341: 14(ivec3) Load 340 + 342: 21(ivec3) Bitcast 341 + Store 339(r21) 342 + 344: 177(ptr) AccessChain 108 176 + 345: 7(fvec3) Load 344 + 346: 21(ivec3) ConvertFToU 345 + Store 343(r22) 346 + 348: 147(ptr) AccessChain 108 146 + 349: 35(fvec3) Load 348 + 350: 21(ivec3) ConvertFToU 349 + Store 347(r23) 350 + 352: 110(ptr) AccessChain 108 109 + 353: 14(ivec3) Load 352 + 354: 28(bvec3) INotEqual 353 133 + Store 351(r30) 354 + 356: 120(ptr) AccessChain 108 119 + 357: 21(ivec3) Load 356 + 358: 28(bvec3) INotEqual 357 133 + Store 355(r31) 358 + 360: 177(ptr) AccessChain 108 176 + 361: 7(fvec3) Load 360 + 362: 28(bvec3) FOrdNotEqual 361 137 + Store 359(r32) 362 + 364: 147(ptr) AccessChain 108 146 + 365: 35(fvec3) Load 364 + 366: 28(bvec3) FOrdNotEqual 365 257 + Store 363(r33) 366 + 368: 110(ptr) AccessChain 108 109 + 369: 14(ivec3) Load 368 + 370: 35(fvec3) ConvertSToF 369 + Store 367(r40) 370 + 372: 120(ptr) AccessChain 108 119 + 373: 21(ivec3) Load 372 + 374: 35(fvec3) ConvertUToF 373 + Store 371(r41) 374 + 376: 177(ptr) AccessChain 108 176 + 377: 7(fvec3) Load 376 + 378: 35(fvec3) FConvert 377 + Store 375(r42) 378 + 380: 120(ptr) AccessChain 108 129 + 381: 21(ivec3) Load 380 + 382: 28(bvec3) INotEqual 381 133 + 383: 35(fvec3) Select 382 284 257 + Store 379(r43) 383 + 384: 110(ptr) AccessChain 108 109 + 385: 14(ivec3) Load 384 + 386: 7(fvec3) ConvertSToF 385 + 387: 7(fvec3) Load 300(r00) + 388: 7(fvec3) FMul 387 386 + Store 300(r00) 388 + 389: 120(ptr) AccessChain 108 129 + 390: 21(ivec3) Load 389 + 391: 28(bvec3) INotEqual 390 133 + 392: 7(fvec3) Select 391 138 137 + 393: 7(fvec3) Load 304(r01) + 394: 7(fvec3) FMul 393 392 + Store 304(r01) 394 + 395: 120(ptr) AccessChain 108 119 + 396: 21(ivec3) Load 395 + 397: 7(fvec3) ConvertUToF 396 + 398: 7(fvec3) Load 309(r02) + 399: 7(fvec3) FMul 398 397 + Store 309(r02) 399 + 400: 147(ptr) AccessChain 108 146 + 401: 35(fvec3) Load 400 + 402: 7(fvec3) FConvert 401 + 403: 7(fvec3) Load 313(r03) + 404: 7(fvec3) FMul 403 402 + Store 313(r03) 404 + 405: 120(ptr) AccessChain 108 129 + 406: 21(ivec3) Load 405 + 407: 28(bvec3) INotEqual 406 133 + 408: 14(ivec3) Select 407 168 167 + 409: 14(ivec3) Load 317(r10) + 410: 14(ivec3) IMul 409 408 + Store 317(r10) 410 + 411: 120(ptr) AccessChain 108 119 + 412: 21(ivec3) Load 411 + 413: 14(ivec3) Bitcast 412 + 414: 14(ivec3) Load 322(r11) + 415: 14(ivec3) IMul 414 413 + Store 322(r11) 415 + 416: 177(ptr) AccessChain 108 176 + 417: 7(fvec3) Load 416 + 418: 14(ivec3) ConvertFToS 417 + 419: 14(ivec3) Load 326(r12) + 420: 14(ivec3) IMul 419 418 + Store 326(r12) 420 + 421: 147(ptr) AccessChain 108 146 + 422: 35(fvec3) Load 421 + 423: 14(ivec3) ConvertFToS 422 + 424: 14(ivec3) Load 330(r13) + 425: 14(ivec3) IMul 424 423 + Store 330(r13) 425 + 426: 120(ptr) AccessChain 108 129 + 427: 21(ivec3) Load 426 + 428: 28(bvec3) INotEqual 427 133 + 429: 21(ivec3) Select 428 214 133 + 430: 21(ivec3) Load 334(r20) + 431: 21(ivec3) IMul 430 429 + Store 334(r20) 431 + 432: 110(ptr) AccessChain 108 109 + 433: 14(ivec3) Load 432 + 434: 21(ivec3) Bitcast 433 + 435: 21(ivec3) Load 339(r21) + 436: 21(ivec3) IMul 435 434 + Store 339(r21) 436 + 437: 177(ptr) AccessChain 108 176 + 438: 7(fvec3) Load 437 + 439: 21(ivec3) ConvertFToU 438 + 440: 21(ivec3) Load 343(r22) + 441: 21(ivec3) IMul 440 439 + Store 343(r22) 441 + 442: 147(ptr) AccessChain 108 146 + 443: 35(fvec3) Load 442 + 444: 21(ivec3) ConvertFToU 443 + 445: 21(ivec3) Load 347(r23) + 446: 21(ivec3) IMul 445 444 + Store 347(r23) 446 + 447: 110(ptr) AccessChain 108 109 + 448: 14(ivec3) Load 447 + 449: 35(fvec3) ConvertSToF 448 + 450: 35(fvec3) Load 367(r40) + 451: 35(fvec3) FMul 450 449 + Store 367(r40) 451 + 452: 120(ptr) AccessChain 108 119 + 453: 21(ivec3) Load 452 + 454: 35(fvec3) ConvertUToF 453 + 455: 35(fvec3) Load 371(r41) + 456: 35(fvec3) FMul 455 454 + Store 371(r41) 456 + 457: 177(ptr) AccessChain 108 176 + 458: 7(fvec3) Load 457 + 459: 35(fvec3) FConvert 458 + 460: 35(fvec3) Load 375(r42) + 461: 35(fvec3) FMul 460 459 + Store 375(r42) 461 + 462: 120(ptr) AccessChain 108 129 + 463: 21(ivec3) Load 462 + 464: 28(bvec3) INotEqual 463 133 + 465: 35(fvec3) Select 464 284 257 + 466: 35(fvec3) Load 379(r43) + 467: 35(fvec3) FMul 466 465 + Store 379(r43) 467 + 470: 469(ptr) AccessChain 108 468 + 471: 13(int) Load 470 + 472: 6(float) ConvertSToF 471 + 473: 7(fvec3) Load 300(r00) + 474: 7(fvec3) VectorTimesScalar 473 472 + Store 300(r00) 474 + 477: 476(ptr) AccessChain 108 475 + 478: 20(int) Load 477 + 479: 27(bool) INotEqual 478 132 + 480: 6(float) Select 479 136 135 + 481: 7(fvec3) Load 304(r01) + 482: 7(fvec3) VectorTimesScalar 481 480 + Store 304(r01) 482 + 484: 476(ptr) AccessChain 108 483 + 485: 20(int) Load 484 + 486: 6(float) ConvertUToF 485 + 487: 7(fvec3) Load 309(r02) + 488: 7(fvec3) VectorTimesScalar 487 486 + Store 309(r02) 488 + 491: 490(ptr) AccessChain 108 489 + 492: 34(float) Load 491 + 493: 6(float) FConvert 492 + 494: 7(fvec3) Load 313(r03) + 495: 7(fvec3) VectorTimesScalar 494 493 + Store 313(r03) 495 + 496: 476(ptr) AccessChain 108 475 + 497: 20(int) Load 496 + 498: 27(bool) INotEqual 497 132 + 499: 13(int) Select 498 129 109 + 500: 14(ivec3) Load 317(r10) + 501: 14(ivec3) CompositeConstruct 499 499 499 + 502: 14(ivec3) IMul 500 501 + Store 317(r10) 502 + 503: 476(ptr) AccessChain 108 483 + 504: 20(int) Load 503 + 505: 13(int) Bitcast 504 + 506: 14(ivec3) Load 322(r11) + 507: 14(ivec3) CompositeConstruct 505 505 505 + 508: 14(ivec3) IMul 506 507 + Store 322(r11) 508 + 511: 510(ptr) AccessChain 108 509 + 512: 6(float) Load 511 + 513: 13(int) ConvertFToS 512 + 514: 14(ivec3) Load 326(r12) + 515: 14(ivec3) CompositeConstruct 513 513 513 + 516: 14(ivec3) IMul 514 515 + Store 326(r12) 516 + 517: 490(ptr) AccessChain 108 489 + 518: 34(float) Load 517 + 519: 13(int) ConvertFToS 518 + 520: 14(ivec3) Load 330(r13) + 521: 14(ivec3) CompositeConstruct 519 519 519 + 522: 14(ivec3) IMul 520 521 + Store 330(r13) 522 + 523: 476(ptr) AccessChain 108 475 + 524: 20(int) Load 523 + 525: 27(bool) INotEqual 524 132 + 526: 20(int) Select 525 213 132 + 527: 21(ivec3) Load 334(r20) + 528: 21(ivec3) CompositeConstruct 526 526 526 + 529: 21(ivec3) IMul 527 528 + Store 334(r20) 529 + 530: 469(ptr) AccessChain 108 468 + 531: 13(int) Load 530 + 532: 20(int) Bitcast 531 + 533: 21(ivec3) Load 339(r21) + 534: 21(ivec3) CompositeConstruct 532 532 532 + 535: 21(ivec3) IMul 533 534 + Store 339(r21) 535 + 536: 510(ptr) AccessChain 108 509 + 537: 6(float) Load 536 + 538: 20(int) ConvertFToU 537 + 539: 21(ivec3) Load 343(r22) + 540: 21(ivec3) CompositeConstruct 538 538 538 + 541: 21(ivec3) IMul 539 540 + Store 343(r22) 541 + 542: 490(ptr) AccessChain 108 489 + 543: 34(float) Load 542 + 544: 20(int) ConvertFToU 543 + 545: 21(ivec3) Load 347(r23) + 546: 21(ivec3) CompositeConstruct 544 544 544 + 547: 21(ivec3) IMul 545 546 + Store 347(r23) 547 + 548: 469(ptr) AccessChain 108 468 + 549: 13(int) Load 548 + 550: 34(float) ConvertSToF 549 + 551: 35(fvec3) Load 367(r40) + 552: 35(fvec3) VectorTimesScalar 551 550 + Store 367(r40) 552 + 553: 476(ptr) AccessChain 108 483 + 554: 20(int) Load 553 + 555: 34(float) ConvertUToF 554 + 556: 35(fvec3) Load 371(r41) + 557: 35(fvec3) VectorTimesScalar 556 555 + Store 371(r41) 557 + 558: 510(ptr) AccessChain 108 509 + 559: 6(float) Load 558 + 560: 34(float) FConvert 559 + 561: 35(fvec3) Load 375(r42) + 562: 35(fvec3) VectorTimesScalar 561 560 + Store 375(r42) 562 + 563: 476(ptr) AccessChain 108 475 + 564: 20(int) Load 563 + 565: 27(bool) INotEqual 564 132 + 566: 34(float) Select 565 283 256 + 567: 35(fvec3) Load 379(r43) + 568: 35(fvec3) VectorTimesScalar 567 566 + Store 379(r43) 568 + Store 570(c1) 119 + Store 571(c2) 119 + 576: 13(int) Load 570(c1) + 577: 6(float) ConvertSToF 576 + 578: 13(int) Load 571(c2) + 579: 6(float) ConvertSToF 578 + 580: 572(fvec4) CompositeConstruct 575 575 577 579 + Store 574(outval) 580 + 584: 572(fvec4) Load 574(outval) + 585: 573(ptr) AccessChain 583(psout) 109 + Store 585 584 + 588: 573(ptr) AccessChain 583(psout) 109 + 589: 572(fvec4) Load 588 + Store 587(Color) 589 Return FunctionEnd 11(Fn_F3(vf3;): 2 Function None 9 @@ -1510,200 +2120,248 @@ gl_FragCoord origin is upper left 43(Fn_R_F3I(vf3;): 7(fvec3) Function None 41 42(p): 8(ptr) FunctionParameter 44: Label - 108: 14(ivec3) Load 107(i3) - 109: 7(fvec3) ConvertSToF 108 - Store 42(p) 109 - 110: 14(ivec3) Load 107(i3) - 111: 7(fvec3) ConvertSToF 110 - ReturnValue 111 + 111: 110(ptr) AccessChain 108 109 + 112: 14(ivec3) Load 111 + 113: 7(fvec3) ConvertSToF 112 + Store 42(p) 113 + 114: 110(ptr) AccessChain 108 109 + 115: 14(ivec3) Load 114 + 116: 7(fvec3) ConvertSToF 115 + ReturnValue 116 FunctionEnd 46(Fn_R_F3U(vf3;): 7(fvec3) Function None 41 45(p): 8(ptr) FunctionParameter 47: Label - 116: 21(ivec3) Load 115(u3) - 117: 7(fvec3) ConvertUToF 116 - Store 45(p) 117 - 118: 21(ivec3) Load 115(u3) - 119: 7(fvec3) ConvertUToF 118 - ReturnValue 119 + 121: 120(ptr) AccessChain 108 119 + 122: 21(ivec3) Load 121 + 123: 7(fvec3) ConvertUToF 122 + Store 45(p) 123 + 124: 120(ptr) AccessChain 108 119 + 125: 21(ivec3) Load 124 + 126: 7(fvec3) ConvertUToF 125 + ReturnValue 126 FunctionEnd 49(Fn_R_F3B(vf3;): 7(fvec3) Function None 41 48(p): 8(ptr) FunctionParameter 50: Label - 124: 28(bvec3) Load 123(b3) - 129: 7(fvec3) Select 124 128 127 - Store 48(p) 129 - 130: 28(bvec3) Load 123(b3) - 131: 7(fvec3) Select 130 128 127 - ReturnValue 131 + 130: 120(ptr) AccessChain 108 129 + 131: 21(ivec3) Load 130 + 134: 28(bvec3) INotEqual 131 133 + 139: 7(fvec3) Select 134 138 137 + Store 48(p) 139 + 140: 120(ptr) AccessChain 108 129 + 141: 21(ivec3) Load 140 + 142: 28(bvec3) INotEqual 141 133 + 143: 7(fvec3) Select 142 138 137 + ReturnValue 143 FunctionEnd 52(Fn_R_F3D(vf3;): 7(fvec3) Function None 41 51(p): 8(ptr) FunctionParameter 53: Label - 136: 35(fvec3) Load 135(d3) - 137: 7(fvec3) FConvert 136 - Store 51(p) 137 - 138: 35(fvec3) Load 135(d3) - 139: 7(fvec3) FConvert 138 - ReturnValue 139 + 148: 147(ptr) AccessChain 108 146 + 149: 35(fvec3) Load 148 + 150: 7(fvec3) FConvert 149 + Store 51(p) 150 + 151: 147(ptr) AccessChain 108 146 + 152: 35(fvec3) Load 151 + 153: 7(fvec3) FConvert 152 + ReturnValue 153 FunctionEnd 56(Fn_R_I3U(vi3;): 14(ivec3) Function None 54 55(p): 15(ptr) FunctionParameter 57: Label - 142: 21(ivec3) Load 115(u3) - 143: 14(ivec3) Bitcast 142 - Store 55(p) 143 - 144: 21(ivec3) Load 115(u3) - 145: 14(ivec3) Bitcast 144 - ReturnValue 145 + 156: 120(ptr) AccessChain 108 119 + 157: 21(ivec3) Load 156 + 158: 14(ivec3) Bitcast 157 + Store 55(p) 158 + 159: 120(ptr) AccessChain 108 119 + 160: 21(ivec3) Load 159 + 161: 14(ivec3) Bitcast 160 + ReturnValue 161 FunctionEnd 59(Fn_R_I3B(vi3;): 14(ivec3) Function None 54 58(p): 15(ptr) FunctionParameter 60: Label - 148: 28(bvec3) Load 123(b3) - 153: 14(ivec3) Select 148 152 151 - Store 58(p) 153 - 154: 28(bvec3) Load 123(b3) - 155: 14(ivec3) Select 154 152 151 - ReturnValue 155 + 164: 120(ptr) AccessChain 108 129 + 165: 21(ivec3) Load 164 + 166: 28(bvec3) INotEqual 165 133 + 169: 14(ivec3) Select 166 168 167 + Store 58(p) 169 + 170: 120(ptr) AccessChain 108 129 + 171: 21(ivec3) Load 170 + 172: 28(bvec3) INotEqual 171 133 + 173: 14(ivec3) Select 172 168 167 + ReturnValue 173 FunctionEnd 62(Fn_R_I3F(vi3;): 14(ivec3) Function None 54 61(p): 15(ptr) FunctionParameter 63: Label - 160: 7(fvec3) Load 159(f3) - 161: 14(ivec3) ConvertFToS 160 - Store 61(p) 161 - 162: 7(fvec3) Load 159(f3) - 163: 14(ivec3) ConvertFToS 162 - ReturnValue 163 + 178: 177(ptr) AccessChain 108 176 + 179: 7(fvec3) Load 178 + 180: 14(ivec3) ConvertFToS 179 + Store 61(p) 180 + 181: 177(ptr) AccessChain 108 176 + 182: 7(fvec3) Load 181 + 183: 14(ivec3) ConvertFToS 182 + ReturnValue 183 FunctionEnd 65(Fn_R_I3D(vi3;): 14(ivec3) Function None 54 64(p): 15(ptr) FunctionParameter 66: Label - 166: 35(fvec3) Load 135(d3) - 167: 14(ivec3) ConvertFToS 166 - Store 64(p) 167 - 168: 35(fvec3) Load 135(d3) - 169: 14(ivec3) ConvertFToS 168 - ReturnValue 169 + 186: 147(ptr) AccessChain 108 146 + 187: 35(fvec3) Load 186 + 188: 14(ivec3) ConvertFToS 187 + Store 64(p) 188 + 189: 147(ptr) AccessChain 108 146 + 190: 35(fvec3) Load 189 + 191: 14(ivec3) ConvertFToS 190 + ReturnValue 191 FunctionEnd 69(Fn_R_U3I(vu3;): 21(ivec3) Function None 67 68(p): 22(ptr) FunctionParameter 70: Label - 172: 14(ivec3) Load 107(i3) - 173: 21(ivec3) Bitcast 172 - Store 68(p) 173 - 174: 14(ivec3) Load 107(i3) - 175: 21(ivec3) Bitcast 174 - ReturnValue 175 + 194: 110(ptr) AccessChain 108 109 + 195: 14(ivec3) Load 194 + 196: 21(ivec3) Bitcast 195 + Store 68(p) 196 + 197: 110(ptr) AccessChain 108 109 + 198: 14(ivec3) Load 197 + 199: 21(ivec3) Bitcast 198 + ReturnValue 199 FunctionEnd 72(Fn_R_U3F(vu3;): 21(ivec3) Function None 67 71(p): 22(ptr) FunctionParameter 73: Label - 178: 7(fvec3) Load 159(f3) - 179: 21(ivec3) ConvertFToU 178 - Store 71(p) 179 - 180: 7(fvec3) Load 159(f3) - 181: 21(ivec3) ConvertFToU 180 - ReturnValue 181 + 202: 177(ptr) AccessChain 108 176 + 203: 7(fvec3) Load 202 + 204: 21(ivec3) ConvertFToU 203 + Store 71(p) 204 + 205: 177(ptr) AccessChain 108 176 + 206: 7(fvec3) Load 205 + 207: 21(ivec3) ConvertFToU 206 + ReturnValue 207 FunctionEnd 75(Fn_R_U3B(vu3;): 21(ivec3) Function None 67 74(p): 22(ptr) FunctionParameter 76: Label - 184: 28(bvec3) Load 123(b3) - 189: 21(ivec3) Select 184 188 187 - Store 74(p) 189 - 190: 28(bvec3) Load 123(b3) - 191: 21(ivec3) Select 190 188 187 - ReturnValue 191 + 210: 120(ptr) AccessChain 108 129 + 211: 21(ivec3) Load 210 + 212: 28(bvec3) INotEqual 211 133 + 215: 21(ivec3) Select 212 214 133 + Store 74(p) 215 + 216: 120(ptr) AccessChain 108 129 + 217: 21(ivec3) Load 216 + 218: 28(bvec3) INotEqual 217 133 + 219: 21(ivec3) Select 218 214 133 + ReturnValue 219 FunctionEnd 78(Fn_R_U3D(vu3;): 21(ivec3) Function None 67 77(p): 22(ptr) FunctionParameter 79: Label - 194: 35(fvec3) Load 135(d3) - 195: 21(ivec3) ConvertFToU 194 - Store 77(p) 195 - 196: 35(fvec3) Load 135(d3) - 197: 21(ivec3) ConvertFToU 196 - ReturnValue 197 + 222: 147(ptr) AccessChain 108 146 + 223: 35(fvec3) Load 222 + 224: 21(ivec3) ConvertFToU 223 + Store 77(p) 224 + 225: 147(ptr) AccessChain 108 146 + 226: 35(fvec3) Load 225 + 227: 21(ivec3) ConvertFToU 226 + ReturnValue 227 FunctionEnd 82(Fn_R_B3I(vb3;): 28(bvec3) Function None 80 81(p): 29(ptr) FunctionParameter 83: Label - 200: 14(ivec3) Load 107(i3) - 201: 28(bvec3) INotEqual 200 187 - Store 81(p) 201 - 202: 14(ivec3) Load 107(i3) - 203: 28(bvec3) INotEqual 202 187 - ReturnValue 203 + 230: 110(ptr) AccessChain 108 109 + 231: 14(ivec3) Load 230 + 232: 28(bvec3) INotEqual 231 133 + Store 81(p) 232 + 233: 110(ptr) AccessChain 108 109 + 234: 14(ivec3) Load 233 + 235: 28(bvec3) INotEqual 234 133 + ReturnValue 235 FunctionEnd 85(Fn_R_B3U(vb3;): 28(bvec3) Function None 80 84(p): 29(ptr) FunctionParameter 86: Label - 206: 21(ivec3) Load 115(u3) - 207: 28(bvec3) INotEqual 206 187 - Store 84(p) 207 - 208: 21(ivec3) Load 115(u3) - 209: 28(bvec3) INotEqual 208 187 - ReturnValue 209 + 238: 120(ptr) AccessChain 108 119 + 239: 21(ivec3) Load 238 + 240: 28(bvec3) INotEqual 239 133 + Store 84(p) 240 + 241: 120(ptr) AccessChain 108 119 + 242: 21(ivec3) Load 241 + 243: 28(bvec3) INotEqual 242 133 + ReturnValue 243 FunctionEnd 88(Fn_R_B3F(vb3;): 28(bvec3) Function None 80 87(p): 29(ptr) FunctionParameter 89: Label - 212: 7(fvec3) Load 159(f3) - 213: 28(bvec3) FOrdNotEqual 212 127 - Store 87(p) 213 - 214: 7(fvec3) Load 159(f3) - 215: 28(bvec3) FOrdNotEqual 214 127 - ReturnValue 215 + 246: 177(ptr) AccessChain 108 176 + 247: 7(fvec3) Load 246 + 248: 28(bvec3) FOrdNotEqual 247 137 + Store 87(p) 248 + 249: 177(ptr) AccessChain 108 176 + 250: 7(fvec3) Load 249 + 251: 28(bvec3) FOrdNotEqual 250 137 + ReturnValue 251 FunctionEnd 91(Fn_R_B3D(vb3;): 28(bvec3) Function None 80 90(p): 29(ptr) FunctionParameter 92: Label - 218: 35(fvec3) Load 135(d3) - 221: 28(bvec3) FOrdNotEqual 218 220 - Store 90(p) 221 - 222: 35(fvec3) Load 135(d3) - 223: 28(bvec3) FOrdNotEqual 222 220 - ReturnValue 223 + 254: 147(ptr) AccessChain 108 146 + 255: 35(fvec3) Load 254 + 258: 28(bvec3) FOrdNotEqual 255 257 + Store 90(p) 258 + 259: 147(ptr) AccessChain 108 146 + 260: 35(fvec3) Load 259 + 261: 28(bvec3) FOrdNotEqual 260 257 + ReturnValue 261 FunctionEnd 95(Fn_R_D3I(vd3;): 35(fvec3) Function None 93 94(p): 36(ptr) FunctionParameter 96: Label - 226: 14(ivec3) Load 107(i3) - 227: 35(fvec3) ConvertSToF 226 - Store 94(p) 227 - 228: 14(ivec3) Load 107(i3) - 229: 35(fvec3) ConvertSToF 228 - ReturnValue 229 + 264: 110(ptr) AccessChain 108 109 + 265: 14(ivec3) Load 264 + 266: 35(fvec3) ConvertSToF 265 + Store 94(p) 266 + 267: 110(ptr) AccessChain 108 109 + 268: 14(ivec3) Load 267 + 269: 35(fvec3) ConvertSToF 268 + ReturnValue 269 FunctionEnd 98(Fn_R_D3U(vd3;): 35(fvec3) Function None 93 97(p): 36(ptr) FunctionParameter 99: Label - 232: 21(ivec3) Load 115(u3) - 233: 35(fvec3) ConvertUToF 232 - Store 97(p) 233 - 234: 21(ivec3) Load 115(u3) - 235: 35(fvec3) ConvertUToF 234 - ReturnValue 235 + 272: 120(ptr) AccessChain 108 119 + 273: 21(ivec3) Load 272 + 274: 35(fvec3) ConvertUToF 273 + Store 97(p) 274 + 275: 120(ptr) AccessChain 108 119 + 276: 21(ivec3) Load 275 + 277: 35(fvec3) ConvertUToF 276 + ReturnValue 277 FunctionEnd 101(Fn_R_D3B(vd3;): 35(fvec3) Function None 93 100(p): 36(ptr) FunctionParameter 102: Label - 238: 28(bvec3) Load 123(b3) - 241: 35(fvec3) Select 238 240 220 - Store 100(p) 241 - 242: 28(bvec3) Load 123(b3) - 243: 35(fvec3) Select 242 240 220 - ReturnValue 243 + 280: 120(ptr) AccessChain 108 129 + 281: 21(ivec3) Load 280 + 282: 28(bvec3) INotEqual 281 133 + 285: 35(fvec3) Select 282 284 257 + Store 100(p) 285 + 286: 120(ptr) AccessChain 108 129 + 287: 21(ivec3) Load 286 + 288: 28(bvec3) INotEqual 287 133 + 289: 35(fvec3) Select 288 284 257 + ReturnValue 289 FunctionEnd 104(Fn_R_D3F(vd3;): 35(fvec3) Function None 93 103(p): 36(ptr) FunctionParameter 105: Label - 246: 7(fvec3) Load 159(f3) - 247: 35(fvec3) FConvert 246 - Store 103(p) 247 - 248: 7(fvec3) Load 159(f3) - 249: 35(fvec3) FConvert 248 - ReturnValue 249 + 292: 177(ptr) AccessChain 108 176 + 293: 7(fvec3) Load 292 + 294: 35(fvec3) FConvert 293 + Store 103(p) 294 + 295: 177(ptr) AccessChain 108 176 + 296: 7(fvec3) Load 295 + 297: 35(fvec3) FConvert 296 + ReturnValue 297 FunctionEnd diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out index 466b2a6f..4ed4ddf6 100644 --- a/Test/baseResults/hlsl.reflection.vert.out +++ b/Test/baseResults/hlsl.reflection.vert.out @@ -5,7 +5,7 @@ Linked vertex stage: Uniform reflection: anonMember3: offset 80, type 8b52, size 1, index 0 -s.a: offset -1, type 1404, size 1, index -1 +s.a: offset 0, type 1404, size 1, index 1 scalar: offset 12, type 1404, size 1, index 0 m23: offset 16, type 8b67, size 1, index 0 scalarAfterm23: offset 48, type 1404, size 1, index 0 @@ -20,60 +20,57 @@ memf2: offset 60, type 8b56, size 1, index 0 memf3: offset 64, type 1404, size 1, index 0 memfloat2a: offset 72, type 8b50, size 1, index 0 m22: offset 80, type 8b5a, size 7, index 0 -dm22: offset -1, type 8b5a, size 4, index -1 +dm22: offset 32, type 8b5a, size 4, index 1 foo.n1.a: offset 0, type 1406, size 1, index 0 foo.n2.b: offset 16, type 1406, size 1, index 0 foo.n2.c: offset 20, type 1406, size 1, index 0 foo.n2.d: offset 24, type 1406, size 1, index 0 -deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1 -deepC[1].iv4: offset -1, type 8b52, size 1, index -1 -deepC[1].d2.i: offset -1, type 1404, size 1, index -1 -deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1 -deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1 -deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1 -deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1 -deepC[1].v3: offset -1, type 8b54, size 1, index -1 -deepD[0].iv4: offset -1, type 8b52, size 1, index -1 -deepD[0].d2.i: offset -1, type 1404, size 1, index -1 -deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1 -deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1 -deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1 -deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1 -deepD[0].v3: offset -1, type 8b54, size 1, index -1 -deepD[1].iv4: offset -1, type 8b52, size 1, index -1 -deepD[1].d2.i: offset -1, type 1404, size 1, index -1 -deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1 -deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1 -deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1 -deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1 -deepD[1].v3: offset -1, type 8b54, size 1, index -1 +deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1 +deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1 +deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1 +deepB.d2.d1[1].va: offset 984, type 8b50, size 2, index 1 +deepB.d2.d1[2].va: offset 984, type 8b50, size 2, index 1 +deepB.d2.d1[3].va: offset 984, type 8b50, size 2, index 1 +deepC.iv4: offset 1568, type 8b52, size 1, index 1 +deepC.d2.i: offset 1568, type 1404, size 1, index 1 +deepC.d2.d1[0].va: offset 1568, type 8b50, size 3, index 1 +deepC.d2.d1[0].b: offset 1568, type 8b56, size 1, index 1 +deepC.d2.d1[1].va: offset 1568, type 8b50, size 3, index 1 +deepC.d2.d1[1].b: offset 1568, type 8b56, size 1, index 1 +deepC.d2.d1[2].va: offset 1568, type 8b50, size 3, index 1 +deepC.d2.d1[2].b: offset 1568, type 8b56, size 1, index 1 +deepC.d2.d1[3].va: offset 1568, type 8b50, size 3, index 1 +deepC.d2.d1[3].b: offset 1568, type 8b56, size 1, index 1 +deepC.v3: offset 1568, type 8b54, size 1, index 1 +deepD[0].iv4: offset 2480, type 8b52, size 1, index 1 +deepD[0].d2.i: offset 2480, type 1404, size 1, index 1 +deepD[0].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1 +deepD[0].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1 +deepD[0].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1 +deepD[0].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1 +deepD[0].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1 +deepD[0].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1 +deepD[0].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1 +deepD[0].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1 +deepD[0].v3: offset 2480, type 8b54, size 1, index 1 +deepD[1].iv4: offset 2480, type 8b52, size 1, index 1 +deepD[1].d2.i: offset 2480, type 1404, size 1, index 1 +deepD[1].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1 +deepD[1].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1 +deepD[1].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1 +deepD[1].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1 +deepD[1].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1 +deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1 +deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1 +deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1 +deepD[1].v3: offset 2480, type 8b54, size 1, index 1 foo: offset 0, type 1406, size 1, index 0 anonMember1: offset 0, type 8b51, size 1, index 0 -uf1: offset -1, type 1406, size 1, index -1 +uf1: offset 16, type 1406, size 1, index 1 Uniform block reflection: : offset -1, type ffffffff, size 496, index -1 +$Global: offset -1, type ffffffff, size 3088, index -1 Vertex attribute reflection: attributeFloat: offset 0, type 1406, size 0, index 0 diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out index 54c3553a..701229e0 100644 --- a/Test/baseResults/hlsl.sample.array.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.sample.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence @@ -158,7 +158,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out index dca7f774..2746f16f 100644 --- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -4,7 +4,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:53 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:53 Function Parameters: 0:? Sequence 0:57 move second child to first child (temp int) @@ -273,7 +273,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:53 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:53 Function Parameters: 0:? Sequence 0:57 move second child to first child (temp int) diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out index b8c7d5cc..48e3d85c 100644 --- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.sample.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence @@ -179,7 +179,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out index b30a4e2d..4d64fa0b 100644 --- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.sample.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence @@ -134,7 +134,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out index 66f4629a..236889ba 100644 --- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplebias.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence @@ -176,7 +176,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out index faba4bef..408c5ffa 100644 --- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplebias.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence @@ -209,7 +209,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index e83058b0..ce7c4d33 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplebias.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence @@ -197,7 +197,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index a9e44041..2bad0c31 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplebias.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence @@ -146,7 +146,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index 660db5b2..a968b749 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmp.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -196,7 +196,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index 253a59e2..94986cfd 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmp.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -187,7 +187,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index 3d744bd3..7e3d0de9 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmp.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -160,7 +160,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index 2eb302e7..fab86ff3 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmp.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -166,7 +166,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index 949f7f2b..adeb3cbc 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -214,7 +214,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index 5f83499a..0492ae78 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -205,7 +205,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index ceb1415f..c50872f4 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -172,7 +172,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index ea32bcec..88f8d347 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence @@ -178,7 +178,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:38 Function Parameters: 0:? Sequence 0:42 Sequence diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out index 16f575af..ca057fd7 100644 --- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplegrad.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence @@ -212,7 +212,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out index d0d275f1..326bd016 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplegrad.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence @@ -263,7 +263,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index 5e95ae0d..ba56951e 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.samplegrad.basic.dx10.vert Shader version: 450 0:? Sequence -0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence @@ -247,7 +247,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out index ffe88328..b000b538 100644 --- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplegrad.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence @@ -233,7 +233,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out index 9e141760..8eee2b50 100644 --- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplegrad.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence @@ -167,7 +167,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out index 766f6acb..4254e04b 100644 --- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplelevel.array.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence @@ -176,7 +176,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:24 Function Parameters: 0:? Sequence 0:27 Sequence diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out index ee53339b..44802a98 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplelevel.basic.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:32 Sequence @@ -210,7 +210,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:29 Function Parameters: 0:? Sequence 0:32 Sequence diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index 9af7a9fc..e76a3955 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.samplelevel.basic.dx10.vert Shader version: 450 0:? Sequence -0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence @@ -193,7 +193,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos}) +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out index d669a999..043a04ca 100644 --- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplelevel.offset.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence @@ -197,7 +197,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence 0:31 Sequence diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out index fd2673b6..bfc444da 100644 --- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -2,7 +2,7 @@ hlsl.samplelevel.offsetarray.dx10.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence @@ -146,7 +146,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:20 Function Parameters: 0:? Sequence 0:23 Sequence diff --git a/Test/baseResults/hlsl.scope.frag.out b/Test/baseResults/hlsl.scope.frag.out index 4218c4fb..81c1a844 100755 --- a/Test/baseResults/hlsl.scope.frag.out +++ b/Test/baseResults/hlsl.scope.frag.out @@ -2,7 +2,7 @@ hlsl.scope.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global void) +0:2 Function Definition: PixelShaderFunction(vf4; (temp void) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -47,7 +47,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global void) +0:2 Function Definition: PixelShaderFunction(vf4; (temp void) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out index a37991d8..43232161 100644 --- a/Test/baseResults/hlsl.semicolons.frag.out +++ b/Test/baseResults/hlsl.semicolons.frag.out @@ -2,11 +2,11 @@ hlsl.semicolons.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: MyFunc( (global void) +0:2 Function Definition: MyFunc( (temp void) 0:2 Function Parameters: -0:8 Function Definition: MyFunc2( (global void) +0:8 Function Definition: MyFunc2( (temp void) 0:8 Function Parameters: -0:13 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:13 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:13 Function Parameters: 0:? Sequence 0:16 move second child to first child (temp 4-component vector of float) @@ -38,11 +38,11 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: MyFunc( (global void) +0:2 Function Definition: MyFunc( (temp void) 0:2 Function Parameters: -0:8 Function Definition: MyFunc2( (global void) +0:8 Function Definition: MyFunc2( (temp void) 0:8 Function Parameters: -0:13 Function Definition: main( (global structure{temp 4-component vector of float color}) +0:13 Function Definition: main( (temp structure{temp 4-component vector of float color}) 0:13 Function Parameters: 0:? Sequence 0:16 move second child to first child (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index c7fdf8d0..9ea4f839 100755 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -2,7 +2,7 @@ hlsl.shapeConv.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4;f1; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (in 4-component vector of float) 0:2 'f' (in float) @@ -117,7 +117,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4;f1; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (in 4-component vector of float) 0:2 'f' (in float) diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out index e4940ae6..0836a618 100755 --- a/Test/baseResults/hlsl.sin.frag.out +++ b/Test/baseResults/hlsl.sin.frag.out @@ -2,7 +2,7 @@ hlsl.sin.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -23,7 +23,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.string.frag.out b/Test/baseResults/hlsl.string.frag.out index 6016f52e..3d80ce53 100755 --- a/Test/baseResults/hlsl.string.frag.out +++ b/Test/baseResults/hlsl.string.frag.out @@ -2,7 +2,7 @@ hlsl.string.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:10 Function Definition: main(f1; (global float) +0:10 Function Definition: main(f1; (temp float) 0:10 Function Parameters: 0:10 'f' (layout(location=0 ) in float) 0:? Sequence @@ -22,7 +22,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:10 Function Definition: main(f1; (global float) +0:10 Function Definition: main(f1; (temp float) 0:10 Function Parameters: 0:10 'f' (layout(location=0 ) in float) 0:? Sequence diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out index 42885bcf..4fdfecce 100644 --- a/Test/baseResults/hlsl.stringtoken.frag.out +++ b/Test/baseResults/hlsl.stringtoken.frag.out @@ -2,7 +2,7 @@ hlsl.stringtoken.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:16 Function Definition: main( (global structure{temp 4-component vector of float Color}) +0:16 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:16 Function Parameters: 0:? Sequence 0:18 move second child to first child (temp 4-component vector of float) @@ -26,8 +26,8 @@ gl_FragCoord origin is upper left 0:19 Branch: Return 0:? Linker Objects 0:? 'TestTexture' (uniform texture2D) -0:? 'TestUF' (uniform 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) Linked fragment stage: @@ -36,7 +36,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:16 Function Definition: main( (global structure{temp 4-component vector of float Color}) +0:16 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:16 Function Parameters: 0:? Sequence 0:18 move second child to first child (temp 4-component vector of float) @@ -60,12 +60,12 @@ gl_FragCoord origin is upper left 0:19 Branch: Return 0:? Linker Objects 0:? 'TestTexture' (uniform texture2D) -0:? 'TestUF' (uniform 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 28 +// Id's are bound by 29 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -78,9 +78,13 @@ gl_FragCoord origin is upper left Name 10 "psout" Name 19 "Color" Name 25 "TestTexture" - Name 27 "TestUF" + Name 26 "$Global" + MemberName 26($Global) 0 "TestUF" + Name 28 "" Decorate 19(Color) Location 0 Decorate 25(TestTexture) DescriptorSet 0 + Decorate 26($Global) Block + Decorate 28 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -98,8 +102,9 @@ gl_FragCoord origin is upper left 23: TypeImage 6(float) 2D sampled format:Unknown 24: TypePointer UniformConstant 23 25(TestTexture): 24(ptr) Variable UniformConstant - 26: TypePointer UniformConstant 7(fvec4) - 27(TestUF): 26(ptr) Variable UniformConstant + 26($Global): TypeStruct 7(fvec4) + 27: TypePointer Uniform 26($Global) + 28: 27(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 10(psout): 9(ptr) Variable Function diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index 3a444953..04117d73 100755 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -6,7 +6,7 @@ WARNING: 0:30: 'register' : ignoring shader_profile Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float) +0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:34 Function Parameters: 0:34 'input' (layout(location=0 ) in 4-component vector of float) 0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) @@ -16,7 +16,10 @@ gl_FragCoord origin is upper left 0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:40 move second child to first child (temp 4-component vector of float) 0:40 i: direct index for structure (temp 4-component vector of float) -0:40 's2' (global structure{temp 4-component vector of float i}) +0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +0:40 Constant: +0:40 1 (const uint) 0:40 Constant: 0:40 0 (const int) 0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) @@ -26,11 +29,8 @@ gl_FragCoord origin is upper left 0:42 'input' (layout(location=0 ) in 4-component vector of float) 0:42 Branch: Return 0:? Linker Objects -0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d}) -0:? 's2' (global structure{temp 4-component vector of float i}) -0:? 'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float) -0:? 'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a' (layout(location=1 ) smooth in 4-component vector of float) 0:? 'b' (layout(location=2 ) flat in bool) @@ -48,7 +48,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float) +0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:34 Function Parameters: 0:34 'input' (layout(location=0 ) in 4-component vector of float) 0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) @@ -58,7 +58,10 @@ gl_FragCoord origin is upper left 0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:40 move second child to first child (temp 4-component vector of float) 0:40 i: direct index for structure (temp 4-component vector of float) -0:40 's2' (global structure{temp 4-component vector of float i}) +0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +0:40 Constant: +0:40 1 (const uint) 0:40 Constant: 0:40 0 (const int) 0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) @@ -68,11 +71,8 @@ gl_FragCoord origin is upper left 0:42 'input' (layout(location=0 ) in 4-component vector of float) 0:42 Branch: Return 0:? Linker Objects -0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d}) -0:? 's2' (global structure{temp 4-component vector of float i}) -0:? 'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float) -0:? 'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a' (layout(location=1 ) smooth in 4-component vector of float) 0:? 'b' (layout(location=2 ) flat in bool) @@ -85,98 +85,104 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 52 +// Id's are bound by 49 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 25 30 31 41 43 45 48 49 50 51 + EntryPoint Fragment 4 "PixelShaderFunction" 29 34 35 38 40 42 45 46 47 48 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 8 "FS" MemberName 8(FS) 0 "b3" Name 10 "s3" - Name 19 "" - MemberName 19 0 "i" - Name 21 "s2" - Name 25 "ff4" - Name 30 "@entryPointOutput" - Name 31 "input" - Name 34 "myS" - MemberName 34(myS) 0 "b" - MemberName 34(myS) 1 "c" - MemberName 34(myS) 2 "a" - MemberName 34(myS) 3 "d" - Name 36 "s1" - Name 39 "ff5" - Name 40 "ff6" - Name 41 "a" - Name 43 "b" - Name 45 "c" - Name 48 "d" - Name 49 "ff1" - Name 50 "ff2" - Name 51 "ff3" - Decorate 25(ff4) Offset 4 - Decorate 25(ff4) Location 7 - Decorate 25(ff4) Binding 0 - Decorate 30(@entryPointOutput) Location 0 - Decorate 31(input) Location 0 - Decorate 39(ff5) Offset 20 - Decorate 39(ff5) Binding 5 - Decorate 40(ff6) Offset 36 - Decorate 40(ff6) Binding 8 - Decorate 41(a) Location 1 - Decorate 43(b) Flat - Decorate 43(b) Location 2 - Decorate 45(c) NoPerspective - Decorate 45(c) Centroid - Decorate 45(c) Location 3 - Decorate 48(d) Centroid - Decorate 48(d) Location 4 - Decorate 49(ff1) BuiltIn FrontFacing - Decorate 50(ff2) Offset 4 - Decorate 50(ff2) Location 5 - Decorate 51(ff3) Offset 4 - Decorate 51(ff3) Location 6 - Decorate 51(ff3) Binding 0 + Name 20 "myS" + MemberName 20(myS) 0 "b" + MemberName 20(myS) 1 "c" + MemberName 20(myS) 2 "a" + MemberName 20(myS) 3 "d" + Name 21 "" + MemberName 21 0 "i" + Name 22 "$Global" + MemberName 22($Global) 0 "s1" + MemberName 22($Global) 1 "s2" + MemberName 22($Global) 2 "ff5" + MemberName 22($Global) 3 "ff6" + Name 24 "" + Name 29 "ff4" + Name 34 "@entryPointOutput" + Name 35 "input" + Name 38 "a" + Name 40 "b" + Name 42 "c" + Name 45 "d" + Name 46 "ff1" + Name 47 "ff2" + Name 48 "ff3" + MemberDecorate 20(myS) 0 Offset 0 + MemberDecorate 20(myS) 1 Offset 4 + MemberDecorate 20(myS) 2 Offset 16 + MemberDecorate 20(myS) 3 Offset 32 + MemberDecorate 21 0 Offset 0 + MemberDecorate 22($Global) 0 Offset 0 + MemberDecorate 22($Global) 1 Offset 48 + MemberDecorate 22($Global) 2 Offset 1620 + MemberDecorate 22($Global) 3 Offset 1636 + Decorate 22($Global) Block + Decorate 24 DescriptorSet 0 + Decorate 29(ff4) Offset 4 + Decorate 29(ff4) Location 7 + Decorate 29(ff4) Binding 0 + Decorate 34(@entryPointOutput) Location 0 + Decorate 35(input) Location 0 + Decorate 38(a) Location 1 + Decorate 40(b) Flat + Decorate 40(b) Location 2 + Decorate 42(c) NoPerspective + Decorate 42(c) Centroid + Decorate 42(c) Location 3 + Decorate 45(d) Centroid + Decorate 45(d) Location 4 + Decorate 46(ff1) BuiltIn FrontFacing + Decorate 47(ff2) Offset 4 + Decorate 47(ff2) Location 5 + Decorate 48(ff3) Offset 4 + Decorate 48(ff3) Location 6 + Decorate 48(ff3) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypeVector 6(bool) 3 8(FS): TypeStruct 7(bvec3) 9: TypePointer Function 8(FS) - 17: TypeFloat 32 - 18: TypeVector 17(float) 4 - 19: TypeStruct 18(fvec4) - 20: TypePointer Private 19(struct) - 21(s2): 20(ptr) Variable Private - 22: TypeInt 32 1 - 23: 22(int) Constant 0 - 24: TypePointer Input 18(fvec4) - 25(ff4): 24(ptr) Variable Input - 27: TypePointer Private 18(fvec4) - 29: TypePointer Output 18(fvec4) -30(@entryPointOutput): 29(ptr) Variable Output - 31(input): 24(ptr) Variable Input - 34(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4) - 35: TypePointer Private 34(myS) - 36(s1): 35(ptr) Variable Private - 37: TypeVector 17(float) 3 - 38: TypePointer Private 37(fvec3) - 39(ff5): 38(ptr) Variable Private - 40(ff6): 38(ptr) Variable Private - 41(a): 24(ptr) Variable Input - 42: TypePointer Input 6(bool) - 43(b): 42(ptr) Variable Input - 44: TypePointer Input 17(float) - 45(c): 44(ptr) Variable Input - 46: TypeVector 17(float) 2 - 47: TypePointer Input 46(fvec2) - 48(d): 47(ptr) Variable Input - 49(ff1): 42(ptr) Variable Input - 50(ff2): 42(ptr) Variable Input - 51(ff3): 42(ptr) Variable Input + 17: TypeInt 32 0 + 18: TypeFloat 32 + 19: TypeVector 18(float) 4 + 20(myS): TypeStruct 17(int) 17(int) 19(fvec4) 19(fvec4) + 21: TypeStruct 19(fvec4) + 22($Global): TypeStruct 20(myS) 21(struct) 18(float) 18(float) + 23: TypePointer Uniform 22($Global) + 24: 23(ptr) Variable Uniform + 25: TypeInt 32 1 + 26: 25(int) Constant 1 + 27: 25(int) Constant 0 + 28: TypePointer Input 19(fvec4) + 29(ff4): 28(ptr) Variable Input + 31: TypePointer Uniform 19(fvec4) + 33: TypePointer Output 19(fvec4) +34(@entryPointOutput): 33(ptr) Variable Output + 35(input): 28(ptr) Variable Input + 38(a): 28(ptr) Variable Input + 39: TypePointer Input 6(bool) + 40(b): 39(ptr) Variable Input + 41: TypePointer Input 18(float) + 42(c): 41(ptr) Variable Input + 43: TypeVector 18(float) 2 + 44: TypePointer Input 43(fvec2) + 45(d): 44(ptr) Variable Input + 46(ff1): 39(ptr) Variable Input + 47(ff2): 39(ptr) Variable Input + 48(ff3): 39(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 10(s3): 9(ptr) Variable Function @@ -186,10 +192,10 @@ gl_FragCoord origin is upper left 14: 7(bvec3) CompositeExtract 12 0 15: 7(bvec3) LogicalEqual 13 14 16: 6(bool) All 15 - 26: 18(fvec4) Load 25(ff4) - 28: 27(ptr) AccessChain 21(s2) 23 - Store 28 26 - 32: 18(fvec4) Load 31(input) - Store 30(@entryPointOutput) 32 + 30: 19(fvec4) Load 29(ff4) + 32: 31(ptr) AccessChain 24 26 27 + Store 32 30 + 36: 19(fvec4) Load 35(input) + Store 34(@entryPointOutput) 36 Return FunctionEnd diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out index b27f210b..193ccc1c 100755 --- a/Test/baseResults/hlsl.structin.vert.out +++ b/Test/baseResults/hlsl.structin.vert.out @@ -1,7 +1,7 @@ hlsl.structin.vert Shader version: 450 0:? Sequence -0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:8 Function Parameters: 0:8 'd' (layout(location=0 ) in 4-component vector of float) 0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) @@ -69,7 +69,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:8 Function Parameters: 0:8 'd' (layout(location=0 ) in 4-component vector of float) 0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) diff --git a/Test/baseResults/hlsl.switch.frag.out b/Test/baseResults/hlsl.switch.frag.out index abf777ab..af516e2c 100755 --- a/Test/baseResults/hlsl.switch.frag.out +++ b/Test/baseResults/hlsl.switch.frag.out @@ -2,7 +2,7 @@ hlsl.switch.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4;i1;i1; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:2 'c' (layout(location=1 ) in int) @@ -137,7 +137,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4;i1;i1; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:2 'c' (layout(location=1 ) in int) diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out index 0bc4bd06..16951a34 100755 --- a/Test/baseResults/hlsl.swizzle.frag.out +++ b/Test/baseResults/hlsl.swizzle.frag.out @@ -10,7 +10,7 @@ gl_FragCoord origin is upper left 0:? 0.500000 0:? 0.000000 0:? 1.000000 -0:4 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) +0:4 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:? Sequence @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:? 0.500000 0:? 0.000000 0:? 1.000000 -0:4 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) +0:4 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out index f5260869..c5c73ecb 100644 --- a/Test/baseResults/hlsl.templatetypes.frag.out +++ b/Test/baseResults/hlsl.templatetypes.frag.out @@ -2,7 +2,7 @@ hlsl.templatetypes.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:3 Function Definition: PixelShaderFunction( (global float) +0:3 Function Definition: PixelShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence @@ -255,7 +255,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:3 Function Definition: PixelShaderFunction( (global float) +0:3 Function Definition: PixelShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out index 0600873f..e8bda1af 100755 --- a/Test/baseResults/hlsl.typedef.frag.out +++ b/Test/baseResults/hlsl.typedef.frag.out @@ -2,7 +2,7 @@ hlsl.typedef.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:4 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float) +0:4 Function Definition: ShaderFunction(vf4;i1; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:4 'ii' (in int) @@ -29,7 +29,7 @@ gl_FragCoord origin is upper left 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:10 'a1' (temp 4-component vector of float) -0:10 Construct vec4 (global 4-component vector of float) +0:10 Construct vec4 (uniform 4-component vector of float) 0:10 Convert int to float (temp float) 0:10 add (temp int) 0:10 'i' (temp int) @@ -43,7 +43,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:4 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float) +0:4 Function Definition: ShaderFunction(vf4;i1; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:4 'ii' (in int) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:10 'a1' (temp 4-component vector of float) -0:10 Construct vec4 (global 4-component vector of float) +0:10 Construct vec4 (uniform 4-component vector of float) 0:10 Convert int to float (temp float) 0:10 add (temp int) 0:10 'i' (temp int) diff --git a/Test/baseResults/hlsl.void.frag.out b/Test/baseResults/hlsl.void.frag.out index 3715166f..6faa388a 100755 --- a/Test/baseResults/hlsl.void.frag.out +++ b/Test/baseResults/hlsl.void.frag.out @@ -2,16 +2,16 @@ hlsl.void.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Function Definition: foo1( (global void) +0:1 Function Definition: foo1( (temp void) 0:1 Function Parameters: -0:2 Function Definition: foo2( (global void) +0:2 Function Definition: foo2( (temp void) 0:2 Function Parameters: -0:5 Function Definition: PixelShaderFunction(vf4; (global void) +0:5 Function Definition: PixelShaderFunction(vf4; (temp void) 0:5 Function Parameters: 0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:6 Function Call: foo1( (global void) -0:7 Function Call: foo2( (global void) +0:6 Function Call: foo1( (temp void) +0:7 Function Call: foo2( (temp void) 0:8 Branch: Return 0:? Linker Objects 0:? 'input' (layout(location=0 ) in 4-component vector of float) @@ -23,16 +23,16 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Function Definition: foo1( (global void) +0:1 Function Definition: foo1( (temp void) 0:1 Function Parameters: -0:2 Function Definition: foo2( (global void) +0:2 Function Definition: foo2( (temp void) 0:2 Function Parameters: -0:5 Function Definition: PixelShaderFunction(vf4; (global void) +0:5 Function Definition: PixelShaderFunction(vf4; (temp void) 0:5 Function Parameters: 0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:6 Function Call: foo1( (global void) -0:7 Function Call: foo2( (global void) +0:6 Function Call: foo1( (temp void) +0:7 Function Call: foo2( (temp void) 0:8 Branch: Return 0:? Linker Objects 0:? 'input' (layout(location=0 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out index 63e14dcc..28e326d2 100755 --- a/Test/baseResults/hlsl.whileLoop.frag.out +++ b/Test/baseResults/hlsl.whileLoop.frag.out @@ -2,7 +2,7 @@ hlsl.whileLoop.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence @@ -44,7 +44,7 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) 0:2 Function Parameters: 0:2 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out index c2cd59a3..faf20cdd 100644 --- a/Test/baseResults/spv.register.autoassign.frag.out +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -5,13 +5,13 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 154 +// Id's are bound by 150 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main_ep" 143 + EntryPoint Fragment 4 "main_ep" 145 ExecutionMode 4 OriginUpperLeft Name 4 "main_ep" Name 9 "Func1(" @@ -31,19 +31,21 @@ Linked fragment stage: MemberName 93(MyStruct_t) 0 "a" MemberName 93(MyStruct_t) 1 "b" MemberName 93(MyStruct_t) 2 "c" - Name 95 "mystruct" - Name 117 "g_tTex_unused1" - Name 119 "g_sSamp_unused1" - Name 124 "g_tTex_unused2" - Name 126 "g_sSamp_unused2" - Name 134 "PS_OUTPUT" - MemberName 134(PS_OUTPUT) 0 "Color" - Name 136 "psout" - Name 143 "Color" - Name 147 "g_tTex_unused3" - Name 149 "myfloat4_a" - Name 150 "myfloat4_b" - Name 153 "myint4_a" + Name 95 "$Global" + MemberName 95($Global) 0 "mystruct" + MemberName 95($Global) 1 "myfloat4_a" + MemberName 95($Global) 2 "myfloat4_b" + MemberName 95($Global) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + Name 128 "g_sSamp_unused2" + Name 136 "PS_OUTPUT" + MemberName 136(PS_OUTPUT) 0 "Color" + Name 138 "psout" + Name 145 "Color" + Name 149 "g_tTex_unused3" Decorate 17(g_tTex1) DescriptorSet 0 Decorate 17(g_tTex1) Binding 11 Decorate 21(g_sSamp1) DescriptorSet 0 @@ -64,15 +66,24 @@ Linked fragment stage: Decorate 84(g_tTex5) Binding 6 Decorate 86(g_sSamp5) DescriptorSet 0 Decorate 86(g_sSamp5) Binding 8 - Decorate 95(mystruct) Binding 19 - Decorate 117(g_tTex_unused1) DescriptorSet 0 - Decorate 117(g_tTex_unused1) Binding 10 - Decorate 119(g_sSamp_unused1) DescriptorSet 0 - Decorate 124(g_tTex_unused2) DescriptorSet 0 - Decorate 124(g_tTex_unused2) Binding 12 - Decorate 126(g_sSamp_unused2) DescriptorSet 0 - Decorate 143(Color) Location 0 - Decorate 147(g_tTex_unused3) DescriptorSet 0 + MemberDecorate 93(MyStruct_t) 0 Offset 0 + MemberDecorate 93(MyStruct_t) 1 Offset 4 + MemberDecorate 93(MyStruct_t) 2 Offset 16 + MemberDecorate 95($Global) 0 Offset 0 + MemberDecorate 95($Global) 1 Offset 32 + MemberDecorate 95($Global) 2 Offset 48 + MemberDecorate 95($Global) 3 Offset 64 + Decorate 95($Global) Block + Decorate 97 DescriptorSet 0 + Decorate 97 Binding 9 + Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 145(Color) Location 0 + Decorate 149(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -115,39 +126,35 @@ Linked fragment stage: 89: 6(float) Constant 1056964608 92: TypeVector 6(float) 3 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) - 94: TypePointer UniformConstant 93(MyStruct_t) - 95(mystruct): 94(ptr) Variable UniformConstant - 96: 35(int) Constant 1 - 97: TypePointer UniformConstant 6(float) -117(g_tTex_unused1): 16(ptr) Variable UniformConstant -119(g_sSamp_unused1): 20(ptr) Variable UniformConstant - 122: 6(float) Constant 1066192077 -124(g_tTex_unused2): 16(ptr) Variable UniformConstant -126(g_sSamp_unused2): 20(ptr) Variable UniformConstant - 129: 6(float) Constant 1067030938 - 134(PS_OUTPUT): TypeStruct 7(fvec4) - 135: TypePointer Function 134(PS_OUTPUT) - 140: TypePointer Function 7(fvec4) - 142: TypePointer Output 7(fvec4) - 143(Color): 142(ptr) Variable Output -147(g_tTex_unused3): 16(ptr) Variable UniformConstant - 148: TypePointer UniformConstant 7(fvec4) - 149(myfloat4_a): 148(ptr) Variable UniformConstant - 150(myfloat4_b): 148(ptr) Variable UniformConstant - 151: TypeVector 40(int) 4 - 152: TypePointer UniformConstant 151(ivec4) - 153(myint4_a): 152(ptr) Variable UniformConstant + 94: TypeVector 40(int) 4 + 95($Global): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95($Global) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136(PS_OUTPUT): TypeStruct 7(fvec4) + 137: TypePointer Function 136(PS_OUTPUT) + 142: TypePointer Function 7(fvec4) + 144: TypePointer Output 7(fvec4) + 145(Color): 144(ptr) Variable Output +149(g_tTex_unused3): 16(ptr) Variable UniformConstant 4(main_ep): 2 Function None 3 5: Label - 136(psout): 135(ptr) Variable Function - 137: 7(fvec4) FunctionCall 9(Func1() - 138: 7(fvec4) FunctionCall 11(Func2() - 139: 7(fvec4) FAdd 137 138 - 141: 140(ptr) AccessChain 136(psout) 41 - Store 141 139 - 144: 140(ptr) AccessChain 136(psout) 41 - 145: 7(fvec4) Load 144 - Store 143(Color) 145 + 138(psout): 137(ptr) Variable Function + 139: 7(fvec4) FunctionCall 9(Func1() + 140: 7(fvec4) FunctionCall 11(Func2() + 141: 7(fvec4) FAdd 139 140 + 143: 142(ptr) AccessChain 138(psout) 41 + Store 143 141 + 146: 142(ptr) AccessChain 138(psout) 41 + 147: 7(fvec4) Load 146 + Store 145(Color) 147 Return FunctionEnd 9(Func1(): 7(fvec4) Function None 8 @@ -194,37 +201,37 @@ Linked fragment stage: 88: 23 SampledImage 85 87 90: 7(fvec4) ImageSampleImplicitLod 88 89 91: 7(fvec4) FAdd 83 90 - 98: 97(ptr) AccessChain 95(mystruct) 76 96 - 99: 6(float) Load 98 - 100: 7(fvec4) CompositeConstruct 99 99 99 99 - 101: 7(fvec4) FAdd 91 100 - ReturnValue 101 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 FunctionEnd 11(Func2(): 7(fvec4) Function None 8 12: Label - 104: 15 Load 17(g_tTex1) - 105: 19 Load 21(g_sSamp1) - 106: 23 SampledImage 104 105 - 107: 7(fvec4) ImageSampleImplicitLod 106 25 - 108: 16(ptr) AccessChain 39(g_tTex3) 53 - 109: 15 Load 108 - 110: 20(ptr) AccessChain 46(g_sSamp3) 53 - 111: 19 Load 110 - 112: 23 SampledImage 109 111 - 113: 7(fvec4) ImageSampleImplicitLod 112 50 - 114: 7(fvec4) FAdd 107 113 - ReturnValue 114 + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 FunctionEnd 13(Func2_unused(): 7(fvec4) Function None 8 14: Label - 118: 15 Load 117(g_tTex_unused1) - 120: 19 Load 119(g_sSamp_unused1) - 121: 23 SampledImage 118 120 - 123: 7(fvec4) ImageSampleImplicitLod 121 122 - 125: 15 Load 124(g_tTex_unused2) - 127: 19 Load 126(g_sSamp_unused2) - 128: 23 SampledImage 125 127 - 130: 7(fvec4) ImageSampleImplicitLod 128 129 - 131: 7(fvec4) FAdd 123 130 - ReturnValue 131 + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 FunctionEnd diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out index 3a8ab1a3..ad476eeb 100644 --- a/Test/baseResults/spv.register.noautoassign.frag.out +++ b/Test/baseResults/spv.register.noautoassign.frag.out @@ -5,13 +5,13 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 154 +// Id's are bound by 150 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main_ep" 143 + EntryPoint Fragment 4 "main_ep" 145 ExecutionMode 4 OriginUpperLeft Name 4 "main_ep" Name 9 "Func1(" @@ -31,19 +31,21 @@ Linked fragment stage: MemberName 93(MyStruct_t) 0 "a" MemberName 93(MyStruct_t) 1 "b" MemberName 93(MyStruct_t) 2 "c" - Name 95 "mystruct" - Name 117 "g_tTex_unused1" - Name 119 "g_sSamp_unused1" - Name 124 "g_tTex_unused2" - Name 126 "g_sSamp_unused2" - Name 134 "PS_OUTPUT" - MemberName 134(PS_OUTPUT) 0 "Color" - Name 136 "psout" - Name 143 "Color" - Name 147 "g_tTex_unused3" - Name 149 "myfloat4_a" - Name 150 "myfloat4_b" - Name 153 "myint4_a" + Name 95 "$Global" + MemberName 95($Global) 0 "mystruct" + MemberName 95($Global) 1 "myfloat4_a" + MemberName 95($Global) 2 "myfloat4_b" + MemberName 95($Global) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + Name 128 "g_sSamp_unused2" + Name 136 "PS_OUTPUT" + MemberName 136(PS_OUTPUT) 0 "Color" + Name 138 "psout" + Name 145 "Color" + Name 149 "g_tTex_unused3" Decorate 17(g_tTex1) DescriptorSet 0 Decorate 17(g_tTex1) Binding 11 Decorate 21(g_sSamp1) DescriptorSet 0 @@ -58,15 +60,23 @@ Linked fragment stage: Decorate 69(g_sSamp4) DescriptorSet 0 Decorate 84(g_tTex5) DescriptorSet 0 Decorate 86(g_sSamp5) DescriptorSet 0 - Decorate 95(mystruct) Binding 19 - Decorate 117(g_tTex_unused1) DescriptorSet 0 - Decorate 117(g_tTex_unused1) Binding 10 - Decorate 119(g_sSamp_unused1) DescriptorSet 0 - Decorate 124(g_tTex_unused2) DescriptorSet 0 - Decorate 124(g_tTex_unused2) Binding 12 - Decorate 126(g_sSamp_unused2) DescriptorSet 0 - Decorate 143(Color) Location 0 - Decorate 147(g_tTex_unused3) DescriptorSet 0 + MemberDecorate 93(MyStruct_t) 0 Offset 0 + MemberDecorate 93(MyStruct_t) 1 Offset 4 + MemberDecorate 93(MyStruct_t) 2 Offset 16 + MemberDecorate 95($Global) 0 Offset 0 + MemberDecorate 95($Global) 1 Offset 32 + MemberDecorate 95($Global) 2 Offset 48 + MemberDecorate 95($Global) 3 Offset 64 + Decorate 95($Global) Block + Decorate 97 DescriptorSet 0 + Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 145(Color) Location 0 + Decorate 149(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -109,39 +119,35 @@ Linked fragment stage: 89: 6(float) Constant 1056964608 92: TypeVector 6(float) 3 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) - 94: TypePointer UniformConstant 93(MyStruct_t) - 95(mystruct): 94(ptr) Variable UniformConstant - 96: 35(int) Constant 1 - 97: TypePointer UniformConstant 6(float) -117(g_tTex_unused1): 16(ptr) Variable UniformConstant -119(g_sSamp_unused1): 20(ptr) Variable UniformConstant - 122: 6(float) Constant 1066192077 -124(g_tTex_unused2): 16(ptr) Variable UniformConstant -126(g_sSamp_unused2): 20(ptr) Variable UniformConstant - 129: 6(float) Constant 1067030938 - 134(PS_OUTPUT): TypeStruct 7(fvec4) - 135: TypePointer Function 134(PS_OUTPUT) - 140: TypePointer Function 7(fvec4) - 142: TypePointer Output 7(fvec4) - 143(Color): 142(ptr) Variable Output -147(g_tTex_unused3): 16(ptr) Variable UniformConstant - 148: TypePointer UniformConstant 7(fvec4) - 149(myfloat4_a): 148(ptr) Variable UniformConstant - 150(myfloat4_b): 148(ptr) Variable UniformConstant - 151: TypeVector 40(int) 4 - 152: TypePointer UniformConstant 151(ivec4) - 153(myint4_a): 152(ptr) Variable UniformConstant + 94: TypeVector 40(int) 4 + 95($Global): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95($Global) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136(PS_OUTPUT): TypeStruct 7(fvec4) + 137: TypePointer Function 136(PS_OUTPUT) + 142: TypePointer Function 7(fvec4) + 144: TypePointer Output 7(fvec4) + 145(Color): 144(ptr) Variable Output +149(g_tTex_unused3): 16(ptr) Variable UniformConstant 4(main_ep): 2 Function None 3 5: Label - 136(psout): 135(ptr) Variable Function - 137: 7(fvec4) FunctionCall 9(Func1() - 138: 7(fvec4) FunctionCall 11(Func2() - 139: 7(fvec4) FAdd 137 138 - 141: 140(ptr) AccessChain 136(psout) 41 - Store 141 139 - 144: 140(ptr) AccessChain 136(psout) 41 - 145: 7(fvec4) Load 144 - Store 143(Color) 145 + 138(psout): 137(ptr) Variable Function + 139: 7(fvec4) FunctionCall 9(Func1() + 140: 7(fvec4) FunctionCall 11(Func2() + 141: 7(fvec4) FAdd 139 140 + 143: 142(ptr) AccessChain 138(psout) 41 + Store 143 141 + 146: 142(ptr) AccessChain 138(psout) 41 + 147: 7(fvec4) Load 146 + Store 145(Color) 147 Return FunctionEnd 9(Func1(): 7(fvec4) Function None 8 @@ -188,37 +194,37 @@ Linked fragment stage: 88: 23 SampledImage 85 87 90: 7(fvec4) ImageSampleImplicitLod 88 89 91: 7(fvec4) FAdd 83 90 - 98: 97(ptr) AccessChain 95(mystruct) 76 96 - 99: 6(float) Load 98 - 100: 7(fvec4) CompositeConstruct 99 99 99 99 - 101: 7(fvec4) FAdd 91 100 - ReturnValue 101 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 FunctionEnd 11(Func2(): 7(fvec4) Function None 8 12: Label - 104: 15 Load 17(g_tTex1) - 105: 19 Load 21(g_sSamp1) - 106: 23 SampledImage 104 105 - 107: 7(fvec4) ImageSampleImplicitLod 106 25 - 108: 16(ptr) AccessChain 39(g_tTex3) 53 - 109: 15 Load 108 - 110: 20(ptr) AccessChain 46(g_sSamp3) 53 - 111: 19 Load 110 - 112: 23 SampledImage 109 111 - 113: 7(fvec4) ImageSampleImplicitLod 112 50 - 114: 7(fvec4) FAdd 107 113 - ReturnValue 114 + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 FunctionEnd 13(Func2_unused(): 7(fvec4) Function None 8 14: Label - 118: 15 Load 117(g_tTex_unused1) - 120: 19 Load 119(g_sSamp_unused1) - 121: 23 SampledImage 118 120 - 123: 7(fvec4) ImageSampleImplicitLod 121 122 - 125: 15 Load 124(g_tTex_unused2) - 127: 19 Load 126(g_sSamp_unused2) - 128: 23 SampledImage 125 127 - 130: 7(fvec4) ImageSampleImplicitLod 128 129 - 131: 7(fvec4) FAdd 123 130 - ReturnValue 131 + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 FunctionEnd diff --git a/Test/hlsl.array.flatten.frag b/Test/hlsl.array.flatten.frag index b243bec2..987ce1bf 100644 --- a/Test/hlsl.array.flatten.frag +++ b/Test/hlsl.array.flatten.frag @@ -23,7 +23,7 @@ float4 TestFn2(Texture1D l_tex[3], SamplerState l_samp[3]) return l_tex[2].Sample(l_samp[2], 0.2); } -int not_flattened_a[5] = { 1, 2, 3, 4, 5 }; +static int not_flattened_a[5] = { 1, 2, 3, 4, 5 }; struct PS_OUTPUT { float4 color : SV_Target0; }; diff --git a/Test/hlsl.float1.frag b/Test/hlsl.float1.frag index 6247e77b..f9c0a6e0 100644 --- a/Test/hlsl.float1.frag +++ b/Test/hlsl.float1.frag @@ -1,5 +1,5 @@ -float1 f1 = float1(1.0); -float scalar = 2.0; +static float1 f1 = float1(1.0); +static float scalar = 2.0; float1 ShaderFunction(float1 inFloat1 : COLOR, float inScalar) : COLOR0 { diff --git a/Test/hlsl.float4.frag b/Test/hlsl.float4.frag index 5ae70db0..b541f5d3 100644 --- a/Test/hlsl.float4.frag +++ b/Test/hlsl.float4.frag @@ -1,9 +1,9 @@ float4 AmbientColor = float4(1, 0.5, 0, 1); bool ff1 : SV_IsFrontFace; -float4 ff2 : packoffset(c0.y); -float4 ff3 : packoffset(c0.y) : register(ps_5_0, s0) ; -float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s1) ; +float ff2 : packoffset(c1.y); +float4 ff3 : packoffset(c2) : register(ps_5_0, s0) ; +float4 ff4 : VPOS : packoffset(c3) : register(ps_5_0, s1) ; float4 ShaderFunction(float4 input) : COLOR0 { diff --git a/Test/hlsl.init.frag b/Test/hlsl.init.frag index c233d127..a3f6f0e7 100644 --- a/Test/hlsl.init.frag +++ b/Test/hlsl.init.frag @@ -1,21 +1,21 @@ -float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2); -float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2}; -float a2 = 0.2, b2; -float a3, b3 = 0.3; -float a4, b4 = 0.4, c4; -float a5 = 0.5, b5, c5 = 1.5; +static float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2); +static float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2}; +static float a2 = 0.2, b2; +static float a3, b3 = 0.3; +static float a4, b4 = 0.4, c4; +static float a5 = 0.5, b5, c5 = 1.5; struct Single1 { int f; }; -Single1 single1 = { 10 }; +static Single1 single1 = { 10 }; struct Single2 { uint2 v; }; -Single2 single2 = { { 1, 2 } }; +static Single2 single2 = { { 1, 2 } }; struct Single3 { Single1 s1; }; -Single3 single3 = { { 3 } }; +static Single3 single3 = { { 3 } }; struct Single4 { Single2 s1; }; -Single4 single4 = { { { 4u, 5u } } }; +static Single4 single4 = { { { 4u, 5u } } }; float4 ShaderFunction(float4 input) : COLOR0 { diff --git a/Test/hlsl.intrinsics.comp b/Test/hlsl.intrinsics.comp index 642a0fc6..12b7caab 100644 --- a/Test/hlsl.intrinsics.comp +++ b/Test/hlsl.intrinsics.comp @@ -1,5 +1,5 @@ -#define gs // TODO: define as groupshared when available in the grammar +#define gs static // TODO: define as groupshared when available in the grammar gs uint gs_ua; gs uint gs_ub; gs uint gs_uc; diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag index c04acaed..90387ccc 100644 --- a/Test/hlsl.intrinsics.frag +++ b/Test/hlsl.intrinsics.frag @@ -1,5 +1,5 @@ -#define gs // TODO: define as groupshared when available in the grammar +#define gs static // TODO: define as groupshared when available in the grammar gs uint gs_ua; gs uint gs_ub; gs uint gs_uc; diff --git a/Test/hlsl.intrinsics.negative.vert b/Test/hlsl.intrinsics.negative.vert index fcfb761a..6224b25e 100644 --- a/Test/hlsl.intrinsics.negative.vert +++ b/Test/hlsl.intrinsics.negative.vert @@ -1,15 +1,15 @@ -uint gs_ua; -uint gs_ub; -uint gs_uc; -uint2 gs_ua2; -uint2 gs_ub2; -uint2 gs_uc2; -uint3 gs_ua3; -uint3 gs_ub3; -uint3 gs_uc3; -uint4 gs_ua4; -uint4 gs_ub4; -uint4 gs_uc4; +static uint gs_ua; +static uint gs_ub; +static uint gs_uc; +static uint2 gs_ua2; +static uint2 gs_ub2; +static uint2 gs_uc2; +static uint3 gs_ua3; +static uint3 gs_ub3; +static uint3 gs_uc3; +static uint4 gs_ua4; +static uint4 gs_ub4; +static uint4 gs_uc4; float VertexShaderFunctionS(float inF0, float inF1, float inF2, int inI0) { diff --git a/Test/hlsl.precise.frag b/Test/hlsl.precise.frag index 7518de54..77454e07 100644 --- a/Test/hlsl.precise.frag +++ b/Test/hlsl.precise.frag @@ -1,7 +1,7 @@ struct PS_OUTPUT { precise float4 color : SV_Target0; }; -precise float precisefloat; +static precise float precisefloat; void MyFunction(in precise float myfloat, out precise float3 myfloat3) { } diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag index 58cd524b..2c511a6e 100644 --- a/Test/hlsl.struct.frag +++ b/Test/hlsl.struct.frag @@ -27,8 +27,8 @@ struct IN_S { float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) ; }; -float3 ff5 : packoffset(c1.y) : register(ps_5_0, s[5]); -float3 ff6 : packoffset(c2.y) : register(s3[5]); +float ff5 : packoffset(c101.y) : register(ps_5_0, s[5]); +float ff6 : packoffset(c102.y) : register(s3[5]); float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0 { diff --git a/Test/hlsl.swizzle.frag b/Test/hlsl.swizzle.frag index 231430a9..9e87c6d7 100644 --- a/Test/hlsl.swizzle.frag +++ b/Test/hlsl.swizzle.frag @@ -1,4 +1,4 @@ -float4 AmbientColor = float4(1, 0.5, 0, 1); +static float4 AmbientColor = float4(1, 0.5, 0, 1); float4 ShaderFunction(float4 input) : COLOR0 { diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index fb515df0..7c9a47a5 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1524" +#define GLSLANG_REVISION "Overload400-PrecQual.1525" #define GLSLANG_DATE "27-Sep-2016" From 21e7e3212646013e46f7c9367c613b1d403677ed Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 29 Sep 2016 10:27:57 -0600 Subject: [PATCH 016/130] HLSL: Fix merge conflict. --- .../hlsl.array.implicit-size.frag.out | 277 +++++++++--------- Test/hlsl.array.implicit-size.frag | 6 +- glslang/Include/revision.h | 4 +- 3 files changed, 143 insertions(+), 144 deletions(-) diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out index 6345c89c..d8e0ed86 100644 --- a/Test/baseResults/hlsl.array.implicit-size.frag.out +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -2,7 +2,35 @@ hlsl.array.implicit-size.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:3 Sequence +0:3 move second child to first child (temp 5-element array of float) +0:3 'g_array' (global 5-element array of float) +0:3 Constant: +0:3 1.000000 +0:3 2.000000 +0:3 3.000000 +0:3 4.000000 +0:3 5.000000 +0:6 Sequence +0:6 move second child to first child (temp 7-element array of float) +0:6 'g_array_unused' (global 7-element array of float) +0:6 Constant: +0:6 1.000000 +0:6 2.000000 +0:6 3.000000 +0:6 4.000000 +0:6 5.000000 +0:6 6.000000 +0:6 7.000000 +0:12 Sequence +0:12 move second child to first child (temp 2-element array of structure{temp int i, temp float f}) +0:12 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:12 Constant: +0:12 1 (const int) +0:12 2.000000 +0:12 3 (const int) +0:12 4.000000 +0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) 0:26 Function Parameters: 0:26 'ps_output' (out structure{temp 4-component vector of float color}) 0:? Sequence @@ -24,21 +52,11 @@ gl_FragCoord origin is upper left 0:30 add (temp float) 0:30 add (temp float) 0:30 direct index (temp float) -0:30 'g_array' (uniform 5-element array of float) -0:30 1.000000 -0:30 2.000000 -0:30 3.000000 -0:30 4.000000 -0:30 5.000000 +0:30 'g_array' (global 5-element array of float) 0:30 Constant: 0:30 0 (const int) 0:30 direct index (temp float) -0:30 'g_array' (uniform 5-element array of float) -0:30 1.000000 -0:30 2.000000 -0:30 3.000000 -0:30 4.000000 -0:30 5.000000 +0:30 'g_array' (global 5-element array of float) 0:30 Constant: 0:30 4 (const int) 0:30 direct index (temp float) @@ -47,43 +65,18 @@ gl_FragCoord origin is upper left 0:30 1 (const int) 0:30 f: direct index for structure (temp float) 0:30 direct index (temp structure{temp int i, temp float f}) -0:30 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) -0:30 1 (const int) -0:30 2.000000 -0:30 3 (const int) -0:30 4.000000 +0:30 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 indirect index (temp float) -0:30 'g_array' (uniform 5-element array of float) -0:30 1.000000 -0:30 2.000000 -0:30 3.000000 -0:30 4.000000 -0:30 5.000000 +0:30 'g_array' (global 5-element array of float) 0:30 'idx' (temp void) 0:? Linker Objects -0:? 'g_array' (uniform 5-element array of float) -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:? 4.000000 -0:? 5.000000 -0:? 'g_array_unused' (uniform 7-element array of float) -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:? 4.000000 -0:? 5.000000 -0:? 6.000000 -0:? 7.000000 -0:? 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) -0:? 1 (const int) -0:? 2.000000 -0:? 3 (const int) -0:? 4.000000 +0:? 'g_array' (global 5-element array of float) +0:? 'g_array_unused' (global 7-element array of float) +0:? 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) Linked fragment stage: @@ -92,7 +85,35 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (global void) +0:3 Sequence +0:3 move second child to first child (temp 5-element array of float) +0:3 'g_array' (global 5-element array of float) +0:3 Constant: +0:3 1.000000 +0:3 2.000000 +0:3 3.000000 +0:3 4.000000 +0:3 5.000000 +0:6 Sequence +0:6 move second child to first child (temp 7-element array of float) +0:6 'g_array_unused' (global 7-element array of float) +0:6 Constant: +0:6 1.000000 +0:6 2.000000 +0:6 3.000000 +0:6 4.000000 +0:6 5.000000 +0:6 6.000000 +0:6 7.000000 +0:12 Sequence +0:12 move second child to first child (temp 2-element array of structure{temp int i, temp float f}) +0:12 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:12 Constant: +0:12 1 (const int) +0:12 2.000000 +0:12 3 (const int) +0:12 4.000000 +0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) 0:26 Function Parameters: 0:26 'ps_output' (out structure{temp 4-component vector of float color}) 0:? Sequence @@ -114,21 +135,11 @@ gl_FragCoord origin is upper left 0:30 add (temp float) 0:30 add (temp float) 0:30 direct index (temp float) -0:30 'g_array' (uniform 5-element array of float) -0:30 1.000000 -0:30 2.000000 -0:30 3.000000 -0:30 4.000000 -0:30 5.000000 +0:30 'g_array' (global 5-element array of float) 0:30 Constant: 0:30 0 (const int) 0:30 direct index (temp float) -0:30 'g_array' (uniform 5-element array of float) -0:30 1.000000 -0:30 2.000000 -0:30 3.000000 -0:30 4.000000 -0:30 5.000000 +0:30 'g_array' (global 5-element array of float) 0:30 Constant: 0:30 4 (const int) 0:30 direct index (temp float) @@ -137,47 +148,22 @@ gl_FragCoord origin is upper left 0:30 1 (const int) 0:30 f: direct index for structure (temp float) 0:30 direct index (temp structure{temp int i, temp float f}) -0:30 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) -0:30 1 (const int) -0:30 2.000000 -0:30 3 (const int) -0:30 4.000000 +0:30 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) 0:30 Constant: 0:30 0 (const int) 0:30 Constant: 0:30 1 (const int) 0:30 indirect index (temp float) -0:30 'g_array' (uniform 5-element array of float) -0:30 1.000000 -0:30 2.000000 -0:30 3.000000 -0:30 4.000000 -0:30 5.000000 +0:30 'g_array' (global 5-element array of float) 0:30 'idx' (temp void) 0:? Linker Objects -0:? 'g_array' (uniform 5-element array of float) -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:? 4.000000 -0:? 5.000000 -0:? 'g_array_unused' (uniform 7-element array of float) -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:? 4.000000 -0:? 5.000000 -0:? 6.000000 -0:? 7.000000 -0:? 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f}) -0:? 1 (const int) -0:? 2.000000 -0:? 3 (const int) -0:? 4.000000 +0:? 'g_array' (global 5-element array of float) +0:? 'g_array_unused' (global 7-element array of float) +0:? 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 62 +// Id's are bound by 72 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -189,14 +175,14 @@ gl_FragCoord origin is upper left MemberName 8(PS_OUTPUT) 0 "color" Name 12 "main(struct-PS_OUTPUT-vf41;" Name 11 "ps_output" - Name 18 "l_array" - Name 28 "g_array" - Name 41 "mystruct" - MemberName 41(mystruct) 0 "i" - MemberName 41(mystruct) 1 "f" - Name 45 "g_mystruct" - Name 50 "idx" - Name 61 "g_array_unused" + Name 18 "g_array" + Name 28 "g_array_unused" + Name 33 "mystruct" + MemberName 33(mystruct) 0 "i" + MemberName 33(mystruct) 1 "f" + Name 37 "g_mystruct" + Name 46 "l_array" + Name 64 "idx" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -205,60 +191,73 @@ gl_FragCoord origin is upper left 9: TypePointer Function 8(PS_OUTPUT) 10: TypeFunction 2 9(ptr) 14: TypeInt 32 0 - 15: 14(int) Constant 3 + 15: 14(int) Constant 5 16: TypeArray 6(float) 15 - 17: TypePointer Function 16 + 17: TypePointer Private 16 + 18(g_array): 17(ptr) Variable Private 19: 6(float) Constant 1065353216 20: 6(float) Constant 1073741824 21: 6(float) Constant 1077936128 - 22: 16 ConstantComposite 19 20 21 - 23: TypeInt 32 1 - 24: 23(int) Constant 0 - 25: 14(int) Constant 5 + 22: 6(float) Constant 1082130432 + 23: 6(float) Constant 1084227584 + 24: 16 ConstantComposite 19 20 21 22 23 + 25: 14(int) Constant 7 26: TypeArray 6(float) 25 - 27: TypePointer UniformConstant 26 - 28(g_array): 27(ptr) Variable UniformConstant - 29: TypePointer UniformConstant 6(float) - 32: 23(int) Constant 4 - 36: 23(int) Constant 1 - 37: TypePointer Function 6(float) - 41(mystruct): TypeStruct 23(int) 6(float) - 42: 14(int) Constant 2 - 43: TypeArray 41(mystruct) 42 - 44: TypePointer UniformConstant 43 - 45(g_mystruct): 44(ptr) Variable UniformConstant - 49: TypePointer Function 2 - 56: TypePointer Function 7(fvec4) - 58: 14(int) Constant 7 - 59: TypeArray 6(float) 58 - 60: TypePointer UniformConstant 59 -61(g_array_unused): 60(ptr) Variable UniformConstant + 27: TypePointer Private 26 +28(g_array_unused): 27(ptr) Variable Private + 29: 6(float) Constant 1086324736 + 30: 6(float) Constant 1088421888 + 31: 26 ConstantComposite 19 20 21 22 23 29 30 + 32: TypeInt 32 1 + 33(mystruct): TypeStruct 32(int) 6(float) + 34: 14(int) Constant 2 + 35: TypeArray 33(mystruct) 34 + 36: TypePointer Private 35 + 37(g_mystruct): 36(ptr) Variable Private + 38: 32(int) Constant 1 + 39:33(mystruct) ConstantComposite 38 20 + 40: 32(int) Constant 3 + 41:33(mystruct) ConstantComposite 40 22 + 42: 35 ConstantComposite 39 41 + 43: 14(int) Constant 3 + 44: TypeArray 6(float) 43 + 45: TypePointer Function 44 + 47: 44 ConstantComposite 19 20 21 + 48: 32(int) Constant 0 + 49: TypePointer Private 6(float) + 52: 32(int) Constant 4 + 56: TypePointer Function 6(float) + 63: TypePointer Function 2 + 70: TypePointer Function 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label + Store 18(g_array) 24 + Store 28(g_array_unused) 31 + Store 37(g_mystruct) 42 FunctionEnd 12(main(struct-PS_OUTPUT-vf41;): 2 Function None 10 11(ps_output): 9(ptr) FunctionParameter 13: Label - 18(l_array): 17(ptr) Variable Function - 50(idx): 49(ptr) Variable Function - Store 18(l_array) 22 - 30: 29(ptr) AccessChain 28(g_array) 24 - 31: 6(float) Load 30 - 33: 29(ptr) AccessChain 28(g_array) 32 - 34: 6(float) Load 33 - 35: 6(float) FAdd 31 34 - 38: 37(ptr) AccessChain 18(l_array) 36 - 39: 6(float) Load 38 - 40: 6(float) FAdd 35 39 - 46: 29(ptr) AccessChain 45(g_mystruct) 24 36 - 47: 6(float) Load 46 - 48: 6(float) FAdd 40 47 - 51: 2 Load 50(idx) - 52: 29(ptr) AccessChain 28(g_array) 51 - 53: 6(float) Load 52 - 54: 6(float) FAdd 48 53 - 55: 7(fvec4) CompositeConstruct 54 54 54 54 - 57: 56(ptr) AccessChain 11(ps_output) 24 - Store 57 55 + 46(l_array): 45(ptr) Variable Function + 64(idx): 63(ptr) Variable Function + Store 46(l_array) 47 + 50: 49(ptr) AccessChain 18(g_array) 48 + 51: 6(float) Load 50 + 53: 49(ptr) AccessChain 18(g_array) 52 + 54: 6(float) Load 53 + 55: 6(float) FAdd 51 54 + 57: 56(ptr) AccessChain 46(l_array) 38 + 58: 6(float) Load 57 + 59: 6(float) FAdd 55 58 + 60: 49(ptr) AccessChain 37(g_mystruct) 48 38 + 61: 6(float) Load 60 + 62: 6(float) FAdd 59 61 + 65: 2 Load 64(idx) + 66: 49(ptr) AccessChain 18(g_array) 65 + 67: 6(float) Load 66 + 68: 6(float) FAdd 62 67 + 69: 7(fvec4) CompositeConstruct 68 68 68 68 + 71: 70(ptr) AccessChain 11(ps_output) 48 + Store 71 69 Return FunctionEnd diff --git a/Test/hlsl.array.implicit-size.frag b/Test/hlsl.array.implicit-size.frag index 11f93b5e..29e2c1ba 100644 --- a/Test/hlsl.array.implicit-size.frag +++ b/Test/hlsl.array.implicit-size.frag @@ -1,12 +1,12 @@ // implicit sized array -uniform float g_array [ ] = { 1, 2, 3, 4, 5 }; +static float g_array [ ] = { 1, 2, 3, 4, 5 }; // Unused implicit sized array -uniform float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 }; +static float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 }; // Test implicit size arrayed structs -uniform struct mystruct { +static struct mystruct { int i; float f; } g_mystruct[] = { diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 7c9a47a5..24002550 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1525" -#define GLSLANG_DATE "27-Sep-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1527" +#define GLSLANG_DATE "29-Sep-2016" From bc9b7656b77afe3053d00b6ebfdc0d114d167aa2 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 29 Sep 2016 08:43:22 -0600 Subject: [PATCH 017/130] Restrict uniform array flattening to sampler and texture arrays. Previously the uniform array flattening feature would trigger on loose uniform arrays of any basic type (e.g, floats). This PR restricts it to sampler and texture arrays. Other arrays would end up in their own uniform block (anonymous or otherwise). (Atomic counter arrays might be an exception, but those are not currently flattened). --- StandAlone/StandAlone.cpp | 2 +- hlsl/hlslParseHelper.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 30af4fe4..5d30ac2b 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -941,7 +941,7 @@ void usage() " explicit bindings.\n" " --amb synonym for --auto-map-bindings\n" "\n" - " --flatten-uniform-arrays flatten uniform array references to scalars\n" + " --flatten-uniform-arrays flatten uniform texture & sampler arrays to scalars\n" " --fua synonym for --flatten-uniform-arrays\n" ); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 65f7aa26..44a4230b 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -736,7 +736,9 @@ bool HlslParseContext::shouldFlattenUniform(const TType& type) const return type.isArray() && intermediate.getFlattenUniformArrays() && - qualifier == EvqUniform; + qualifier == EvqUniform && + // Testing the EbtSampler basic type covers samplers and textures + type.getBasicType() == EbtSampler; } void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable) From 0b3b6e17bd4b0ea6c04b838997111375b83e0cb3 Mon Sep 17 00:00:00 2001 From: Anny Date: Thu, 29 Sep 2016 16:29:58 -0700 Subject: [PATCH 018/130] Updated README.md Added an alternative link for cloning the repo in the build instructions --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 63ffdee1..9cfdce18 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,10 @@ Building ```bash cd +# If using SSH git clone git@github.com:KhronosGroup/glslang.git +# Or if using HTTPS +git clone https://github.com/KhronosGroup/glslang.git ``` #### 2) Check-Out External Projects From df98cc26d583fb443bf82f8eb25f3da2e7c50022 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 29 Sep 2016 23:58:30 -0600 Subject: [PATCH 019/130] Add amend ability for anonymous blocks, so they can grow between function bodies. --- Test/baseResults/hlsl.amend.frag.out | 207 ++++++++++++++++++ Test/hlsl.amend.frag | 28 +++ glslang/Include/revision.h | 2 +- .../MachineIndependent/ParseContextBase.cpp | 29 ++- glslang/MachineIndependent/ParseHelper.h | 3 +- glslang/MachineIndependent/SymbolTable.h | 62 ++++-- gtests/Hlsl.FromFile.cpp | 1 + 7 files changed, 298 insertions(+), 34 deletions(-) create mode 100755 Test/baseResults/hlsl.amend.frag.out create mode 100755 Test/hlsl.amend.frag diff --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out new file mode 100755 index 00000000..1be59064 --- /dev/null +++ b/Test/baseResults/hlsl.amend.frag.out @@ -0,0 +1,207 @@ +hlsl.amend.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: f1( (temp void) +0:5 Function Parameters: +0:? Sequence +0:6 vector-scale (temp 4-component vector of float) +0:6 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 0 (const uint) +0:6 b: direct index for structure (layout(offset=16 ) uniform float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 1 (const uint) +0:12 Function Definition: f2( (temp void) +0:12 Function Parameters: +0:? Sequence +0:13 add (temp float) +0:13 add (temp float) +0:13 direct index (temp float) +0:13 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 0 (const int) +0:13 b: direct index for structure (layout(offset=16 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 1 (const uint) +0:13 direct index (temp float) +0:13 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 2 (const uint) +0:13 Constant: +0:13 0 (const int) +0:17 Function Definition: f3( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:18 Constant: +0:18 2 (const uint) +0:24 Function Definition: f4( (temp void) +0:24 Function Parameters: +0:? Sequence +0:25 vector-scale (temp 4-component vector of float) +0:25 Convert int to float (temp float) +0:25 d: direct index for structure (layout(offset=44 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 3 (const uint) +0:25 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 0 (const uint) +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: f1( (temp void) +0:5 Function Parameters: +0:? Sequence +0:6 vector-scale (temp 4-component vector of float) +0:6 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 0 (const uint) +0:6 b: direct index for structure (layout(offset=16 ) uniform float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 1 (const uint) +0:12 Function Definition: f2( (temp void) +0:12 Function Parameters: +0:? Sequence +0:13 add (temp float) +0:13 add (temp float) +0:13 direct index (temp float) +0:13 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 0 (const int) +0:13 b: direct index for structure (layout(offset=16 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 1 (const uint) +0:13 direct index (temp float) +0:13 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 2 (const uint) +0:13 Constant: +0:13 0 (const int) +0:17 Function Definition: f3( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:18 Constant: +0:18 2 (const uint) +0:24 Function Definition: f4( (temp void) +0:24 Function Parameters: +0:? Sequence +0:25 vector-scale (temp 4-component vector of float) +0:25 Convert int to float (temp float) +0:25 d: direct index for structure (layout(offset=44 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 3 (const uint) +0:25 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 0 (const uint) +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 47 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "f1" + ExecutionMode 4 OriginUpperLeft + Name 4 "f1" + Name 6 "f2(" + Name 8 "f3(" + Name 10 "f4(" + Name 16 "$Global" + MemberName 16($Global) 0 "a" + MemberName 16($Global) 1 "b" + MemberName 16($Global) 2 "c" + MemberName 16($Global) 3 "d" + MemberName 16($Global) 4 "e" + Name 18 "" + MemberDecorate 16($Global) 0 Offset 0 + MemberDecorate 16($Global) 1 Offset 16 + MemberDecorate 16($Global) 2 Offset 32 + MemberDecorate 16($Global) 3 Offset 44 + MemberDecorate 16($Global) 4 Offset 48 + Decorate 16($Global) Block + Decorate 18 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 12: TypeFloat 32 + 13: TypeVector 12(float) 4 + 14: TypeVector 12(float) 3 + 15: TypeInt 32 1 + 16($Global): TypeStruct 13(fvec4) 12(float) 14(fvec3) 15(int) 15(int) + 17: TypePointer Uniform 16($Global) + 18: 17(ptr) Variable Uniform + 19: 15(int) Constant 0 + 20: TypePointer Uniform 13(fvec4) + 23: 15(int) Constant 1 + 24: TypePointer Uniform 12(float) + 28: TypeInt 32 0 + 29: 28(int) Constant 0 + 35: 15(int) Constant 2 + 39: 15(int) Constant 3 + 40: TypePointer Uniform 15(int) + 4(f1): 2 Function None 3 + 5: Label + 21: 20(ptr) AccessChain 18 19 + 22: 13(fvec4) Load 21 + 25: 24(ptr) AccessChain 18 23 + 26: 12(float) Load 25 + 27: 13(fvec4) VectorTimesScalar 22 26 + Return + FunctionEnd + 6(f2(): 2 Function None 3 + 7: Label + 30: 24(ptr) AccessChain 18 19 29 + 31: 12(float) Load 30 + 32: 24(ptr) AccessChain 18 23 + 33: 12(float) Load 32 + 34: 12(float) FAdd 31 33 + 36: 24(ptr) AccessChain 18 35 29 + 37: 12(float) Load 36 + 38: 12(float) FAdd 34 37 + Return + FunctionEnd + 8(f3(): 2 Function None 3 + 9: Label + Return + FunctionEnd + 10(f4(): 2 Function None 3 + 11: Label + 41: 40(ptr) AccessChain 18 39 + 42: 15(int) Load 41 + 43: 12(float) ConvertSToF 42 + 44: 20(ptr) AccessChain 18 19 + 45: 13(fvec4) Load 44 + 46: 13(fvec4) VectorTimesScalar 45 43 + Return + FunctionEnd diff --git a/Test/hlsl.amend.frag b/Test/hlsl.amend.frag new file mode 100755 index 00000000..c9fd69bd --- /dev/null +++ b/Test/hlsl.amend.frag @@ -0,0 +1,28 @@ +float4 a; +float b; + +void f1() +{ + a * b; +} + +float3 c; + +void f2() +{ + a.x + b + c.x; +} + +void f3() +{ + c; +} + +int d; + +void f4() +{ + d * a; +} + +int e; \ No newline at end of file diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 24002550..2d79b424 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1527" +#define GLSLANG_REVISION "Overload400-PrecQual.1528" #define GLSLANG_DATE "29-Sep-2016" diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 54715ce1..a8e83d01 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -196,7 +196,7 @@ void TParseContextBase::growGlobalUniformBlock(TSourceLoc& loc, TType& memberTyp TType blockType(new TTypeList, blockName, blockQualifier); TString* instanceName = NewPoolTString(""); globalUniformBlock = new TVariable(instanceName, blockType, true); - globalUniformBlockAdded = false; + firstNewMember = 0; } // add the requested member as a member to the block @@ -205,7 +205,6 @@ void TParseContextBase::growGlobalUniformBlock(TSourceLoc& loc, TType& memberTyp type->setFieldName(memberName); TTypeLoc typeLoc = {type, loc}; globalUniformBlock->getType().getWritableStruct()->push_back(typeLoc); - globalUniformBlockChanged = true; } // @@ -218,17 +217,25 @@ bool TParseContextBase::insertGlobalUniformBlock() if (globalUniformBlock == nullptr) return true; - if (globalUniformBlockAdded) - return ! globalUniformBlockChanged; - - globalUniformBlockChanged = false; - globalUniformBlockAdded = symbolTable.insert(*globalUniformBlock); - if (globalUniformBlockAdded) { - intermediate.addSymbolLinkageNode(linkage, *globalUniformBlock); - finalizeGlobalUniformBlockLayout(*globalUniformBlock); + int numMembers = globalUniformBlock->getType().getStruct()->size(); + bool inserted; + if (firstNewMember == 0) { + // This is the first request; we need a normal symbol table insert + inserted = symbolTable.insert(*globalUniformBlock); + if (inserted) + intermediate.addSymbolLinkageNode(linkage, *globalUniformBlock); + } else if (firstNewMember <= numMembers) { + // This is a follow-on request; we need to amend the first insert + inserted = symbolTable.amend(*globalUniformBlock, firstNewMember); } - return globalUniformBlockAdded; + if (inserted) { + finalizeGlobalUniformBlockLayout(*globalUniformBlock); + firstNewMember = numMembers; + } + + return inserted; + } } // end namespace glslang diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index b007ebbb..e377501d 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -158,8 +158,7 @@ protected: // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) TVariable* globalUniformBlock; // the actual block, inserted into the symbol table - bool globalUniformBlockAdded; // true once inserted into the symbol table - bool globalUniformBlockChanged; // true if members have changed + int firstNewMember; // the index of the first member not yet inserted into the symbol table // override this to set the language-specific name virtual const char* getGlobalUniformBlockName() { return ""; } virtual void finalizeGlobalUniformBlockLayout(TVariable&) { } diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 97c3d6b5..aeec34fc 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -147,7 +147,8 @@ public: TVariable(const TString *name, const TType& t, bool uT = false ) : TSymbol(name), userType(uT), - constSubtree(nullptr) { type.shallowCopy(t); } + constSubtree(nullptr), + anonId(-1) { type.shallowCopy(t); } virtual TVariable* clone() const; virtual ~TVariable() { } @@ -161,6 +162,8 @@ public: virtual void setConstArray(const TConstUnionArray& array) { constArray = array; } virtual void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; } virtual TIntermTyped* getConstSubtree() const { return constSubtree; } + virtual void setAnonId(int i) { anonId = i; } + virtual int getAnonId() const { return anonId; } virtual void dump(TInfoSink &infoSink) const; @@ -178,6 +181,7 @@ protected: // constant, or neither, but never both. TConstUnionArray constArray; // for compile-time constant value TIntermTyped* constSubtree; // for specialization constant computation + int anonId; // the ID used for anonymous blocks: TODO: see if uniqueId could serve a dual purpose }; // @@ -305,27 +309,16 @@ public: // // returning true means symbol was added to the table with no semantic errors // - tInsertResult result; const TString& name = symbol.getName(); if (name == "") { + symbol.getAsVariable()->setAnonId(anonId++); // An empty name means an anonymous container, exposing its members to the external scope. // Give it a name and insert its members in the symbol table, pointing to the container. char buf[20]; - snprintf(buf, 20, "%s%d", AnonymousPrefix, anonId); + snprintf(buf, 20, "%s%d", AnonymousPrefix, symbol.getAsVariable()->getAnonId()); symbol.changeName(NewPoolTString(buf)); - bool isOkay = true; - const TTypeList& types = *symbol.getAsVariable()->getType().getStruct(); - for (unsigned int m = 0; m < types.size(); ++m) { - TAnonMember* member = new TAnonMember(&types[m].type->getFieldName(), m, *symbol.getAsVariable(), anonId); - result = level.insert(tLevelPair(member->getMangledName(), member)); - if (! result.second) - isOkay = false; - } - - ++anonId; - - return isOkay; + return insertAnonymousMembers(symbol, 0); } else { // Check for redefinition errors: // - STL itself will tell us if there is a direct name collision, with name mangling, at this level @@ -340,14 +333,35 @@ public: level.insert(tLevelPair(insertName, &symbol)); return true; - } else { - result = level.insert(tLevelPair(insertName, &symbol)); - - return result.second; - } + } else + return level.insert(tLevelPair(insertName, &symbol)).second; } } + // Add more members to an already inserted aggregate object + bool amend(TSymbol& symbol, int firstNewMember) + { + // See insert() for comments on basic explanation of insert. + // This operates similarly, but more simply. + // Only supporting amend of anonymous blocks so far. + if (IsAnonymous(symbol.getName())) + return insertAnonymousMembers(symbol, firstNewMember); + else + return false; + } + + bool insertAnonymousMembers(TSymbol& symbol, int firstMember) + { + const TTypeList& types = *symbol.getAsVariable()->getType().getStruct(); + for (unsigned int m = firstMember; m < types.size(); ++m) { + TAnonMember* member = new TAnonMember(&types[m].type->getFieldName(), m, *symbol.getAsVariable(), symbol.getAsVariable()->getAnonId()); + if (! level.insert(tLevelPair(member->getMangledName(), member)).second) + return false; + } + + return true; + } + TSymbol* find(const TString& name) const { tLevel::const_iterator it = level.find(name); @@ -546,6 +560,14 @@ public: return table[currentLevel()]->insert(symbol, separateNameSpaces); } + // Add more members to an already inserted aggregate object + bool amend(TSymbol& symbol, int firstNewMember) + { + // See insert() for comments on basic explanation of insert. + // This operates similarly, but more simply. + return table[currentLevel()]->amend(symbol, firstNewMember); + } + // // To allocate an internal temporary, which will need to be uniquely // identified by the consumer of the AST, but never need to diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 2e191ba2..7467eb79 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -80,6 +80,7 @@ TEST_P(HlslCompileAndFlattenTest, FromFile) INSTANTIATE_TEST_CASE_P( ToSpirv, HlslCompileTest, ::testing::ValuesIn(std::vector{ + {"hlsl.amend.frag", "f1"}, {"hlsl.array.frag", "PixelShaderFunction"}, {"hlsl.array.implicit-size.frag", "PixelShaderFunction"}, {"hlsl.assoc.frag", "PixelShaderFunction"}, From c9e3c3c941b4f56cd0abc6ee944b1b285ce593cb Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 29 Jul 2016 16:00:05 +0800 Subject: [PATCH 020/130] Parser: Implement extension GL_AMD_gpu_shader_half_float. - Add built-in types: float16_t, f16vec, f16mat. - Add support of half float constant: hf, HF. - Extend built-in floating-point operators: +, -, *, /, ++, --, +=, -=, *=, /=, ==, !=, >=, <=, >, <. - Add support of type conversions: float16_t -> XXX, XXX -> float16_t. - Add new built-in functions. --- SPIRV/CMakeLists.txt | 7 +- SPIRV/GLSL.ext.AMD.h | 5 +- SPIRV/GlslangToSpv.cpp | 106 +- SPIRV/SpvBuilder.cpp | 34 + SPIRV/SpvBuilder.h | 3 + SPIRV/bitutils.h | 81 + SPIRV/hex_float.h | 1076 ++ Test/baseResults/spv.float16.frag.out | 837 ++ Test/spv.float16.frag | 306 + glslang/Include/BaseTypes.h | 3 + glslang/Include/Types.h | 12 +- glslang/Include/intermediate.h | 35 + glslang/MachineIndependent/Constant.cpp | 9 + glslang/MachineIndependent/Initialize.cpp | 441 +- glslang/MachineIndependent/Intermediate.cpp | 172 +- glslang/MachineIndependent/ParseHelper.cpp | 26 + glslang/MachineIndependent/Scan.cpp | 52 +- glslang/MachineIndependent/SymbolTable.cpp | 3 + glslang/MachineIndependent/Versions.cpp | 15 + glslang/MachineIndependent/Versions.h | 9 +- glslang/MachineIndependent/gl_types.h | 18 + glslang/MachineIndependent/glslang.y | 141 +- glslang/MachineIndependent/glslang_tab.cpp | 8748 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 612 +- glslang/MachineIndependent/intermOut.cpp | 38 + glslang/MachineIndependent/linkValidate.cpp | 3 + glslang/MachineIndependent/parseVersions.h | 3 + .../MachineIndependent/preprocessor/Pp.cpp | 6 + .../preprocessor/PpScanner.cpp | 33 + .../preprocessor/PpTokens.cpp | 9 + .../preprocessor/PpTokens.h | 3 + glslang/MachineIndependent/reflection.cpp | 32 + gtests/CMakeLists.txt | 1 + gtests/HexFloat.cpp | 1232 +++ gtests/Spv.FromFile.cpp | 24 + 35 files changed, 9765 insertions(+), 4370 deletions(-) create mode 100644 SPIRV/bitutils.h create mode 100644 SPIRV/hex_float.h create mode 100644 Test/baseResults/spv.float16.frag.out create mode 100644 Test/spv.float16.frag create mode 100644 gtests/HexFloat.cpp diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index ad72276f..2c65d71a 100755 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -11,10 +11,12 @@ set(SPVREMAP_SOURCES doc.cpp) set(HEADERS + bitutils.h spirv.hpp GLSL.std.450.h GLSL.ext.KHR.h GlslangToSpv.h + hex_float.h Logger.h SpvBuilder.h spvIR.h @@ -26,8 +28,9 @@ set(SPVREMAP_HEADERS doc.h) if(ENABLE_AMD_EXTENSIONS) - set(HEADERS - GLSL.ext.AMD.h) + list(APPEND + HEADERS + GLSL.ext.AMD.h) endif(ENABLE_AMD_EXTENSIONS) add_library(SPIRV STATIC ${SOURCES} ${HEADERS}) diff --git a/SPIRV/GLSL.ext.AMD.h b/SPIRV/GLSL.ext.AMD.h index 633cea0c..d2098cc1 100644 --- a/SPIRV/GLSL.ext.AMD.h +++ b/SPIRV/GLSL.ext.AMD.h @@ -32,7 +32,7 @@ enum Decoration; enum Op; static const int GLSLextAMDVersion = 100; -static const int GLSLextAMDRevision = 1; +static const int GLSLextAMDRevision = 2; // SPV_AMD_shader_ballot static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot"; @@ -110,4 +110,7 @@ enum GcnShaderAMD { GcnShaderCountAMD }; +// SPV_AMD_gpu_shader_half_float +static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_half_float"; + #endif // #ifndef GLSLextAMD_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index c79b6c21..6e18b2b6 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1215,6 +1215,10 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI one = builder.makeFloatConstant(1.0F); else if (node->getBasicType() == glslang::EbtDouble) one = builder.makeDoubleConstant(1.0); +#ifdef AMD_EXTENSIONS + else if (node->getBasicType() == glslang::EbtFloat16) + one = builder.makeFloat16Constant(1.0F); +#endif else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64) one = builder.makeInt64Constant(1); else @@ -1388,6 +1392,17 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructDMat4x2: case glslang::EOpConstructDMat4x3: case glslang::EOpConstructDMat4x4: +#ifdef AMD_EXTENSIONS + case glslang::EOpConstructF16Mat2x2: + case glslang::EOpConstructF16Mat2x3: + case glslang::EOpConstructF16Mat2x4: + case glslang::EOpConstructF16Mat3x2: + case glslang::EOpConstructF16Mat3x3: + case glslang::EOpConstructF16Mat3x4: + case glslang::EOpConstructF16Mat4x2: + case glslang::EOpConstructF16Mat4x3: + case glslang::EOpConstructF16Mat4x4: +#endif isMatrix = true; // fall through case glslang::EOpConstructFloat: @@ -1398,6 +1413,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructDVec2: case glslang::EOpConstructDVec3: case glslang::EOpConstructDVec4: +#ifdef AMD_EXTENSIONS + case glslang::EOpConstructFloat16: + case glslang::EOpConstructF16Vec2: + case glslang::EOpConstructF16Vec3: + case glslang::EOpConstructF16Vec4: +#endif case glslang::EOpConstructBool: case glslang::EOpConstructBVec2: case glslang::EOpConstructBVec3: @@ -1901,7 +1922,6 @@ spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, return builder.createRvalueSwizzle(precision, convertGlslangToSpvType(node.getType()), parentResult, swizzle); } - // Convert a glslang AST swizzle node to a swizzle vector for building SPIR-V. void TGlslangToSpvTraverser::convertSwizzle(const glslang::TIntermAggregate& node, std::vector& swizzle) { @@ -1936,6 +1956,13 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty case glslang::EbtDouble: spvType = builder.makeFloatType(64); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtFloat16: + builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); + builder.addCapability(spv::CapabilityFloat16); + spvType = builder.makeFloatType(16); + break; +#endif case glslang::EbtBool: // "transparent" bool doesn't exist in SPIR-V. The GLSL convention is // a 32-bit int where non-0 means true. @@ -3040,7 +3067,11 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv glslang::TBasicType typeProxy, bool reduceComparison) { bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif bool isBool = typeProxy == glslang::EbtBool; spv::Op binOp = spv::OpNop; @@ -3366,7 +3397,11 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: int extBuiltins = -1; int libCall = -1; bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif switch (op) { case glslang::EOpNegative: @@ -3550,6 +3585,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: unaryOp = spv::OpBitcast; break; +#ifdef AMD_EXTENSIONS + case glslang::EOpPackFloat2x16: + case glslang::EOpUnpackFloat2x16: + unaryOp = spv::OpBitcast; + break; +#endif + case glslang::EOpDPdx: unaryOp = spv::OpDPdx; break; @@ -3746,22 +3788,40 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec zero = makeSmearedConstant(zero, vectorSize); return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); +#ifdef AMD_EXTENSIONS + case glslang::EOpConvFloat16ToBool: + zero = builder.makeFloat16Constant(0.0F); + zero = makeSmearedConstant(zero, vectorSize); + return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); +#endif + case glslang::EOpConvBoolToFloat: convOp = spv::OpSelect; - zero = builder.makeFloatConstant(0.0); - one = builder.makeFloatConstant(1.0); + zero = builder.makeFloatConstant(0.0F); + one = builder.makeFloatConstant(1.0F); break; + case glslang::EOpConvBoolToDouble: convOp = spv::OpSelect; zero = builder.makeDoubleConstant(0.0); one = builder.makeDoubleConstant(1.0); break; + +#ifdef AMD_EXTENSIONS + case glslang::EOpConvBoolToFloat16: + convOp = spv::OpSelect; + zero = builder.makeFloat16Constant(0.0F); + one = builder.makeFloat16Constant(1.0F); + break; +#endif + case glslang::EOpConvBoolToInt: case glslang::EOpConvBoolToInt64: zero = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(0) : builder.makeIntConstant(0); one = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(1) : builder.makeIntConstant(1); convOp = spv::OpSelect; break; + case glslang::EOpConvBoolToUint: case glslang::EOpConvBoolToUint64: zero = (op == glslang::EOpConvBoolToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); @@ -3773,6 +3833,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvIntToDouble: case glslang::EOpConvInt64ToFloat: case glslang::EOpConvInt64ToDouble: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvIntToFloat16: + case glslang::EOpConvInt64ToFloat16: +#endif convOp = spv::OpConvertSToF; break; @@ -3780,11 +3844,21 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvUintToDouble: case glslang::EOpConvUint64ToFloat: case glslang::EOpConvUint64ToDouble: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvUintToFloat16: + case glslang::EOpConvUint64ToFloat16: +#endif convOp = spv::OpConvertUToF; break; case glslang::EOpConvDoubleToFloat: case glslang::EOpConvFloatToDouble: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvDoubleToFloat16: + case glslang::EOpConvFloat16ToDouble: + case glslang::EOpConvFloatToFloat16: + case glslang::EOpConvFloat16ToFloat: +#endif convOp = spv::OpFConvert; if (builder.isMatrixType(destType)) return createUnaryMatrixOperation(convOp, precision, noContraction, destType, operand, typeProxy); @@ -3794,6 +3868,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvDoubleToInt: case glslang::EOpConvFloatToInt64: case glslang::EOpConvDoubleToInt64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvFloat16ToInt: + case glslang::EOpConvFloat16ToInt64: +#endif convOp = spv::OpConvertFToS; break; @@ -3818,6 +3896,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvDoubleToUint: case glslang::EOpConvFloatToUint64: case glslang::EOpConvDoubleToUint64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvFloat16ToUint: + case glslang::EOpConvFloat16ToUint64: +#endif convOp = spv::OpConvertFToU; break; @@ -3987,7 +4069,11 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif spv::Op opCode = spv::OpNop; @@ -4185,7 +4271,11 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif spv::Op opCode = spv::OpNop; int extBuiltins = -1; @@ -4715,6 +4805,11 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtDouble: spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtFloat16: + spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); + break; +#endif case glslang::EbtBool: spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst())); break; @@ -4747,6 +4842,11 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtDouble: scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtFloat16: + scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); + break; +#endif case glslang::EbtBool: scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant); break; diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 7aaa51f9..c19f3683 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -46,6 +46,10 @@ #include "SpvBuilder.h" +#ifdef AMD_EXTENSIONS + #include "hex_float.h" +#endif + #ifndef _WIN32 #include #endif @@ -785,6 +789,36 @@ Id Builder::makeDoubleConstant(double d, bool specConstant) return c->getResultId(); } +#ifdef AMD_EXTENSIONS +Id Builder::makeFloat16Constant(float f16, bool specConstant) +{ + Op opcode = specConstant ? OpSpecConstant : OpConstant; + Id typeId = makeFloatType(16); + + spvutils::HexFloat> fVal(f16); + spvutils::HexFloat> f16Val(0); + fVal.castTo(f16Val, spvutils::round_direction::kToZero); + + unsigned value = f16Val.value().getAsFloat().get_value(); + + // See if we already made it. Applies only to regular constants, because specialization constants + // must remain distinct for the purpose of applying a SpecId decoration. + if (!specConstant) { + Id existing = findScalarConstant(OpTypeFloat, opcode, typeId, value); + if (existing) + return existing; + } + + Instruction* c = new Instruction(getUniqueId(), typeId, opcode); + c->addImmediateOperand(value); + constantsTypesGlobals.push_back(std::unique_ptr(c)); + groupedConstants[OpTypeFloat].push_back(c); + module.mapInstruction(c); + + return c->getResultId(); +} +#endif + Id Builder::findCompositeConstant(Op typeClass, std::vector& comps) const { Instruction* constant = 0; diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 6e709eaa..0e8d9cae 100755 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -191,6 +191,9 @@ public: Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); } Id makeFloatConstant(float f, bool specConstant = false); Id makeDoubleConstant(double d, bool specConstant = false); +#ifdef AMD_EXTENSIONS + Id makeFloat16Constant(float f16, bool specConstant = false); +#endif // Turn the array of constants into a proper spv constant of the requested type. Id makeCompositeConstant(Id type, std::vector& comps, bool specConst = false); diff --git a/SPIRV/bitutils.h b/SPIRV/bitutils.h new file mode 100644 index 00000000..31288ab6 --- /dev/null +++ b/SPIRV/bitutils.h @@ -0,0 +1,81 @@ +// Copyright (c) 2015-2016 The Khronos Group Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef LIBSPIRV_UTIL_BITUTILS_H_ +#define LIBSPIRV_UTIL_BITUTILS_H_ + +#include +#include + +namespace spvutils { + +// Performs a bitwise copy of source to the destination type Dest. +template +Dest BitwiseCast(Src source) { + Dest dest; + static_assert(sizeof(source) == sizeof(dest), + "BitwiseCast: Source and destination must have the same size"); + std::memcpy(&dest, &source, sizeof(dest)); + return dest; +} + +// SetBits returns an integer of type with bits set +// for position through , counting from the least +// significant bit. In particular when Num == 0, no positions are set to 1. +// A static assert will be triggered if First + Num > sizeof(T) * 8, that is, +// a bit that will not fit in the underlying type is set. +template +struct SetBits { + static_assert(First < sizeof(T) * 8, + "Tried to set a bit that is shifted too far."); + const static T get = (T(1) << First) | SetBits::get; +}; + +template +struct SetBits { + const static T get = T(0); +}; + +// This is all compile-time so we can put our tests right here. +static_assert(SetBits::get == uint32_t(0x00000000), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x00000001), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x80000000), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x00000006), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0xc0000000), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x7FFFFFFF), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0xFFFFFFFF), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0xFFFF0000), + "SetBits failed"); + +static_assert(SetBits::get == uint64_t(0x0000000000000001LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0x8000000000000000LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0xc000000000000000LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0x0000000080000000LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0x00000000FFFF0000LL), + "SetBits failed"); + +} // namespace spvutils + +#endif // LIBSPIRV_UTIL_BITUTILS_H_ diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h new file mode 100644 index 00000000..ac7e0027 --- /dev/null +++ b/SPIRV/hex_float.h @@ -0,0 +1,1076 @@ +// Copyright (c) 2015-2016 The Khronos Group Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef LIBSPIRV_UTIL_HEX_FLOAT_H_ +#define LIBSPIRV_UTIL_HEX_FLOAT_H_ + +#include +#include +#include +#include +#include +#include +#include + +#include "bitutils.h" + +namespace spvutils { + +class Float16 { + public: + Float16(uint16_t v) : val(v) {} + Float16() = default; + static bool isNan(const Float16& val) { + return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) != 0); + } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(const Float16& val) { + return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) == 0); + } + Float16(const Float16& other) { val = other.val; } + uint16_t get_value() const { return val; } + + // Returns the maximum normal value. + static Float16 max() { return Float16(0x7bff); } + // Returns the lowest normal value. + static Float16 lowest() { return Float16(0xfbff); } + + private: + uint16_t val; +}; + +// To specialize this type, you must override uint_type to define +// an unsigned integer that can fit your floating point type. +// You must also add a isNan function that returns true if +// a value is Nan. +template +struct FloatProxyTraits { + using uint_type = void; +}; + +template <> +struct FloatProxyTraits { + using uint_type = uint32_t; + static bool isNan(float f) { return std::isnan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(float f) { return std::isinf(f); } + // Returns the maximum normal value. + static float max() { return std::numeric_limits::max(); } + // Returns the lowest normal value. + static float lowest() { return std::numeric_limits::lowest(); } +}; + +template <> +struct FloatProxyTraits { + using uint_type = uint64_t; + static bool isNan(double f) { return std::isnan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(double f) { return std::isinf(f); } + // Returns the maximum normal value. + static double max() { return std::numeric_limits::max(); } + // Returns the lowest normal value. + static double lowest() { return std::numeric_limits::lowest(); } +}; + +template <> +struct FloatProxyTraits { + using uint_type = uint16_t; + static bool isNan(Float16 f) { return Float16::isNan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(Float16 f) { return Float16::isInfinity(f); } + // Returns the maximum normal value. + static Float16 max() { return Float16::max(); } + // Returns the lowest normal value. + static Float16 lowest() { return Float16::lowest(); } +}; + +// Since copying a floating point number (especially if it is NaN) +// does not guarantee that bits are preserved, this class lets us +// store the type and use it as a float when necessary. +template +class FloatProxy { + public: + using uint_type = typename FloatProxyTraits::uint_type; + + // Since this is to act similar to the normal floats, + // do not initialize the data by default. + FloatProxy() = default; + + // Intentionally non-explicit. This is a proxy type so + // implicit conversions allow us to use it more transparently. + FloatProxy(T val) { data_ = BitwiseCast(val); } + + // Intentionally non-explicit. This is a proxy type so + // implicit conversions allow us to use it more transparently. + FloatProxy(uint_type val) { data_ = val; } + + // This is helpful to have and is guaranteed not to stomp bits. + FloatProxy operator-() const { + return static_cast(data_ ^ + (uint_type(0x1) << (sizeof(T) * 8 - 1))); + } + + // Returns the data as a floating point value. + T getAsFloat() const { return BitwiseCast(data_); } + + // Returns the raw data. + uint_type data() const { return data_; } + + // Returns true if the value represents any type of NaN. + bool isNan() { return FloatProxyTraits::isNan(getAsFloat()); } + // Returns true if the value represents any type of infinity. + bool isInfinity() { return FloatProxyTraits::isInfinity(getAsFloat()); } + + // Returns the maximum normal value. + static FloatProxy max() { + return FloatProxy(FloatProxyTraits::max()); + } + // Returns the lowest normal value. + static FloatProxy lowest() { + return FloatProxy(FloatProxyTraits::lowest()); + } + + private: + uint_type data_; +}; + +template +bool operator==(const FloatProxy& first, const FloatProxy& second) { + return first.data() == second.data(); +} + +// Reads a FloatProxy value as a normal float from a stream. +template +std::istream& operator>>(std::istream& is, FloatProxy& value) { + T float_val; + is >> float_val; + value = FloatProxy(float_val); + return is; +} + +// This is an example traits. It is not meant to be used in practice, but will +// be the default for any non-specialized type. +template +struct HexFloatTraits { + // Integer type that can store this hex-float. + using uint_type = void; + // Signed integer type that can store this hex-float. + using int_type = void; + // The numerical type that this HexFloat represents. + using underlying_type = void; + // The type needed to construct the underlying type. + using native_type = void; + // The number of bits that are actually relevant in the uint_type. + // This allows us to deal with, for example, 24-bit values in a 32-bit + // integer. + static const uint32_t num_used_bits = 0; + // Number of bits that represent the exponent. + static const uint32_t num_exponent_bits = 0; + // Number of bits that represent the fractional part. + static const uint32_t num_fraction_bits = 0; + // The bias of the exponent. (How much we need to subtract from the stored + // value to get the correct value.) + static const uint32_t exponent_bias = 0; +}; + +// Traits for IEEE float. +// 1 sign bit, 8 exponent bits, 23 fractional bits. +template <> +struct HexFloatTraits> { + using uint_type = uint32_t; + using int_type = int32_t; + using underlying_type = FloatProxy; + using native_type = float; + static const uint_type num_used_bits = 32; + static const uint_type num_exponent_bits = 8; + static const uint_type num_fraction_bits = 23; + static const uint_type exponent_bias = 127; +}; + +// Traits for IEEE double. +// 1 sign bit, 11 exponent bits, 52 fractional bits. +template <> +struct HexFloatTraits> { + using uint_type = uint64_t; + using int_type = int64_t; + using underlying_type = FloatProxy; + using native_type = double; + static const uint_type num_used_bits = 64; + static const uint_type num_exponent_bits = 11; + static const uint_type num_fraction_bits = 52; + static const uint_type exponent_bias = 1023; +}; + +// Traits for IEEE half. +// 1 sign bit, 5 exponent bits, 10 fractional bits. +template <> +struct HexFloatTraits> { + using uint_type = uint16_t; + using int_type = int16_t; + using underlying_type = uint16_t; + using native_type = uint16_t; + static const uint_type num_used_bits = 16; + static const uint_type num_exponent_bits = 5; + static const uint_type num_fraction_bits = 10; + static const uint_type exponent_bias = 15; +}; + +enum class round_direction { + kToZero, + kToNearestEven, + kToPositiveInfinity, + kToNegativeInfinity, + max = kToNegativeInfinity +}; + +// Template class that houses a floating pointer number. +// It exposes a number of constants based on the provided traits to +// assist in interpreting the bits of the value. +template > +class HexFloat { + public: + using uint_type = typename Traits::uint_type; + using int_type = typename Traits::int_type; + using underlying_type = typename Traits::underlying_type; + using native_type = typename Traits::native_type; + + explicit HexFloat(T f) : value_(f) {} + + T value() const { return value_; } + void set_value(T f) { value_ = f; } + + // These are all written like this because it is convenient to have + // compile-time constants for all of these values. + + // Pass-through values to save typing. + static const uint32_t num_used_bits = Traits::num_used_bits; + static const uint32_t exponent_bias = Traits::exponent_bias; + static const uint32_t num_exponent_bits = Traits::num_exponent_bits; + static const uint32_t num_fraction_bits = Traits::num_fraction_bits; + + // Number of bits to shift left to set the highest relevant bit. + static const uint32_t top_bit_left_shift = num_used_bits - 1; + // How many nibbles (hex characters) the fractional part takes up. + static const uint32_t fraction_nibbles = (num_fraction_bits + 3) / 4; + // If the fractional part does not fit evenly into a hex character (4-bits) + // then we have to left-shift to get rid of leading 0s. This is the amount + // we have to shift (might be 0). + static const uint32_t num_overflow_bits = + fraction_nibbles * 4 - num_fraction_bits; + + // The representation of the fraction, not the actual bits. This + // includes the leading bit that is usually implicit. + static const uint_type fraction_represent_mask = + spvutils::SetBits::get; + + // The topmost bit in the nibble-aligned fraction. + static const uint_type fraction_top_bit = + uint_type(1) << (num_fraction_bits + num_overflow_bits - 1); + + // The least significant bit in the exponent, which is also the bit + // immediately to the left of the significand. + static const uint_type first_exponent_bit = uint_type(1) + << (num_fraction_bits); + + // The mask for the encoded fraction. It does not include the + // implicit bit. + static const uint_type fraction_encode_mask = + spvutils::SetBits::get; + + // The bit that is used as a sign. + static const uint_type sign_mask = uint_type(1) << top_bit_left_shift; + + // The bits that represent the exponent. + static const uint_type exponent_mask = + spvutils::SetBits::get; + + // How far left the exponent is shifted. + static const uint32_t exponent_left_shift = num_fraction_bits; + + // How far from the right edge the fraction is shifted. + static const uint32_t fraction_right_shift = + static_cast(sizeof(uint_type) * 8) - num_fraction_bits; + + // The maximum representable unbiased exponent. + static const int_type max_exponent = + (exponent_mask >> num_fraction_bits) - exponent_bias; + // The minimum representable exponent for normalized numbers. + static const int_type min_exponent = -static_cast(exponent_bias); + + // Returns the bits associated with the value. + uint_type getBits() const { return spvutils::BitwiseCast(value_); } + + // Returns the bits associated with the value, without the leading sign bit. + uint_type getUnsignedBits() const { + return static_cast(spvutils::BitwiseCast(value_) & + ~sign_mask); + } + + // Returns the bits associated with the exponent, shifted to start at the + // lsb of the type. + const uint_type getExponentBits() const { + return static_cast((getBits() & exponent_mask) >> + num_fraction_bits); + } + + // Returns the exponent in unbiased form. This is the exponent in the + // human-friendly form. + const int_type getUnbiasedExponent() const { + return static_cast(getExponentBits() - exponent_bias); + } + + // Returns just the significand bits from the value. + const uint_type getSignificandBits() const { + return getBits() & fraction_encode_mask; + } + + // If the number was normalized, returns the unbiased exponent. + // If the number was denormal, normalize the exponent first. + const int_type getUnbiasedNormalizedExponent() const { + if ((getBits() & ~sign_mask) == 0) { // special case if everything is 0 + return 0; + } + int_type exp = getUnbiasedExponent(); + if (exp == min_exponent) { // We are in denorm land. + uint_type significand_bits = getSignificandBits(); + while ((significand_bits & (first_exponent_bit >> 1)) == 0) { + significand_bits = static_cast(significand_bits << 1); + exp = static_cast(exp - 1); + } + significand_bits &= fraction_encode_mask; + } + return exp; + } + + // Returns the signficand after it has been normalized. + const uint_type getNormalizedSignificand() const { + int_type unbiased_exponent = getUnbiasedNormalizedExponent(); + uint_type significand = getSignificandBits(); + for (int_type i = unbiased_exponent; i <= min_exponent; ++i) { + significand = static_cast(significand << 1); + } + significand &= fraction_encode_mask; + return significand; + } + + // Returns true if this number represents a negative value. + bool isNegative() const { return (getBits() & sign_mask) != 0; } + + // Sets this HexFloat from the individual components. + // Note this assumes EVERY significand is normalized, and has an implicit + // leading one. This means that the only way that this method will set 0, + // is if you set a number so denormalized that it underflows. + // Do not use this method with raw bits extracted from a subnormal number, + // since subnormals do not have an implicit leading 1 in the significand. + // The significand is also expected to be in the + // lowest-most num_fraction_bits of the uint_type. + // The exponent is expected to be unbiased, meaning an exponent of + // 0 actually means 0. + // If underflow_round_up is set, then on underflow, if a number is non-0 + // and would underflow, we round up to the smallest denorm. + void setFromSignUnbiasedExponentAndNormalizedSignificand( + bool negative, int_type exponent, uint_type significand, + bool round_denorm_up) { + bool significand_is_zero = significand == 0; + + if (exponent <= min_exponent) { + // If this was denormalized, then we have to shift the bit on, meaning + // the significand is not zero. + significand_is_zero = false; + significand |= first_exponent_bit; + significand = static_cast(significand >> 1); + } + + while (exponent < min_exponent) { + significand = static_cast(significand >> 1); + ++exponent; + } + + if (exponent == min_exponent) { + if (significand == 0 && !significand_is_zero && round_denorm_up) { + significand = static_cast(0x1); + } + } + + uint_type new_value = 0; + if (negative) { + new_value = static_cast(new_value | sign_mask); + } + exponent = static_cast(exponent + exponent_bias); + assert(exponent >= 0); + + // put it all together + exponent = static_cast((exponent << exponent_left_shift) & + exponent_mask); + significand = static_cast(significand & fraction_encode_mask); + new_value = static_cast(new_value | (exponent | significand)); + value_ = BitwiseCast(new_value); + } + + // Increments the significand of this number by the given amount. + // If this would spill the significand into the implicit bit, + // carry is set to true and the significand is shifted to fit into + // the correct location, otherwise carry is set to false. + // All significands and to_increment are assumed to be within the bounds + // for a valid significand. + static uint_type incrementSignificand(uint_type significand, + uint_type to_increment, bool* carry) { + significand = static_cast(significand + to_increment); + *carry = false; + if (significand & first_exponent_bit) { + *carry = true; + // The implicit 1-bit will have carried, so we should zero-out the + // top bit and shift back. + significand = static_cast(significand & ~first_exponent_bit); + significand = static_cast(significand >> 1); + } + return significand; + } + + // These exist because MSVC throws warnings on negative right-shifts + // even if they are not going to be executed. Eg: + // constant_number < 0? 0: constant_number + // These convert the negative left-shifts into right shifts. + + template + struct negatable_left_shift { + static uint_type val(uint_type val) { + return static_cast(val >> -N); + } + }; + + template + struct negatable_left_shift= 0>::type> { + static uint_type val(uint_type val) { + return static_cast(val << N); + } + }; + + template + struct negatable_right_shift { + static uint_type val(uint_type val) { + return static_cast(val << -N); + } + }; + + template + struct negatable_right_shift= 0>::type> { + static uint_type val(uint_type val) { + return static_cast(val >> N); + } + }; + + // Returns the significand, rounded to fit in a significand in + // other_T. This is shifted so that the most significant + // bit of the rounded number lines up with the most significant bit + // of the returned significand. + template + typename other_T::uint_type getRoundedNormalizedSignificand( + round_direction dir, bool* carry_bit) { + using other_uint_type = typename other_T::uint_type; + static const int_type num_throwaway_bits = + static_cast(num_fraction_bits) - + static_cast(other_T::num_fraction_bits); + + static const uint_type last_significant_bit = + (num_throwaway_bits < 0) + ? 0 + : negatable_left_shift::val(1u); + static const uint_type first_rounded_bit = + (num_throwaway_bits < 1) + ? 0 + : negatable_left_shift::val(1u); + + static const uint_type throwaway_mask_bits = + num_throwaway_bits > 0 ? num_throwaway_bits : 0; + static const uint_type throwaway_mask = + spvutils::SetBits::get; + + *carry_bit = false; + other_uint_type out_val = 0; + uint_type significand = getNormalizedSignificand(); + // If we are up-casting, then we just have to shift to the right location. + if (num_throwaway_bits <= 0) { + out_val = static_cast(significand); + uint_type shift_amount = static_cast(-num_throwaway_bits); + out_val = static_cast(out_val << shift_amount); + return out_val; + } + + // If every non-representable bit is 0, then we don't have any casting to + // do. + if ((significand & throwaway_mask) == 0) { + return static_cast( + negatable_right_shift::val(significand)); + } + + bool round_away_from_zero = false; + // We actually have to narrow the significand here, so we have to follow the + // rounding rules. + switch (dir) { + case round_direction::kToZero: + break; + case round_direction::kToPositiveInfinity: + round_away_from_zero = !isNegative(); + break; + case round_direction::kToNegativeInfinity: + round_away_from_zero = isNegative(); + break; + case round_direction::kToNearestEven: + // Have to round down, round bit is 0 + if ((first_rounded_bit & significand) == 0) { + break; + } + if (((significand & throwaway_mask) & ~first_rounded_bit) != 0) { + // If any subsequent bit of the rounded portion is non-0 then we round + // up. + round_away_from_zero = true; + break; + } + // We are exactly half-way between 2 numbers, pick even. + if ((significand & last_significant_bit) != 0) { + // 1 for our last bit, round up. + round_away_from_zero = true; + break; + } + break; + } + + if (round_away_from_zero) { + return static_cast( + negatable_right_shift::val(incrementSignificand( + significand, last_significant_bit, carry_bit))); + } else { + return static_cast( + negatable_right_shift::val(significand)); + } + } + + // Casts this value to another HexFloat. If the cast is widening, + // then round_dir is ignored. If the cast is narrowing, then + // the result is rounded in the direction specified. + // This number will retain Nan and Inf values. + // It will also saturate to Inf if the number overflows, and + // underflow to (0 or min depending on rounding) if the number underflows. + template + void castTo(other_T& other, round_direction round_dir) { + other = other_T(static_cast(0)); + bool negate = isNegative(); + if (getUnsignedBits() == 0) { + if (negate) { + other.set_value(-other.value()); + } + return; + } + uint_type significand = getSignificandBits(); + bool carried = false; + typename other_T::uint_type rounded_significand = + getRoundedNormalizedSignificand(round_dir, &carried); + + int_type exponent = getUnbiasedExponent(); + if (exponent == min_exponent) { + // If we are denormal, normalize the exponent, so that we can encode + // easily. + exponent = static_cast(exponent + 1); + for (uint_type check_bit = first_exponent_bit >> 1; check_bit != 0; + check_bit = static_cast(check_bit >> 1)) { + exponent = static_cast(exponent - 1); + if (check_bit & significand) break; + } + } + + bool is_nan = + (getBits() & exponent_mask) == exponent_mask && significand != 0; + bool is_inf = + !is_nan && + ((exponent + carried) > static_cast(other_T::exponent_bias) || + (significand == 0 && (getBits() & exponent_mask) == exponent_mask)); + + // If we are Nan or Inf we should pass that through. + if (is_inf) { + other.set_value(BitwiseCast( + static_cast( + (negate ? other_T::sign_mask : 0) | other_T::exponent_mask))); + return; + } + if (is_nan) { + typename other_T::uint_type shifted_significand; + shifted_significand = static_cast( + negatable_left_shift< + static_cast(other_T::num_fraction_bits) - + static_cast(num_fraction_bits)>::val(significand)); + + // We are some sort of Nan. We try to keep the bit-pattern of the Nan + // as close as possible. If we had to shift off bits so we are 0, then we + // just set the last bit. + other.set_value(BitwiseCast( + static_cast( + (negate ? other_T::sign_mask : 0) | other_T::exponent_mask | + (shifted_significand == 0 ? 0x1 : shifted_significand)))); + return; + } + + bool round_underflow_up = + isNegative() ? round_dir == round_direction::kToNegativeInfinity + : round_dir == round_direction::kToPositiveInfinity; + using other_int_type = typename other_T::int_type; + // setFromSignUnbiasedExponentAndNormalizedSignificand will + // zero out any underflowing value (but retain the sign). + other.setFromSignUnbiasedExponentAndNormalizedSignificand( + negate, static_cast(exponent), rounded_significand, + round_underflow_up); + return; + } + + private: + T value_; + + static_assert(num_used_bits == + Traits::num_exponent_bits + Traits::num_fraction_bits + 1, + "The number of bits do not fit"); + static_assert(sizeof(T) == sizeof(uint_type), "The type sizes do not match"); +}; + +// Returns 4 bits represented by the hex character. +inline uint8_t get_nibble_from_character(int character) { + const char* dec = "0123456789"; + const char* lower = "abcdef"; + const char* upper = "ABCDEF"; + const char* p = nullptr; + if ((p = strchr(dec, character))) { + return static_cast(p - dec); + } else if ((p = strchr(lower, character))) { + return static_cast(p - lower + 0xa); + } else if ((p = strchr(upper, character))) { + return static_cast(p - upper + 0xa); + } + + assert(false && "This was called with a non-hex character"); + return 0; +} + +// Outputs the given HexFloat to the stream. +template +std::ostream& operator<<(std::ostream& os, const HexFloat& value) { + using HF = HexFloat; + using uint_type = typename HF::uint_type; + using int_type = typename HF::int_type; + + static_assert(HF::num_used_bits != 0, + "num_used_bits must be non-zero for a valid float"); + static_assert(HF::num_exponent_bits != 0, + "num_exponent_bits must be non-zero for a valid float"); + static_assert(HF::num_fraction_bits != 0, + "num_fractin_bits must be non-zero for a valid float"); + + const uint_type bits = spvutils::BitwiseCast(value.value()); + const char* const sign = (bits & HF::sign_mask) ? "-" : ""; + const uint_type exponent = static_cast( + (bits & HF::exponent_mask) >> HF::num_fraction_bits); + + uint_type fraction = static_cast((bits & HF::fraction_encode_mask) + << HF::num_overflow_bits); + + const bool is_zero = exponent == 0 && fraction == 0; + const bool is_denorm = exponent == 0 && !is_zero; + + // exponent contains the biased exponent we have to convert it back into + // the normal range. + int_type int_exponent = static_cast(exponent - HF::exponent_bias); + // If the number is all zeros, then we actually have to NOT shift the + // exponent. + int_exponent = is_zero ? 0 : int_exponent; + + // If we are denorm, then start shifting, and decreasing the exponent until + // our leading bit is 1. + + if (is_denorm) { + while ((fraction & HF::fraction_top_bit) == 0) { + fraction = static_cast(fraction << 1); + int_exponent = static_cast(int_exponent - 1); + } + // Since this is denormalized, we have to consume the leading 1 since it + // will end up being implicit. + fraction = static_cast(fraction << 1); // eat the leading 1 + fraction &= HF::fraction_represent_mask; + } + + uint_type fraction_nibbles = HF::fraction_nibbles; + // We do not have to display any trailing 0s, since this represents the + // fractional part. + while (fraction_nibbles > 0 && (fraction & 0xF) == 0) { + // Shift off any trailing values; + fraction = static_cast(fraction >> 4); + --fraction_nibbles; + } + + const auto saved_flags = os.flags(); + const auto saved_fill = os.fill(); + + os << sign << "0x" << (is_zero ? '0' : '1'); + if (fraction_nibbles) { + // Make sure to keep the leading 0s in place, since this is the fractional + // part. + os << "." << std::setw(static_cast(fraction_nibbles)) + << std::setfill('0') << std::hex << fraction; + } + os << "p" << std::dec << (int_exponent >= 0 ? "+" : "") << int_exponent; + + os.flags(saved_flags); + os.fill(saved_fill); + + return os; +} + +// Returns true if negate_value is true and the next character on the +// input stream is a plus or minus sign. In that case we also set the fail bit +// on the stream and set the value to the zero value for its type. +template +inline bool RejectParseDueToLeadingSign(std::istream& is, bool negate_value, + HexFloat& value) { + if (negate_value) { + auto next_char = is.peek(); + if (next_char == '-' || next_char == '+') { + // Fail the parse. Emulate standard behaviour by setting the value to + // the zero value, and set the fail bit on the stream. + value = HexFloat(typename HexFloat::uint_type{0}); + is.setstate(std::ios_base::failbit); + return true; + } + } + return false; +} + +// Parses a floating point number from the given stream and stores it into the +// value parameter. +// If negate_value is true then the number may not have a leading minus or +// plus, and if it successfully parses, then the number is negated before +// being stored into the value parameter. +// If the value cannot be correctly parsed or overflows the target floating +// point type, then set the fail bit on the stream. +// TODO(dneto): Promise C++11 standard behavior in how the value is set in +// the error case, but only after all target platforms implement it correctly. +// In particular, the Microsoft C++ runtime appears to be out of spec. +template +inline std::istream& ParseNormalFloat(std::istream& is, bool negate_value, + HexFloat& value) { + if (RejectParseDueToLeadingSign(is, negate_value, value)) { + return is; + } + T val; + is >> val; + if (negate_value) { + val = -val; + } + value.set_value(val); + // In the failure case, map -0.0 to 0.0. + if (is.fail() && value.getUnsignedBits() == 0u) { + value = HexFloat(typename HexFloat::uint_type{0}); + } + if (val.isInfinity()) { + // Fail the parse. Emulate standard behaviour by setting the value to + // the closest normal value, and set the fail bit on the stream. + value.set_value((value.isNegative() | negate_value) ? T::lowest() + : T::max()); + is.setstate(std::ios_base::failbit); + } + return is; +} + +// Specialization of ParseNormalFloat for FloatProxy values. +// This will parse the float as it were a 32-bit floating point number, +// and then round it down to fit into a Float16 value. +// The number is rounded towards zero. +// If negate_value is true then the number may not have a leading minus or +// plus, and if it successfully parses, then the number is negated before +// being stored into the value parameter. +// If the value cannot be correctly parsed or overflows the target floating +// point type, then set the fail bit on the stream. +// TODO(dneto): Promise C++11 standard behavior in how the value is set in +// the error case, but only after all target platforms implement it correctly. +// In particular, the Microsoft C++ runtime appears to be out of spec. +template <> +inline std::istream& +ParseNormalFloat, HexFloatTraits>>( + std::istream& is, bool negate_value, + HexFloat, HexFloatTraits>>& value) { + // First parse as a 32-bit float. + HexFloat> float_val(0.0f); + ParseNormalFloat(is, negate_value, float_val); + + // Then convert to 16-bit float, saturating at infinities, and + // rounding toward zero. + float_val.castTo(value, round_direction::kToZero); + + // Overflow on 16-bit behaves the same as for 32- and 64-bit: set the + // fail bit and set the lowest or highest value. + if (Float16::isInfinity(value.value().getAsFloat())) { + value.set_value(value.isNegative() ? Float16::lowest() : Float16::max()); + is.setstate(std::ios_base::failbit); + } + return is; +} + +// Reads a HexFloat from the given stream. +// If the float is not encoded as a hex-float then it will be parsed +// as a regular float. +// This may fail if your stream does not support at least one unget. +// Nan values can be encoded with "0x1.p+exponent_bias". +// This would normally overflow a float and round to +// infinity but this special pattern is the exact representation for a NaN, +// and therefore is actually encoded as the correct NaN. To encode inf, +// either 0x0p+exponent_bias can be specified or any exponent greater than +// exponent_bias. +// Examples using IEEE 32-bit float encoding. +// 0x1.0p+128 (+inf) +// -0x1.0p-128 (-inf) +// +// 0x1.1p+128 (+Nan) +// -0x1.1p+128 (-Nan) +// +// 0x1p+129 (+inf) +// -0x1p+129 (-inf) +template +std::istream& operator>>(std::istream& is, HexFloat& value) { + using HF = HexFloat; + using uint_type = typename HF::uint_type; + using int_type = typename HF::int_type; + + value.set_value(static_cast(0.f)); + + if (is.flags() & std::ios::skipws) { + // If the user wants to skip whitespace , then we should obey that. + while (std::isspace(is.peek())) { + is.get(); + } + } + + auto next_char = is.peek(); + bool negate_value = false; + + if (next_char != '-' && next_char != '0') { + return ParseNormalFloat(is, negate_value, value); + } + + if (next_char == '-') { + negate_value = true; + is.get(); + next_char = is.peek(); + } + + if (next_char == '0') { + is.get(); // We may have to unget this. + auto maybe_hex_start = is.peek(); + if (maybe_hex_start != 'x' && maybe_hex_start != 'X') { + is.unget(); + return ParseNormalFloat(is, negate_value, value); + } else { + is.get(); // Throw away the 'x'; + } + } else { + return ParseNormalFloat(is, negate_value, value); + } + + // This "looks" like a hex-float so treat it as one. + bool seen_p = false; + bool seen_dot = false; + uint_type fraction_index = 0; + + uint_type fraction = 0; + int_type exponent = HF::exponent_bias; + + // Strip off leading zeros so we don't have to special-case them later. + while ((next_char = is.peek()) == '0') { + is.get(); + } + + bool is_denorm = + true; // Assume denorm "representation" until we hear otherwise. + // NB: This does not mean the value is actually denorm, + // it just means that it was written 0. + bool bits_written = false; // Stays false until we write a bit. + while (!seen_p && !seen_dot) { + // Handle characters that are left of the fractional part. + if (next_char == '.') { + seen_dot = true; + } else if (next_char == 'p') { + seen_p = true; + } else if (::isxdigit(next_char)) { + // We know this is not denormalized since we have stripped all leading + // zeroes and we are not a ".". + is_denorm = false; + int number = get_nibble_from_character(next_char); + for (int i = 0; i < 4; ++i, number <<= 1) { + uint_type write_bit = (number & 0x8) ? 0x1 : 0x0; + if (bits_written) { + // If we are here the bits represented belong in the fractional + // part of the float, and we have to adjust the exponent accordingly. + fraction = static_cast( + fraction | + static_cast( + write_bit << (HF::top_bit_left_shift - fraction_index++))); + exponent = static_cast(exponent + 1); + } + bits_written |= write_bit != 0; + } + } else { + // We have not found our exponent yet, so we have to fail. + is.setstate(std::ios::failbit); + return is; + } + is.get(); + next_char = is.peek(); + } + bits_written = false; + while (seen_dot && !seen_p) { + // Handle only fractional parts now. + if (next_char == 'p') { + seen_p = true; + } else if (::isxdigit(next_char)) { + int number = get_nibble_from_character(next_char); + for (int i = 0; i < 4; ++i, number <<= 1) { + uint_type write_bit = (number & 0x8) ? 0x01 : 0x00; + bits_written |= write_bit != 0; + if (is_denorm && !bits_written) { + // Handle modifying the exponent here this way we can handle + // an arbitrary number of hex values without overflowing our + // integer. + exponent = static_cast(exponent - 1); + } else { + fraction = static_cast( + fraction | + static_cast( + write_bit << (HF::top_bit_left_shift - fraction_index++))); + } + } + } else { + // We still have not found our 'p' exponent yet, so this is not a valid + // hex-float. + is.setstate(std::ios::failbit); + return is; + } + is.get(); + next_char = is.peek(); + } + + bool seen_sign = false; + int8_t exponent_sign = 1; + int_type written_exponent = 0; + while (true) { + if ((next_char == '-' || next_char == '+')) { + if (seen_sign) { + is.setstate(std::ios::failbit); + return is; + } + seen_sign = true; + exponent_sign = (next_char == '-') ? -1 : 1; + } else if (::isdigit(next_char)) { + // Hex-floats express their exponent as decimal. + written_exponent = static_cast(written_exponent * 10); + written_exponent = + static_cast(written_exponent + (next_char - '0')); + } else { + break; + } + is.get(); + next_char = is.peek(); + } + + written_exponent = static_cast(written_exponent * exponent_sign); + exponent = static_cast(exponent + written_exponent); + + bool is_zero = is_denorm && (fraction == 0); + if (is_denorm && !is_zero) { + fraction = static_cast(fraction << 1); + exponent = static_cast(exponent - 1); + } else if (is_zero) { + exponent = 0; + } + + if (exponent <= 0 && !is_zero) { + fraction = static_cast(fraction >> 1); + fraction |= static_cast(1) << HF::top_bit_left_shift; + } + + fraction = (fraction >> HF::fraction_right_shift) & HF::fraction_encode_mask; + + const int_type max_exponent = + SetBits::get; + + // Handle actual denorm numbers + while (exponent < 0 && !is_zero) { + fraction = static_cast(fraction >> 1); + exponent = static_cast(exponent + 1); + + fraction &= HF::fraction_encode_mask; + if (fraction == 0) { + // We have underflowed our fraction. We should clamp to zero. + is_zero = true; + exponent = 0; + } + } + + // We have overflowed so we should be inf/-inf. + if (exponent > max_exponent) { + exponent = max_exponent; + fraction = 0; + } + + uint_type output_bits = static_cast( + static_cast(negate_value ? 1 : 0) << HF::top_bit_left_shift); + output_bits |= fraction; + + uint_type shifted_exponent = static_cast( + static_cast(exponent << HF::exponent_left_shift) & + HF::exponent_mask); + output_bits |= shifted_exponent; + + T output_float = spvutils::BitwiseCast(output_bits); + value.set_value(output_float); + + return is; +} + +// Writes a FloatProxy value to a stream. +// Zero and normal numbers are printed in the usual notation, but with +// enough digits to fully reproduce the value. Other values (subnormal, +// NaN, and infinity) are printed as a hex float. +template +std::ostream& operator<<(std::ostream& os, const FloatProxy& value) { + auto float_val = value.getAsFloat(); + switch (std::fpclassify(float_val)) { + case FP_ZERO: + case FP_NORMAL: { + auto saved_precision = os.precision(); + os.precision(std::numeric_limits::digits10); + os << float_val; + os.precision(saved_precision); + } break; + default: + os << HexFloat>(value); + break; + } + return os; +} + +template <> +inline std::ostream& operator<<(std::ostream& os, + const FloatProxy& value) { + os << HexFloat>(value); + return os; +} +} + +#endif // LIBSPIRV_UTIL_HEX_FLOAT_H_ diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out new file mode 100644 index 00000000..3c5b7815 --- /dev/null +++ b/Test/baseResults/spv.float16.frag.out @@ -0,0 +1,837 @@ +spv.float16.frag +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 535 + + Capability Shader + Capability Float16 + Capability Float64 + Capability Int64 + Capability DerivativeControl + Capability InterpolationFunction + Extension "SPV_AMD_gpu_shader_half_float" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 465 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_AMD_gpu_shader_half_float" + SourceExtension "GL_ARB_gpu_shader_int64" + Name 4 "main" + Name 6 "literal(" + Name 8 "operators(" + Name 10 "typeCast(" + Name 12 "builtinAngleTrigFuncs(" + Name 14 "builtinExpFuncs(" + Name 16 "builtinCommonFuncs(" + Name 18 "builtinPackUnpackFuncs(" + Name 20 "builtinGeometryFuncs(" + Name 22 "builtinMatrixFuncs(" + Name 24 "builtinVecRelFuncs(" + Name 26 "builtinFragProcFuncs(" + Name 31 "f16v" + Name 42 "f16v" + Name 64 "f16m" + Name 87 "f16" + Name 111 "b" + Name 153 "f16v" + 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 515 "S" + MemberName 515(S) 0 "x" + MemberName 515(S) 1 "y" + MemberName 515(S) 2 "z" + Name 517 "B1" + MemberName 517(B1) 0 "a" + MemberName 517(B1) 1 "b" + MemberName 517(B1) 2 "c" + MemberName 517(B1) 3 "d" + MemberName 517(B1) 4 "e" + MemberName 517(B1) 5 "f" + MemberName 517(B1) 6 "g" + MemberName 517(B1) 7 "h" + Name 519 "" + Name 522 "S" + MemberName 522(S) 0 "x" + MemberName 522(S) 1 "y" + MemberName 522(S) 2 "z" + Name 524 "B2" + MemberName 524(B2) 0 "o" + MemberName 524(B2) 1 "p" + MemberName 524(B2) 2 "q" + MemberName 524(B2) 3 "r" + MemberName 524(B2) 4 "s" + MemberName 524(B2) 5 "t" + MemberName 524(B2) 6 "u" + MemberName 524(B2) 7 "v" + Name 526 "" + Decorate 513 ArrayStride 16 + Decorate 514 ArrayStride 32 + MemberDecorate 515(S) 0 Offset 0 + MemberDecorate 515(S) 1 Offset 4 + MemberDecorate 515(S) 2 Offset 8 + Decorate 516 ArrayStride 16 + MemberDecorate 517(B1) 0 Offset 0 + MemberDecorate 517(B1) 1 Offset 4 + MemberDecorate 517(B1) 2 Offset 8 + MemberDecorate 517(B1) 3 Offset 16 + MemberDecorate 517(B1) 4 ColMajor + MemberDecorate 517(B1) 4 Offset 48 + MemberDecorate 517(B1) 4 MatrixStride 16 + MemberDecorate 517(B1) 5 ColMajor + MemberDecorate 517(B1) 5 Offset 80 + MemberDecorate 517(B1) 5 MatrixStride 16 + MemberDecorate 517(B1) 6 Offset 144 + MemberDecorate 517(B1) 7 Offset 160 + Decorate 517(B1) Block + Decorate 519 DescriptorSet 0 + Decorate 520 ArrayStride 2 + Decorate 521 ArrayStride 12 + MemberDecorate 522(S) 0 Offset 0 + MemberDecorate 522(S) 1 Offset 4 + MemberDecorate 522(S) 2 Offset 8 + Decorate 523 ArrayStride 16 + MemberDecorate 524(B2) 0 Offset 0 + MemberDecorate 524(B2) 1 Offset 4 + MemberDecorate 524(B2) 2 Offset 8 + MemberDecorate 524(B2) 3 Offset 14 + MemberDecorate 524(B2) 4 RowMajor + MemberDecorate 524(B2) 4 Offset 20 + MemberDecorate 524(B2) 4 MatrixStride 4 + MemberDecorate 524(B2) 5 RowMajor + MemberDecorate 524(B2) 5 Offset 32 + MemberDecorate 524(B2) 5 MatrixStride 4 + MemberDecorate 524(B2) 6 Offset 56 + MemberDecorate 524(B2) 7 Offset 72 + Decorate 524(B2) BufferBlock + Decorate 526 DescriptorSet 0 + Decorate 527 SpecId 100 + Decorate 528 SpecId 101 + Decorate 529 SpecId 102 + 2: TypeVoid + 3: TypeFunction 2 + 28: TypeFloat 16 + 29: TypeVector 28(float) 2 + 30: TypePointer Function 29(fvec2) + 32: 28(float) Constant 16 + 33: TypeInt 32 0 + 34: 33(int) Constant 0 + 35: TypePointer Function 28(float) + 37: 28(float) Constant 46080 + 38: 28(float) Constant 10158 + 39: 29(fvec2) ConstantComposite 37 38 + 56: 28(float) Constant 15360 + 62: TypeMatrix 29(fvec2) 2 + 63: TypePointer Function 62 + 90: 33(int) Constant 1 + 109: TypeBool + 110: TypePointer Function 109(bool) + 151: TypeVector 28(float) 3 + 152: TypePointer Function 151(fvec3) + 154: TypeVector 109(bool) 3 + 155: TypePointer Function 154(bvec3) + 158: 28(float) Constant 0 + 159: 151(fvec3) ConstantComposite 158 158 158 + 160: 151(fvec3) ConstantComposite 56 56 56 + 164: TypeFloat 32 + 165: TypeVector 164(float) 3 + 166: TypePointer Function 165(fvec3) + 172: TypeFloat 64 + 173: TypeVector 172(float) 3 + 174: TypePointer Function 173(fvec3) + 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(int) 3 + 200: TypePointer Function 199(ivec3) + 206: TypeInt 64 0 + 207: TypeVector 206(int) 3 + 208: TypePointer Function 207(ivec3) + 214: TypeVector 28(float) 4 + 215: TypePointer Function 214(fvec4) + 364(ResType): TypeStruct 151(fvec3) 184(ivec3) + 371: TypePointer Function 33(int) + 406: TypeMatrix 151(fvec3) 2 + 407: TypePointer Function 406 + 425: TypeMatrix 29(fvec2) 3 + 426: TypePointer Function 425 + 431: TypeMatrix 151(fvec3) 3 + 432: TypePointer Function 431 + 436: TypeMatrix 214(fvec4) 4 + 437: TypePointer Function 436 + 464: TypePointer Input 151(fvec3) + 465(if16v): 464(ptr) Variable Input + 466: TypePointer Input 28(float) + 503: 183(int) Constant 1 + 508: TypeVector 164(float) 2 + 509: 164(float) Constant 1056964608 + 510: 508(fvec2) ConstantComposite 509 509 + 512: 33(int) Constant 2 + 513: TypeArray 28(float) 512 + 514: TypeArray 406 512 + 515(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) + 516: TypeArray 515(S) 512 + 517(B1): TypeStruct 28(float) 29(fvec2) 151(fvec3) 513 406 514 515(S) 516 + 518: TypePointer Uniform 517(B1) + 519: 518(ptr) Variable Uniform + 520: TypeArray 28(float) 512 + 521: TypeArray 406 512 + 522(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) + 523: TypeArray 522(S) 512 + 524(B2): TypeStruct 28(float) 29(fvec2) 151(fvec3) 520 406 521 522(S) 523 + 525: TypePointer Uniform 524(B2) + 526: 525(ptr) Variable Uniform + 527: 28(float) SpecConstant 12288 + 528: 164(float) SpecConstant 1048576000 + 529: 172(float) SpecConstant 0 1071644672 + 530: 164(float) SpecConstantOp 115 527 + 531: 164(float) SpecConstantOp 115 527 + 532: 172(float) SpecConstantOp 115 531 + 533: 28(float) SpecConstantOp 115 528 + 534: 28(float) SpecConstantOp 115 529 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd + 6(literal(): 2 Function None 3 + 7: Label + 31(f16v): 30(ptr) Variable Function + 36: 35(ptr) AccessChain 31(f16v) 34 + Store 36 32 + 40: 29(fvec2) Load 31(f16v) + 41: 29(fvec2) FAdd 40 39 + Store 31(f16v) 41 + Return + FunctionEnd + 8(operators(): 2 Function None 3 + 9: Label + 42(f16v): 30(ptr) Variable Function + 64(f16m): 63(ptr) Variable Function + 87(f16): 35(ptr) Variable Function + 111(b): 110(ptr) Variable Function + 43: 29(fvec2) Load 42(f16v) + 44: 29(fvec2) Load 42(f16v) + 45: 29(fvec2) FAdd 44 43 + Store 42(f16v) 45 + 46: 29(fvec2) Load 42(f16v) + 47: 29(fvec2) Load 42(f16v) + 48: 29(fvec2) FSub 47 46 + Store 42(f16v) 48 + 49: 29(fvec2) Load 42(f16v) + 50: 29(fvec2) Load 42(f16v) + 51: 29(fvec2) FMul 50 49 + Store 42(f16v) 51 + 52: 29(fvec2) Load 42(f16v) + 53: 29(fvec2) Load 42(f16v) + 54: 29(fvec2) FDiv 53 52 + Store 42(f16v) 54 + 55: 29(fvec2) Load 42(f16v) + 57: 29(fvec2) CompositeConstruct 56 56 + 58: 29(fvec2) FAdd 55 57 + Store 42(f16v) 58 + 59: 29(fvec2) Load 42(f16v) + 60: 29(fvec2) CompositeConstruct 56 56 + 61: 29(fvec2) FSub 59 60 + Store 42(f16v) 61 + 65: 62 Load 64(f16m) + 66: 29(fvec2) CompositeConstruct 56 56 + 67: 29(fvec2) CompositeExtract 65 0 + 68: 29(fvec2) FAdd 67 66 + 69: 29(fvec2) CompositeExtract 65 1 + 70: 29(fvec2) FAdd 69 66 + 71: 62 CompositeConstruct 68 70 + Store 64(f16m) 71 + 72: 62 Load 64(f16m) + 73: 29(fvec2) CompositeConstruct 56 56 + 74: 29(fvec2) CompositeExtract 72 0 + 75: 29(fvec2) FSub 74 73 + 76: 29(fvec2) CompositeExtract 72 1 + 77: 29(fvec2) FSub 76 73 + 78: 62 CompositeConstruct 75 77 + Store 64(f16m) 78 + 79: 29(fvec2) Load 42(f16v) + 80: 29(fvec2) FNegate 79 + Store 42(f16v) 80 + 81: 62 Load 64(f16m) + 82: 29(fvec2) CompositeExtract 81 0 + 83: 29(fvec2) FNegate 82 + 84: 29(fvec2) CompositeExtract 81 1 + 85: 29(fvec2) FNegate 84 + 86: 62 CompositeConstruct 83 85 + Store 64(f16m) 86 + 88: 35(ptr) AccessChain 42(f16v) 34 + 89: 28(float) Load 88 + 91: 35(ptr) AccessChain 42(f16v) 90 + 92: 28(float) Load 91 + 93: 28(float) FAdd 89 92 + Store 87(f16) 93 + 94: 35(ptr) AccessChain 42(f16v) 34 + 95: 28(float) Load 94 + 96: 35(ptr) AccessChain 42(f16v) 90 + 97: 28(float) Load 96 + 98: 28(float) FSub 95 97 + Store 87(f16) 98 + 99: 35(ptr) AccessChain 42(f16v) 34 + 100: 28(float) Load 99 + 101: 35(ptr) AccessChain 42(f16v) 90 + 102: 28(float) Load 101 + 103: 28(float) FMul 100 102 + Store 87(f16) 103 + 104: 35(ptr) AccessChain 42(f16v) 34 + 105: 28(float) Load 104 + 106: 35(ptr) AccessChain 42(f16v) 90 + 107: 28(float) Load 106 + 108: 28(float) FDiv 105 107 + Store 87(f16) 108 + 112: 35(ptr) AccessChain 42(f16v) 34 + 113: 28(float) Load 112 + 114: 28(float) Load 87(f16) + 115: 109(bool) FOrdNotEqual 113 114 + Store 111(b) 115 + 116: 35(ptr) AccessChain 42(f16v) 90 + 117: 28(float) Load 116 + 118: 28(float) Load 87(f16) + 119: 109(bool) FOrdEqual 117 118 + Store 111(b) 119 + 120: 35(ptr) AccessChain 42(f16v) 34 + 121: 28(float) Load 120 + 122: 28(float) Load 87(f16) + 123: 109(bool) FOrdGreaterThan 121 122 + Store 111(b) 123 + 124: 35(ptr) AccessChain 42(f16v) 90 + 125: 28(float) Load 124 + 126: 28(float) Load 87(f16) + 127: 109(bool) FOrdLessThan 125 126 + Store 111(b) 127 + 128: 35(ptr) AccessChain 42(f16v) 34 + 129: 28(float) Load 128 + 130: 28(float) Load 87(f16) + 131: 109(bool) FOrdGreaterThanEqual 129 130 + Store 111(b) 131 + 132: 35(ptr) AccessChain 42(f16v) 90 + 133: 28(float) Load 132 + 134: 28(float) Load 87(f16) + 135: 109(bool) FOrdLessThanEqual 133 134 + Store 111(b) 135 + 136: 29(fvec2) Load 42(f16v) + 137: 28(float) Load 87(f16) + 138: 29(fvec2) VectorTimesScalar 136 137 + Store 42(f16v) 138 + 139: 62 Load 64(f16m) + 140: 28(float) Load 87(f16) + 141: 62 MatrixTimesScalar 139 140 + Store 64(f16m) 141 + 142: 62 Load 64(f16m) + 143: 29(fvec2) Load 42(f16v) + 144: 29(fvec2) MatrixTimesVector 142 143 + Store 42(f16v) 144 + 145: 29(fvec2) Load 42(f16v) + 146: 62 Load 64(f16m) + 147: 29(fvec2) VectorTimesMatrix 145 146 + Store 42(f16v) 147 + 148: 62 Load 64(f16m) + 149: 62 Load 64(f16m) + 150: 62 MatrixTimesMatrix 148 149 + Store 64(f16m) 150 + Return + FunctionEnd + 10(typeCast(): 2 Function None 3 + 11: Label + 153(f16v): 152(ptr) Variable Function + 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 + 157: 154(bvec3) Load 156(bv) + 161: 151(fvec3) Select 157 160 159 + Store 153(f16v) 161 + 162: 151(fvec3) Load 153(f16v) + 163: 154(bvec3) FOrdNotEqual 162 159 + Store 156(bv) 163 + 168: 165(fvec3) Load 167(fv) + 169: 151(fvec3) FConvert 168 + Store 153(f16v) 169 + 170: 151(fvec3) Load 153(f16v) + 171: 165(fvec3) FConvert 170 + Store 167(fv) 171 + 176: 173(fvec3) Load 175(dv) + 177: 151(fvec3) FConvert 176 + Store 153(f16v) 177 + 178: 173(fvec3) Load 175(dv) + 179: 172(float) CompositeExtract 178 0 + 180: 172(float) CompositeExtract 178 1 + 181: 172(float) CompositeExtract 178 2 + 182: 173(fvec3) CompositeConstruct 179 180 181 + Store 175(dv) 182 + 187: 184(ivec3) Load 186(iv) + 188: 151(fvec3) ConvertSToF 187 + Store 153(f16v) 188 + 189: 151(fvec3) Load 153(f16v) + 190: 184(ivec3) ConvertFToS 189 + Store 186(iv) 190 + 194: 191(ivec3) Load 193(uv) + 195: 151(fvec3) ConvertUToF 194 + Store 153(f16v) 195 + 196: 151(fvec3) Load 153(f16v) + 197: 191(ivec3) ConvertFToU 196 + Store 193(uv) 197 + 202: 199(ivec3) Load 201(i64v) + 203: 151(fvec3) ConvertSToF 202 + Store 153(f16v) 203 + 204: 151(fvec3) Load 153(f16v) + 205: 199(ivec3) ConvertFToS 204 + Store 201(i64v) 205 + 210: 207(ivec3) Load 209(u64v) + 211: 151(fvec3) ConvertUToF 210 + Store 153(f16v) 211 + 212: 151(fvec3) Load 153(f16v) + 213: 207(ivec3) ConvertFToU 212 + Store 209(u64v) 213 + Return + FunctionEnd +12(builtinAngleTrigFuncs(): 2 Function None 3 + 13: Label + 216(f16v2): 215(ptr) Variable Function + 217(f16v1): 215(ptr) Variable Function + 218: 214(fvec4) Load 217(f16v1) + 219: 214(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 218 + Store 216(f16v2) 219 + 220: 214(fvec4) Load 217(f16v1) + 221: 214(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 220 + Store 216(f16v2) 221 + 222: 214(fvec4) Load 217(f16v1) + 223: 214(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 222 + Store 216(f16v2) 223 + 224: 214(fvec4) Load 217(f16v1) + 225: 214(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 224 + Store 216(f16v2) 225 + 226: 214(fvec4) Load 217(f16v1) + 227: 214(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 226 + Store 216(f16v2) 227 + 228: 214(fvec4) Load 217(f16v1) + 229: 214(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 228 + Store 216(f16v2) 229 + 230: 214(fvec4) Load 217(f16v1) + 231: 214(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 230 + Store 216(f16v2) 231 + 232: 214(fvec4) Load 217(f16v1) + 233: 214(fvec4) Load 216(f16v2) + 234: 214(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 232 233 + Store 216(f16v2) 234 + 235: 214(fvec4) Load 217(f16v1) + 236: 214(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 235 + Store 216(f16v2) 236 + 237: 214(fvec4) Load 217(f16v1) + 238: 214(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 237 + Store 216(f16v2) 238 + 239: 214(fvec4) Load 217(f16v1) + 240: 214(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 239 + Store 216(f16v2) 240 + 241: 214(fvec4) Load 217(f16v1) + 242: 214(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 241 + Store 216(f16v2) 242 + 243: 214(fvec4) Load 217(f16v1) + 244: 214(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 243 + Store 216(f16v2) 244 + 245: 214(fvec4) Load 217(f16v1) + 246: 214(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 245 + Store 216(f16v2) 246 + 247: 214(fvec4) Load 217(f16v1) + 248: 214(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 247 + Store 216(f16v2) 248 + Return + FunctionEnd +14(builtinExpFuncs(): 2 Function None 3 + 15: Label + 249(f16v2): 30(ptr) Variable Function + 250(f16v1): 30(ptr) Variable Function + 251: 29(fvec2) Load 250(f16v1) + 252: 29(fvec2) Load 249(f16v2) + 253: 29(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 251 252 + Store 249(f16v2) 253 + 254: 29(fvec2) Load 250(f16v1) + 255: 29(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 254 + Store 249(f16v2) 255 + 256: 29(fvec2) Load 250(f16v1) + 257: 29(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 256 + Store 249(f16v2) 257 + 258: 29(fvec2) Load 250(f16v1) + 259: 29(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 258 + Store 249(f16v2) 259 + 260: 29(fvec2) Load 250(f16v1) + 261: 29(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 260 + Store 249(f16v2) 261 + 262: 29(fvec2) Load 250(f16v1) + 263: 29(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 262 + Store 249(f16v2) 263 + 264: 29(fvec2) Load 250(f16v1) + 265: 29(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 264 + Store 249(f16v2) 265 + 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(fvec3) Load 267(f16v1) + 269: 151(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 268 + Store 266(f16v2) 269 + 270: 151(fvec3) Load 267(f16v1) + 271: 151(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 270 + Store 266(f16v2) 271 + 272: 151(fvec3) Load 267(f16v1) + 273: 151(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 272 + Store 266(f16v2) 273 + 274: 151(fvec3) Load 267(f16v1) + 275: 151(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 274 + Store 266(f16v2) 275 + 276: 151(fvec3) Load 267(f16v1) + 277: 151(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 276 + Store 266(f16v2) 277 + 278: 151(fvec3) Load 267(f16v1) + 279: 151(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 278 + Store 266(f16v2) 279 + 280: 151(fvec3) Load 267(f16v1) + 281: 151(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 280 + Store 266(f16v2) 281 + 282: 151(fvec3) Load 267(f16v1) + 283: 151(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 282 + Store 266(f16v2) 283 + 284: 151(fvec3) Load 267(f16v1) + 285: 151(fvec3) Load 266(f16v2) + 286: 151(fvec3) FMod 284 285 + Store 266(f16v2) 286 + 287: 151(fvec3) Load 267(f16v1) + 289: 28(float) Load 288(f16) + 290: 151(fvec3) CompositeConstruct 289 289 289 + 291: 151(fvec3) FMod 287 290 + Store 266(f16v2) 291 + 293: 151(fvec3) Load 267(f16v1) + 294: 151(fvec3) ExtInst 1(GLSL.std.450) 35(Modf) 293 266(f16v2) + Store 292(f16v3) 294 + 295: 151(fvec3) Load 267(f16v1) + 296: 151(fvec3) Load 266(f16v2) + 297: 151(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 295 296 + Store 292(f16v3) 297 + 298: 151(fvec3) Load 267(f16v1) + 299: 28(float) Load 288(f16) + 300: 151(fvec3) CompositeConstruct 299 299 299 + 301: 151(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 300 + Store 292(f16v3) 301 + 302: 151(fvec3) Load 267(f16v1) + 303: 151(fvec3) Load 266(f16v2) + 304: 151(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 302 303 + Store 292(f16v3) 304 + 305: 151(fvec3) Load 267(f16v1) + 306: 28(float) Load 288(f16) + 307: 151(fvec3) CompositeConstruct 306 306 306 + 308: 151(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 307 + Store 292(f16v3) 308 + 309: 151(fvec3) Load 267(f16v1) + 310: 28(float) Load 288(f16) + 311: 35(ptr) AccessChain 266(f16v2) 34 + 312: 28(float) Load 311 + 313: 151(fvec3) CompositeConstruct 310 310 310 + 314: 151(fvec3) CompositeConstruct 312 312 312 + 315: 151(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 309 313 314 + Store 292(f16v3) 315 + 316: 151(fvec3) Load 267(f16v1) + 317: 151(fvec3) Load 266(f16v2) + 318: 28(float) Load 288(f16) + 319: 151(fvec3) CompositeConstruct 318 318 318 + 320: 151(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 316 317 319 + Store 292(f16v3) 320 + 321: 151(fvec3) Load 267(f16v1) + 322: 151(fvec3) Load 266(f16v2) + 323: 28(float) Load 288(f16) + 324: 151(fvec3) CompositeConstruct 323 323 323 + 325: 151(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 321 322 324 + Store 292(f16v3) 325 + 326: 151(fvec3) Load 267(f16v1) + 327: 151(fvec3) Load 266(f16v2) + 328: 151(fvec3) Load 292(f16v3) + 329: 151(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 326 327 328 + Store 292(f16v3) 329 + 330: 151(fvec3) Load 267(f16v1) + 331: 151(fvec3) Load 266(f16v2) + 333: 154(bvec3) Load 332(bv) + 334: 151(fvec3) Select 333 331 330 + Store 292(f16v3) 334 + 335: 151(fvec3) Load 267(f16v1) + 336: 151(fvec3) Load 266(f16v2) + 337: 151(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 335 336 + Store 292(f16v3) 337 + 338: 28(float) Load 288(f16) + 339: 151(fvec3) Load 292(f16v3) + 340: 151(fvec3) CompositeConstruct 338 338 338 + 341: 151(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 340 339 + Store 292(f16v3) 341 + 342: 151(fvec3) Load 267(f16v1) + 343: 151(fvec3) Load 266(f16v2) + 344: 151(fvec3) Load 292(f16v3) + 345: 151(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 342 343 344 + Store 292(f16v3) 345 + 346: 28(float) Load 288(f16) + 347: 35(ptr) AccessChain 267(f16v1) 34 + 348: 28(float) Load 347 + 349: 151(fvec3) Load 266(f16v2) + 350: 151(fvec3) CompositeConstruct 346 346 346 + 351: 151(fvec3) CompositeConstruct 348 348 348 + 352: 151(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 350 351 349 + Store 292(f16v3) 352 + 354: 28(float) Load 288(f16) + 355: 109(bool) IsNan 354 + Store 353(b) 355 + 356: 151(fvec3) Load 267(f16v1) + 357: 154(bvec3) IsInf 356 + Store 332(bv) 357 + 358: 151(fvec3) Load 267(f16v1) + 359: 151(fvec3) Load 266(f16v2) + 360: 151(fvec3) Load 292(f16v3) + 361: 151(fvec3) ExtInst 1(GLSL.std.450) 50(Fma) 358 359 360 + Store 292(f16v3) 361 + 362: 151(fvec3) 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(fvec3) CompositeExtract 365 0 + Store 266(f16v2) 367 + 368: 151(fvec3) Load 267(f16v1) + 369: 184(ivec3) Load 363(iv) + 370: 151(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 368 369 + Store 266(f16v2) 370 + Return + FunctionEnd +18(builtinPackUnpackFuncs(): 2 Function None 3 + 19: Label + 372(u): 371(ptr) Variable Function + 373(f16v): 30(ptr) Variable Function + 374: 29(fvec2) Load 373(f16v) + 375: 33(int) Bitcast 374 + Store 372(u) 375 + 376: 33(int) Load 372(u) + 377: 29(fvec2) Bitcast 376 + Store 373(f16v) 377 + 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(fvec3) Load 379(f16v1) + 381: 28(float) ExtInst 1(GLSL.std.450) 66(Length) 380 + Store 378(f16) 381 + 382: 151(fvec3) Load 379(f16v1) + 384: 151(fvec3) Load 383(f16v2) + 385: 28(float) ExtInst 1(GLSL.std.450) 67(Distance) 382 384 + Store 378(f16) 385 + 386: 151(fvec3) Load 379(f16v1) + 387: 151(fvec3) Load 383(f16v2) + 388: 28(float) Dot 386 387 + Store 378(f16) 388 + 390: 151(fvec3) Load 379(f16v1) + 391: 151(fvec3) Load 383(f16v2) + 392: 151(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 390 391 + Store 389(f16v3) 392 + 393: 151(fvec3) Load 379(f16v1) + 394: 151(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 393 + Store 383(f16v2) 394 + 395: 151(fvec3) Load 379(f16v1) + 396: 151(fvec3) Load 383(f16v2) + 397: 151(fvec3) Load 389(f16v3) + 398: 151(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 395 396 397 + Store 389(f16v3) 398 + 399: 151(fvec3) Load 379(f16v1) + 400: 151(fvec3) Load 383(f16v2) + 401: 151(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 399 400 + Store 389(f16v3) 401 + 402: 151(fvec3) Load 379(f16v1) + 403: 151(fvec3) Load 383(f16v2) + 404: 28(float) Load 378(f16) + 405: 151(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 402 403 404 + Store 389(f16v3) 405 + 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(fvec3) CompositeExtract 410 0 + 414: 151(fvec3) CompositeExtract 412 0 + 415: 151(fvec3) FMul 413 414 + 416: 151(fvec3) CompositeExtract 410 1 + 417: 151(fvec3) CompositeExtract 412 1 + 418: 151(fvec3) FMul 416 417 + 419: 406 CompositeConstruct 415 418 + Store 408(f16m3) 419 + 421: 151(fvec3) Load 420(f16v1) + 423: 29(fvec2) 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(float) 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 + 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(fvec3) Load 443(f16v1) + 446: 151(fvec3) Load 445(f16v2) + 447: 154(bvec3) FOrdLessThan 444 446 + Store 442(bv) 447 + 448: 151(fvec3) Load 443(f16v1) + 449: 151(fvec3) Load 445(f16v2) + 450: 154(bvec3) FOrdLessThanEqual 448 449 + Store 442(bv) 450 + 451: 151(fvec3) Load 443(f16v1) + 452: 151(fvec3) Load 445(f16v2) + 453: 154(bvec3) FOrdGreaterThan 451 452 + Store 442(bv) 453 + 454: 151(fvec3) Load 443(f16v1) + 455: 151(fvec3) Load 445(f16v2) + 456: 154(bvec3) FOrdGreaterThanEqual 454 455 + Store 442(bv) 456 + 457: 151(fvec3) Load 443(f16v1) + 458: 151(fvec3) Load 445(f16v2) + 459: 154(bvec3) FOrdEqual 457 458 + Store 442(bv) 459 + 460: 151(fvec3) Load 443(f16v1) + 461: 151(fvec3) Load 445(f16v2) + 462: 154(bvec3) FOrdNotEqual 460 461 + Store 442(bv) 462 + Return + FunctionEnd +26(builtinFragProcFuncs(): 2 Function None 3 + 27: Label + 463(f16v): 152(ptr) Variable Function + 467: 466(ptr) AccessChain 465(if16v) 34 + 468: 28(float) Load 467 + 469: 28(float) DPdx 468 + 470: 35(ptr) AccessChain 463(f16v) 34 + Store 470 469 + 471: 466(ptr) AccessChain 465(if16v) 90 + 472: 28(float) Load 471 + 473: 28(float) DPdy 472 + 474: 35(ptr) AccessChain 463(f16v) 90 + Store 474 473 + 475: 151(fvec3) Load 465(if16v) + 476: 29(fvec2) VectorShuffle 475 475 0 1 + 477: 29(fvec2) DPdxFine 476 + 478: 151(fvec3) Load 463(f16v) + 479: 151(fvec3) VectorShuffle 478 477 3 4 2 + Store 463(f16v) 479 + 480: 151(fvec3) Load 465(if16v) + 481: 29(fvec2) VectorShuffle 480 480 0 1 + 482: 29(fvec2) DPdyFine 481 + 483: 151(fvec3) Load 463(f16v) + 484: 151(fvec3) VectorShuffle 483 482 3 4 2 + Store 463(f16v) 484 + 485: 151(fvec3) Load 465(if16v) + 486: 151(fvec3) DPdxCoarse 485 + Store 463(f16v) 486 + 487: 151(fvec3) Load 465(if16v) + 488: 151(fvec3) DPdxCoarse 487 + Store 463(f16v) 488 + 489: 466(ptr) AccessChain 465(if16v) 34 + 490: 28(float) Load 489 + 491: 28(float) Fwidth 490 + 492: 35(ptr) AccessChain 463(f16v) 34 + Store 492 491 + 493: 151(fvec3) Load 465(if16v) + 494: 29(fvec2) VectorShuffle 493 493 0 1 + 495: 29(fvec2) FwidthFine 494 + 496: 151(fvec3) Load 463(f16v) + 497: 151(fvec3) VectorShuffle 496 495 3 4 2 + Store 463(f16v) 497 + 498: 151(fvec3) Load 465(if16v) + 499: 151(fvec3) FwidthCoarse 498 + Store 463(f16v) 499 + 500: 466(ptr) AccessChain 465(if16v) 34 + 501: 28(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 500 + 502: 35(ptr) AccessChain 463(f16v) 34 + Store 502 501 + 504: 151(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 503 + 505: 29(fvec2) VectorShuffle 504 504 0 1 + 506: 151(fvec3) Load 463(f16v) + 507: 151(fvec3) VectorShuffle 506 505 3 4 2 + Store 463(f16v) 507 + 511: 151(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 510 + Store 463(f16v) 511 + Return + FunctionEnd diff --git a/Test/spv.float16.frag b/Test/spv.float16.frag new file mode 100644 index 00000000..a88e2f1c --- /dev/null +++ b/Test/spv.float16.frag @@ -0,0 +1,306 @@ +#version 450 core + +#extension GL_AMD_gpu_shader_half_float: enable +#extension GL_ARB_gpu_shader_int64: enable + +void main() +{ +} + +// Half float literals +void literal() +{ + const float16_t f16c = 0.000001hf; + const f16vec2 f16cv = f16vec2(-0.25HF, 0.03HF); + + f16vec2 f16v; + f16v.x = f16c; + f16v += f16cv; +} + +// Block memory layout +struct S +{ + float16_t x; // rule 1: align = 2, takes offsets 0-1 + f16vec2 y; // rule 2: align = 4, takes offsets 4-7 + f16vec3 z; // rule 3: align = 8, takes offsets 8-13 +}; + +layout(column_major, std140) uniform B1 +{ + float16_t a; // rule 1: align = 2, takes offsets 0-1 + f16vec2 b; // rule 2: align = 4, takes offsets 4-7 + f16vec3 c; // rule 3: align = 8, takes offsets 8-15 + float16_t d[2]; // rule 4: align = 16, array stride = 16, + // takes offsets 16-47 + f16mat2x3 e; // rule 5: align = 16, matrix stride = 16, + // takes offsets 48-79 + f16mat2x3 f[2]; // rule 6: align = 16, matrix stride = 16, + // array stride = 32, f[0] takes + // offsets 80-111, f[1] takes offsets + // 112-143 + S g; // rule 9: align = 16, g.x takes offsets + // 144-145, g.y takes offsets 148-151, + // g.z takes offsets 152-159 + S h[2]; // rule 10: align = 16, array stride = 16, h[0] + // takes offsets 160-175, h[1] takes + // offsets 176-191 +}; + +layout(row_major, std430) buffer B2 +{ + float16_t o; // rule 1: align = 2, takes offsets 0-1 + f16vec2 p; // rule 2: align = 4, takes offsets 4-7 + f16vec3 q; // rule 3: align = 8, takes offsets 8-13 + float16_t r[2]; // rule 4: align = 2, array stride = 2, takes + // offsets 14-17 + f16mat2x3 s; // rule 7: align = 4, matrix stride = 4, takes + // offsets 20-31 + f16mat2x3 t[2]; // rule 8: align = 4, matrix stride = 4, array + // stride = 12, t[0] takes offsets + // 32-43, t[1] takes offsets 44-55 + S u; // rule 9: align = 8, u.x takes offsets + // 56-57, u.y takes offsets 60-63, u.z + // takes offsets 64-69 + S v[2]; // rule 10: align = 8, array stride = 16, v[0] + // takes offsets 72-87, v[1] takes + // offsets 88-103 +}; + +// Specialization constant +layout(constant_id = 100) const float16_t sf16 = 0.125hf; +layout(constant_id = 101) const float sf = 0.25; +layout(constant_id = 102) const double sd = 0.5lf; + +const float f16_to_f = float(sf16); +const double f16_to_d = float(sf16); + +const float16_t f_to_f16 = float16_t(sf); +const float16_t d_to_f16 = float16_t(sd); + +void operators() +{ + float16_t f16; + f16vec2 f16v; + f16mat2x2 f16m; + bool b; + + // Arithmetic + f16v += f16v; + f16v -= f16v; + f16v *= f16v; + f16v /= f16v; + f16v++; + f16v--; + ++f16m; + --f16m; + f16v = -f16v; + f16m = -f16m; + + f16 = f16v.x + f16v.y; + f16 = f16v.x - f16v.y; + f16 = f16v.x * f16v.y; + f16 = f16v.x / f16v.y; + + // Relational + b = (f16v.x != f16); + b = (f16v.y == f16); + b = (f16v.x > f16); + b = (f16v.y < f16); + b = (f16v.x >= f16); + b = (f16v.y <= f16); + + // Vector/matrix operations + f16v = f16v * f16; + f16m = f16m * f16; + f16v = f16m * f16v; + f16v = f16v * f16m; + f16m = f16m * f16m; +} + +void typeCast() +{ + bvec3 bv; + vec3 fv; + dvec3 dv; + ivec3 iv; + uvec3 uv; + i64vec3 i64v; + u64vec3 u64v; + + f16vec3 f16v; + + f16v = f16vec3(bv); // bool -> float16 + bv = bvec3(f16v); // float16 -> bool + + f16v = f16vec3(fv); // float -> float16 + fv = vec3(f16v); // float16 -> float + + f16v = f16vec3(dv); // double -> float16 + dv = dvec3(dv); // float16 -> double + + f16v = f16vec3(iv); // int -> float16 + iv = ivec3(f16v); // float16 -> int + + f16v = f16vec3(uv); // uint -> float16 + uv = uvec3(f16v); // float16 -> uint + + f16v = f16vec3(i64v); // int64 -> float16 + i64v = i64vec3(f16v); // float16 -> int64 + + f16v = f16vec3(u64v); // uint64 -> float16 + u64v = u64vec3(f16v); // float16 -> uint64 +} + +void builtinAngleTrigFuncs() +{ + f16vec4 f16v1, f16v2; + + f16v2 = radians(f16v1); + f16v2 = degrees(f16v1); + f16v2 = sin(f16v1); + f16v2 = cos(f16v1); + f16v2 = tan(f16v1); + f16v2 = asin(f16v1); + f16v2 = acos(f16v1); + f16v2 = atan(f16v1, f16v2); + f16v2 = atan(f16v1); + f16v2 = sinh(f16v1); + f16v2 = cosh(f16v1); + f16v2 = tanh(f16v1); + f16v2 = asinh(f16v1); + f16v2 = acosh(f16v1); + f16v2 = atanh(f16v1); +} + +void builtinExpFuncs() +{ + f16vec2 f16v1, f16v2; + + f16v2 = pow(f16v1, f16v2); + f16v2 = exp(f16v1); + f16v2 = log(f16v1); + f16v2 = exp2(f16v1); + f16v2 = log2(f16v1); + f16v2 = sqrt(f16v1); + f16v2 = inversesqrt(f16v1); +} + +void builtinCommonFuncs() +{ + f16vec3 f16v1, f16v2, f16v3; + float16_t f16; + bool b; + bvec3 bv; + ivec3 iv; + + f16v2 = abs(f16v1); + f16v2 = sign(f16v1); + f16v2 = floor(f16v1); + f16v2 = trunc(f16v1); + f16v2 = round(f16v1); + f16v2 = roundEven(f16v1); + f16v2 = ceil(f16v1); + f16v2 = fract(f16v1); + f16v2 = mod(f16v1, f16v2); + f16v2 = mod(f16v1, f16); + f16v3 = modf(f16v1, f16v2); + f16v3 = min(f16v1, f16v2); + f16v3 = min(f16v1, f16); + f16v3 = max(f16v1, f16v2); + f16v3 = max(f16v1, f16); + f16v3 = clamp(f16v1, f16, f16v2.x); + f16v3 = clamp(f16v1, f16v2, f16vec3(f16)); + f16v3 = mix(f16v1, f16v2, f16); + f16v3 = mix(f16v1, f16v2, f16v3); + f16v3 = mix(f16v1, f16v2, bv); + f16v3 = step(f16v1, f16v2); + f16v3 = step(f16, f16v3); + f16v3 = smoothstep(f16v1, f16v2, f16v3); + f16v3 = smoothstep(f16, f16v1.x, f16v2); + b = isnan(f16); + bv = isinf(f16v1); + f16v3 = fma(f16v1, f16v2, f16v3); + f16v2 = frexp(f16v1, iv); + f16v2 = ldexp(f16v1, iv); +} + +void builtinPackUnpackFuncs() +{ + uint u; + f16vec2 f16v; + + u = packFloat2x16(f16v); + f16v = unpackFloat2x16(u); +} + +void builtinGeometryFuncs() +{ + float16_t f16; + f16vec3 f16v1, f16v2, f16v3; + + f16 = length(f16v1); + f16 = distance(f16v1, f16v2); + f16 = dot(f16v1, f16v2); + f16v3 = cross(f16v1, f16v2); + f16v2 = normalize(f16v1); + f16v3 = faceforward(f16v1, f16v2, f16v3); + f16v3 = reflect(f16v1, f16v2); + f16v3 = refract(f16v1, f16v2, f16); +} + +void builtinMatrixFuncs() +{ + f16mat2x3 f16m1, f16m2, f16m3; + f16mat3x2 f16m4; + f16mat3 f16m5; + f16mat4 f16m6, f16m7; + + f16vec3 f16v1; + f16vec2 f16v2; + + float16_t f16; + + f16m3 = matrixCompMult(f16m1, f16m2); + f16m1 = outerProduct(f16v1, f16v2); + f16m4 = transpose(f16m1); + f16 = determinant(f16m5); + f16m6 = inverse(f16m7); +} + +void builtinVecRelFuncs() +{ + f16vec3 f16v1, f16v2; + bvec3 bv; + + bv = lessThan(f16v1, f16v2); + bv = lessThanEqual(f16v1, f16v2); + bv = greaterThan(f16v1, f16v2); + bv = greaterThanEqual(f16v1, f16v2); + bv = equal(f16v1, f16v2); + bv = notEqual(f16v1, f16v2); +} + +in f16vec3 if16v; + +void builtinFragProcFuncs() +{ + f16vec3 f16v; + + // Derivative + f16v.x = dFdx(if16v.x); + f16v.y = dFdy(if16v.y); + f16v.xy = dFdxFine(if16v.xy); + f16v.xy = dFdyFine(if16v.xy); + f16v = dFdxCoarse(if16v); + f16v = dFdxCoarse(if16v); + + f16v.x = fwidth(if16v.x); + f16v.xy = fwidthFine(if16v.xy); + f16v = fwidthCoarse(if16v); + + // Interpolation + f16v.x = interpolateAtCentroid(if16v.x); + f16v.xy = interpolateAtSample(if16v.xy, 1); + f16v = interpolateAtOffset(if16v, vec2(0.5)); +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 64ef80c9..f7074406 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -46,6 +46,9 @@ enum TBasicType { EbtVoid, EbtFloat, EbtDouble, +#ifdef AMD_EXTENSIONS + EbtFloat16, +#endif EbtInt, EbtUint, EbtInt64, diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 6c2ded8e..5aa59c67 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -185,8 +185,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case EbtFloat: break; case EbtInt: s.append("i"); break; case EbtUint: s.append("u"); break; - case EbtInt64: s.append("i64"); break; - case EbtUint64: s.append("u64"); break; default: break; // some compilers want this } if (image) { @@ -1277,7 +1275,11 @@ public: virtual bool isImplicitlySizedArray() const { return isArray() && getOuterArraySize() == UnsizedArraySize && qualifier.storage != EvqBuffer; } virtual bool isRuntimeSizedArray() const { return isArray() && getOuterArraySize() == UnsizedArraySize && qualifier.storage == EvqBuffer; } virtual bool isStruct() const { return structure != nullptr; } +#ifdef AMD_EXTENSIONS + virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16; } +#else virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; } +#endif virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; } @@ -1359,6 +1361,9 @@ public: case EbtVoid: case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif case EbtInt: case EbtUint: case EbtInt64: @@ -1451,6 +1456,9 @@ public: case EbtVoid: return "void"; case EbtFloat: return "float"; case EbtDouble: return "double"; +#ifdef AMD_EXTENSIONS + case EbtFloat16: return "float16_t"; +#endif case EbtInt: return "int"; case EbtUint: return "uint"; case EbtInt64: return "int64_t"; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 5166e3d5..27c798d1 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -119,6 +119,22 @@ enum TOperator { EOpConvFloatToUint64, EOpConvDoubleToUint64, EOpConvInt64ToUint64, +#ifdef AMD_EXTENSIONS + EOpConvBoolToFloat16, + EOpConvIntToFloat16, + EOpConvUintToFloat16, + EOpConvFloatToFloat16, + EOpConvDoubleToFloat16, + EOpConvInt64ToFloat16, + EOpConvUint64ToFloat16, + EOpConvFloat16ToBool, + EOpConvFloat16ToInt, + EOpConvFloat16ToUint, + EOpConvFloat16ToFloat, + EOpConvFloat16ToDouble, + EOpConvFloat16ToInt64, + EOpConvFloat16ToUint64, +#endif // // binary operations @@ -236,6 +252,10 @@ enum TOperator { EOpUnpackInt2x32, EOpPackUint2x32, EOpUnpackUint2x32, +#ifdef AMD_EXTENSIONS + EOpPackFloat2x16, + EOpUnpackFloat2x16, +#endif EOpLength, EOpDistance, @@ -396,6 +416,21 @@ enum TOperator { EOpConstructDMat4x2, EOpConstructDMat4x3, EOpConstructDMat4x4, +#ifdef AMD_EXTENSIONS + EOpConstructFloat16, + EOpConstructF16Vec2, + EOpConstructF16Vec3, + EOpConstructF16Vec4, + EOpConstructF16Mat2x2, + EOpConstructF16Mat2x3, + EOpConstructF16Mat2x4, + EOpConstructF16Mat3x2, + EOpConstructF16Mat3x3, + EOpConstructF16Mat3x4, + EOpConstructF16Mat4x2, + EOpConstructF16Mat4x3, + EOpConstructF16Mat4x4, +#endif EOpConstructStruct, EOpConstructTextureSampler, EOpConstructGuardEnd, diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 4adfd470..804626fa 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -176,6 +176,9 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right switch (getType().getBasicType()) { case EbtDouble: case EbtFloat: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst()); break; @@ -450,6 +453,9 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpNegative: switch (getType().getBasicType()) { case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break; case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; @@ -688,6 +694,9 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) // Second, do the actual folding bool isFloatingPoint = children[0]->getAsTyped()->getBasicType() == EbtFloat || +#ifdef AMD_EXTENSIONS + children[0]->getAsTyped()->getBasicType() == EbtFloat16 || +#endif children[0]->getAsTyped()->getBasicType() == EbtDouble; bool isSigned = children[0]->getAsTyped()->getBasicType() == EbtInt || children[0]->getAsTyped()->getBasicType() == EbtInt64; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 9578d454..0cead64e 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -85,8 +85,6 @@ TBuiltIns::TBuiltIns() prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; - prefixes[EbtInt64] = "i64"; - prefixes[EbtUint64] = "u64"; postfixes[2] = "2"; postfixes[3] = "3"; postfixes[4] = "4"; @@ -875,6 +873,21 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uvec3 mid3(uvec3, uvec3, uvec3);" "uvec4 mid3(uvec4, uvec4, uvec4);" + "float16_t min3(float16_t, float16_t, float16_t);" + "f16vec2 min3(f16vec2, f16vec2, f16vec2);" + "f16vec3 min3(f16vec3, f16vec3, f16vec3);" + "f16vec4 min3(f16vec4, f16vec4, f16vec4);" + + "float16_t max3(float16_t, float16_t, float16_t);" + "f16vec2 max3(f16vec2, f16vec2, f16vec2);" + "f16vec3 max3(f16vec3, f16vec3, f16vec3);" + "f16vec4 max3(f16vec4, f16vec4, f16vec4);" + + "float16_t mid3(float16_t, float16_t, float16_t);" + "f16vec2 mid3(f16vec2, f16vec2, f16vec2);" + "f16vec3 mid3(f16vec3, f16vec3, f16vec3);" + "f16vec4 mid3(f16vec4, f16vec4, f16vec4);" + "\n" ); } @@ -1709,6 +1722,354 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + + // GL_AMD_gpu_shader_half_float + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append( + "float16_t radians(float16_t);" + "f16vec2 radians(f16vec2);" + "f16vec3 radians(f16vec3);" + "f16vec4 radians(f16vec4);" + + "float16_t degrees(float16_t);" + "f16vec2 degrees(f16vec2);" + "f16vec3 degrees(f16vec3);" + "f16vec4 degrees(f16vec4);" + + "float16_t sin(float16_t);" + "f16vec2 sin(f16vec2);" + "f16vec3 sin(f16vec3);" + "f16vec4 sin(f16vec4);" + + "float16_t cos(float16_t);" + "f16vec2 cos(f16vec2);" + "f16vec3 cos(f16vec3);" + "f16vec4 cos(f16vec4);" + + "float16_t tan(float16_t);" + "f16vec2 tan(f16vec2);" + "f16vec3 tan(f16vec3);" + "f16vec4 tan(f16vec4);" + + "float16_t asin(float16_t);" + "f16vec2 asin(f16vec2);" + "f16vec3 asin(f16vec3);" + "f16vec4 asin(f16vec4);" + + "float16_t acos(float16_t);" + "f16vec2 acos(f16vec2);" + "f16vec3 acos(f16vec3);" + "f16vec4 acos(f16vec4);" + + "float16_t atan(float16_t, float16_t);" + "f16vec2 atan(f16vec2, f16vec2);" + "f16vec3 atan(f16vec3, f16vec3);" + "f16vec4 atan(f16vec4, f16vec4);" + + "float16_t atan(float16_t);" + "f16vec2 atan(f16vec2);" + "f16vec3 atan(f16vec3);" + "f16vec4 atan(f16vec4);" + + "float16_t sinh(float16_t);" + "f16vec2 sinh(f16vec2);" + "f16vec3 sinh(f16vec3);" + "f16vec4 sinh(f16vec4);" + + "float16_t cosh(float16_t);" + "f16vec2 cosh(f16vec2);" + "f16vec3 cosh(f16vec3);" + "f16vec4 cosh(f16vec4);" + + "float16_t tanh(float16_t);" + "f16vec2 tanh(f16vec2);" + "f16vec3 tanh(f16vec3);" + "f16vec4 tanh(f16vec4);" + + "float16_t asinh(float16_t);" + "f16vec2 asinh(f16vec2);" + "f16vec3 asinh(f16vec3);" + "f16vec4 asinh(f16vec4);" + + "float16_t acosh(float16_t);" + "f16vec2 acosh(f16vec2);" + "f16vec3 acosh(f16vec3);" + "f16vec4 acosh(f16vec4);" + + "float16_t atanh(float16_t);" + "f16vec2 atanh(f16vec2);" + "f16vec3 atanh(f16vec3);" + "f16vec4 atanh(f16vec4);" + + "float16_t pow(float16_t, float16_t);" + "f16vec2 pow(f16vec2, f16vec2);" + "f16vec3 pow(f16vec3, f16vec3);" + "f16vec4 pow(f16vec4, f16vec4);" + + "float16_t exp(float16_t);" + "f16vec2 exp(f16vec2);" + "f16vec3 exp(f16vec3);" + "f16vec4 exp(f16vec4);" + + "float16_t log(float16_t);" + "f16vec2 log(f16vec2);" + "f16vec3 log(f16vec3);" + "f16vec4 log(f16vec4);" + + "float16_t exp2(float16_t);" + "f16vec2 exp2(f16vec2);" + "f16vec3 exp2(f16vec3);" + "f16vec4 exp2(f16vec4);" + + "float16_t log2(float16_t);" + "f16vec2 log2(f16vec2);" + "f16vec3 log2(f16vec3);" + "f16vec4 log2(f16vec4);" + + "float16_t sqrt(float16_t);" + "f16vec2 sqrt(f16vec2);" + "f16vec3 sqrt(f16vec3);" + "f16vec4 sqrt(f16vec4);" + + "float16_t inversesqrt(float16_t);" + "f16vec2 inversesqrt(f16vec2);" + "f16vec3 inversesqrt(f16vec3);" + "f16vec4 inversesqrt(f16vec4);" + + "float16_t abs(float16_t);" + "f16vec2 abs(f16vec2);" + "f16vec3 abs(f16vec3);" + "f16vec4 abs(f16vec4);" + + "float16_t sign(float16_t);" + "f16vec2 sign(f16vec2);" + "f16vec3 sign(f16vec3);" + "f16vec4 sign(f16vec4);" + + "float16_t floor(float16_t);" + "f16vec2 floor(f16vec2);" + "f16vec3 floor(f16vec3);" + "f16vec4 floor(f16vec4);" + + "float16_t trunc(float16_t);" + "f16vec2 trunc(f16vec2);" + "f16vec3 trunc(f16vec3);" + "f16vec4 trunc(f16vec4);" + + "float16_t round(float16_t);" + "f16vec2 round(f16vec2);" + "f16vec3 round(f16vec3);" + "f16vec4 round(f16vec4);" + + "float16_t roundEven(float16_t);" + "f16vec2 roundEven(f16vec2);" + "f16vec3 roundEven(f16vec3);" + "f16vec4 roundEven(f16vec4);" + + "float16_t ceil(float16_t);" + "f16vec2 ceil(f16vec2);" + "f16vec3 ceil(f16vec3);" + "f16vec4 ceil(f16vec4);" + + "float16_t fract(float16_t);" + "f16vec2 fract(f16vec2);" + "f16vec3 fract(f16vec3);" + "f16vec4 fract(f16vec4);" + + "float16_t mod(float16_t, float16_t);" + "f16vec2 mod(f16vec2, float16_t);" + "f16vec3 mod(f16vec3, float16_t);" + "f16vec4 mod(f16vec4, float16_t);" + "f16vec2 mod(f16vec2, f16vec2);" + "f16vec3 mod(f16vec3, f16vec3);" + "f16vec4 mod(f16vec4, f16vec4);" + + "float16_t modf(float16_t, out float16_t);" + "f16vec2 modf(f16vec2, out f16vec2);" + "f16vec3 modf(f16vec3, out f16vec3);" + "f16vec4 modf(f16vec4, out f16vec4);" + + "float16_t min(float16_t, float16_t);" + "f16vec2 min(f16vec2, float16_t);" + "f16vec3 min(f16vec3, float16_t);" + "f16vec4 min(f16vec4, float16_t);" + "f16vec2 min(f16vec2, f16vec2);" + "f16vec3 min(f16vec3, f16vec3);" + "f16vec4 min(f16vec4, f16vec4);" + + "float16_t max(float16_t, float16_t);" + "f16vec2 max(f16vec2, float16_t);" + "f16vec3 max(f16vec3, float16_t);" + "f16vec4 max(f16vec4, float16_t);" + "f16vec2 max(f16vec2, f16vec2);" + "f16vec3 max(f16vec3, f16vec3);" + "f16vec4 max(f16vec4, f16vec4);" + + "float16_t clamp(float16_t, float16_t, float16_t);" + "f16vec2 clamp(f16vec2, float16_t, float16_t);" + "f16vec3 clamp(f16vec3, float16_t, float16_t);" + "f16vec4 clamp(f16vec4, float16_t, float16_t);" + "f16vec2 clamp(f16vec2, f16vec2, f16vec2);" + "f16vec3 clamp(f16vec3, f16vec3, f16vec3);" + "f16vec4 clamp(f16vec4, f16vec4, f16vec4);" + + "float16_t mix(float16_t, float16_t, float16_t);" + "f16vec2 mix(f16vec2, f16vec2, float16_t);" + "f16vec3 mix(f16vec3, f16vec3, float16_t);" + "f16vec4 mix(f16vec4, f16vec4, float16_t);" + "f16vec2 mix(f16vec2, f16vec2, f16vec2);" + "f16vec3 mix(f16vec3, f16vec3, f16vec3);" + "f16vec4 mix(f16vec4, f16vec4, f16vec4);" + "float16_t mix(float16_t, float16_t, bool);" + "f16vec2 mix(f16vec2, f16vec2, bvec2);" + "f16vec3 mix(f16vec3, f16vec3, bvec3);" + "f16vec4 mix(f16vec4, f16vec4, bvec4);" + + "float16_t step(float16_t, float16_t);" + "f16vec2 step(f16vec2, f16vec2);" + "f16vec3 step(f16vec3, f16vec3);" + "f16vec4 step(f16vec4, f16vec4);" + "f16vec2 step(float16_t, f16vec2);" + "f16vec3 step(float16_t, f16vec3);" + "f16vec4 step(float16_t, f16vec4);" + + "float16_t smoothstep(float16_t, float16_t, float16_t);" + "f16vec2 smoothstep(f16vec2, f16vec2, f16vec2);" + "f16vec3 smoothstep(f16vec3, f16vec3, f16vec3);" + "f16vec4 smoothstep(f16vec4, f16vec4, f16vec4);" + "f16vec2 smoothstep(float16_t, float16_t, f16vec2);" + "f16vec3 smoothstep(float16_t, float16_t, f16vec3);" + "f16vec4 smoothstep(float16_t, float16_t, f16vec4);" + + "bool isnan(float16_t);" + "bvec2 isnan(f16vec2);" + "bvec3 isnan(f16vec3);" + "bvec4 isnan(f16vec4);" + + "bool isinf(float16_t);" + "bvec2 isinf(f16vec2);" + "bvec3 isinf(f16vec3);" + "bvec4 isinf(f16vec4);" + + "float16_t fma(float16_t, float16_t, float16_t);" + "f16vec2 fma(f16vec2, f16vec2, f16vec2);" + "f16vec3 fma(f16vec3, f16vec3, f16vec3);" + "f16vec4 fma(f16vec4, f16vec4, f16vec4);" + + "float16_t frexp(float16_t, out int);" + "f16vec2 frexp(f16vec2, out ivec2);" + "f16vec3 frexp(f16vec3, out ivec3);" + "f16vec4 frexp(f16vec4, out ivec4);" + + "float16_t ldexp(float16_t, in int);" + "f16vec2 ldexp(f16vec2, in ivec2);" + "f16vec3 ldexp(f16vec3, in ivec3);" + "f16vec4 ldexp(f16vec4, in ivec4);" + + "uint packFloat2x16(f16vec2);" + "f16vec2 unpackFloat2x16(uint);" + + "float16_t length(float16_t);" + "float16_t length(f16vec2);" + "float16_t length(f16vec3);" + "float16_t length(f16vec4);" + + "float16_t distance(float16_t, float16_t);" + "float16_t distance(f16vec2, f16vec2);" + "float16_t distance(f16vec3, f16vec3);" + "float16_t distance(f16vec4, f16vec4);" + + "float16_t dot(float16_t, float16_t);" + "float16_t dot(f16vec2, f16vec2);" + "float16_t dot(f16vec3, f16vec3);" + "float16_t dot(f16vec4, f16vec4);" + + "f16vec3 cross(f16vec3, f16vec3);" + + "float16_t normalize(float16_t);" + "f16vec2 normalize(f16vec2);" + "f16vec3 normalize(f16vec3);" + "f16vec4 normalize(f16vec4);" + + "float16_t faceforward(float16_t, float16_t, float16_t);" + "f16vec2 faceforward(f16vec2, f16vec2, f16vec2);" + "f16vec3 faceforward(f16vec3, f16vec3, f16vec3);" + "f16vec4 faceforward(f16vec4, f16vec4, f16vec4);" + + "float16_t reflect(float16_t, float16_t);" + "f16vec2 reflect(f16vec2, f16vec2);" + "f16vec3 reflect(f16vec3, f16vec3);" + "f16vec4 reflect(f16vec4, f16vec4);" + + "float16_t refract(float16_t, float16_t, float16_t);" + "f16vec2 refract(f16vec2, f16vec2, float16_t);" + "f16vec3 refract(f16vec3, f16vec3, float16_t);" + "f16vec4 refract(f16vec4, f16vec4, float16_t);" + + "f16mat2 matrixCompMult(f16mat2, f16mat2);" + "f16mat3 matrixCompMult(f16mat3, f16mat3);" + "f16mat4 matrixCompMult(f16mat4, f16mat4);" + "f16mat2x3 matrixCompMult(f16mat2x3, f16mat2x3);" + "f16mat2x4 matrixCompMult(f16mat2x4, f16mat2x4);" + "f16mat3x2 matrixCompMult(f16mat3x2, f16mat3x2);" + "f16mat3x4 matrixCompMult(f16mat3x4, f16mat3x4);" + "f16mat4x2 matrixCompMult(f16mat4x2, f16mat4x2);" + "f16mat4x3 matrixCompMult(f16mat4x3, f16mat4x3);" + + "f16mat2 outerProduct(f16vec2, f16vec2);" + "f16mat3 outerProduct(f16vec3, f16vec3);" + "f16mat4 outerProduct(f16vec4, f16vec4);" + "f16mat2x3 outerProduct(f16vec3, f16vec2);" + "f16mat3x2 outerProduct(f16vec2, f16vec3);" + "f16mat2x4 outerProduct(f16vec4, f16vec2);" + "f16mat4x2 outerProduct(f16vec2, f16vec4);" + "f16mat3x4 outerProduct(f16vec4, f16vec3);" + "f16mat4x3 outerProduct(f16vec3, f16vec4);" + + "f16mat2 transpose(f16mat2);" + "f16mat3 transpose(f16mat3);" + "f16mat4 transpose(f16mat4);" + "f16mat2x3 transpose(f16mat3x2);" + "f16mat3x2 transpose(f16mat2x3);" + "f16mat2x4 transpose(f16mat4x2);" + "f16mat4x2 transpose(f16mat2x4);" + "f16mat3x4 transpose(f16mat4x3);" + "f16mat4x3 transpose(f16mat3x4);" + + "float16_t determinant(f16mat2);" + "float16_t determinant(f16mat3);" + "float16_t determinant(f16mat4);" + + "f16mat2 inverse(f16mat2);" + "f16mat3 inverse(f16mat3);" + "f16mat4 inverse(f16mat4);" + + "bvec2 lessThan(f16vec2, f16vec2);" + "bvec3 lessThan(f16vec3, f16vec3);" + "bvec4 lessThan(f16vec4, f16vec4);" + + "bvec2 lessThanEqual(f16vec2, f16vec2);" + "bvec3 lessThanEqual(f16vec3, f16vec3);" + "bvec4 lessThanEqual(f16vec4, f16vec4);" + + "bvec2 greaterThan(f16vec2, f16vec2);" + "bvec3 greaterThan(f16vec3, f16vec3);" + "bvec4 greaterThan(f16vec4, f16vec4);" + + "bvec2 greaterThanEqual(f16vec2, f16vec2);" + "bvec3 greaterThanEqual(f16vec3, f16vec3);" + "bvec4 greaterThanEqual(f16vec4, f16vec4);" + + "bvec2 equal(f16vec2, f16vec2);" + "bvec3 equal(f16vec3, f16vec3);" + "bvec4 equal(f16vec4, f16vec4);" + + "bvec2 notEqual(f16vec2, f16vec2);" + "bvec3 notEqual(f16vec3, f16vec3);" + "bvec4 notEqual(f16vec4, f16vec4);" + + "\n"); + } #endif //============================================================================ @@ -1975,6 +2336,77 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uvec3 interpolateAtVertexAMD(uvec3, uint);" "uvec4 interpolateAtVertexAMD(uvec4, uint);" + "uint interpolateAtVertexAMD(float16_t, uint);" + "uvec2 interpolateAtVertexAMD(f16vec2, uint);" + "uvec3 interpolateAtVertexAMD(f16vec3, uint);" + "uvec4 interpolateAtVertexAMD(f16vec4, uint);" + + "\n"); + } + + // GL_AMD_gpu_shader_half_float + if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangFragment].append( + "float16_t dFdx(float16_t);" + "f16vec2 dFdx(f16vec2);" + "f16vec3 dFdx(f16vec3);" + "f16vec4 dFdx(f16vec4);" + + "float16_t dFdy(float16_t);" + "f16vec2 dFdy(f16vec2);" + "f16vec3 dFdy(f16vec3);" + "f16vec4 dFdy(f16vec4);" + + "float16_t dFdxFine(float16_t);" + "f16vec2 dFdxFine(f16vec2);" + "f16vec3 dFdxFine(f16vec3);" + "f16vec4 dFdxFine(f16vec4);" + + "float16_t dFdyFine(float16_t);" + "f16vec2 dFdyFine(f16vec2);" + "f16vec3 dFdyFine(f16vec3);" + "f16vec4 dFdyFine(f16vec4);" + + "float16_t dFdxCoarse(float16_t);" + "f16vec2 dFdxCoarse(f16vec2);" + "f16vec3 dFdxCoarse(f16vec3);" + "f16vec4 dFdxCoarse(f16vec4);" + + "float16_t dFdyCoarse(float16_t);" + "f16vec2 dFdyCoarse(f16vec2);" + "f16vec3 dFdyCoarse(f16vec3);" + "f16vec4 dFdyCoarse(f16vec4);" + + "float16_t fwidth(float16_t);" + "f16vec2 fwidth(f16vec2);" + "f16vec3 fwidth(f16vec3);" + "f16vec4 fwidth(f16vec4);" + + "float16_t fwidthFine(float16_t);" + "f16vec2 fwidthFine(f16vec2);" + "f16vec3 fwidthFine(f16vec3);" + "f16vec4 fwidthFine(f16vec4);" + + "float16_t fwidthCoarse(float16_t);" + "f16vec2 fwidthCoarse(f16vec2);" + "f16vec3 fwidthCoarse(f16vec3);" + "f16vec4 fwidthCoarse(f16vec4);" + + "float16_t interpolateAtCentroid(float16_t);" + "f16vec2 interpolateAtCentroid(f16vec2);" + "f16vec3 interpolateAtCentroid(f16vec3);" + "f16vec4 interpolateAtCentroid(f16vec4);" + + "float16_t interpolateAtSample(float16_t, int);" + "f16vec2 interpolateAtSample(f16vec2, int);" + "f16vec3 interpolateAtSample(f16vec3, int);" + "f16vec4 interpolateAtSample(f16vec4, int);" + + "float16_t interpolateAtOffset(float16_t, vec2);" + "f16vec2 interpolateAtOffset(f16vec2, vec2);" + "f16vec3 interpolateAtOffset(f16vec3, vec2);" + "f16vec4 interpolateAtOffset(f16vec4, vec2);" + "\n"); } #endif @@ -4369,6 +4801,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32); symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32); +#ifdef AMD_EXTENSIONS + symbolTable.relateToOperator("packFloat2x16", EOpPackFloat2x16); + symbolTable.relateToOperator("unpackFloat2x16", EOpUnpackFloat2x16); +#endif + symbolTable.relateToOperator("length", EOpLength); symbolTable.relateToOperator("distance", EOpDistance); symbolTable.relateToOperator("dot", EOpDot); diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index a0bee74e..cababc35 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -268,6 +268,9 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo case EOpConstructBool: newType = EbtBool; break; case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructDouble: newType = EbtDouble; break; +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: newType = EbtFloat16; break; +#endif default: break; // some compilers want this } @@ -293,6 +296,9 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo case EOpConstructBool: case EOpConstructFloat: case EOpConstructDouble: +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: +#endif return child; default: break; // some compilers want this } @@ -471,6 +477,11 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpConstructDouble: promoteTo = EbtDouble; break; +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: + promoteTo = EbtFloat16; + break; +#endif case EOpConstructInt: promoteTo = EbtInt; break; @@ -585,6 +596,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtUint: newOp = EOpConvUintToDouble; break; case EbtBool: newOp = EOpConvBoolToDouble; break; case EbtFloat: newOp = EOpConvFloatToDouble; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToDouble; break; +#endif case EbtInt64: newOp = EOpConvInt64ToDouble; break; case EbtUint64: newOp = EOpConvUint64ToDouble; break; default: @@ -597,18 +611,39 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtUint: newOp = EOpConvUintToFloat; break; case EbtBool: newOp = EOpConvBoolToFloat; break; case EbtDouble: newOp = EOpConvDoubleToFloat; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToFloat; break; +#endif case EbtInt64: newOp = EOpConvInt64ToFloat; break; case EbtUint64: newOp = EOpConvUint64ToFloat; break; default: return 0; } break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: + switch (node->getBasicType()) { + case EbtInt: newOp = EOpConvIntToFloat16; break; + case EbtUint: newOp = EOpConvUintToFloat16; break; + case EbtBool: newOp = EOpConvBoolToFloat16; break; + case EbtFloat: newOp = EOpConvFloatToFloat16; break; + case EbtDouble: newOp = EOpConvDoubleToFloat16; break; + case EbtInt64: newOp = EOpConvInt64ToFloat16; break; + case EbtUint64: newOp = EOpConvUint64ToFloat16; break; + default: + return 0; + } + break; +#endif case EbtBool: switch (node->getBasicType()) { case EbtInt: newOp = EOpConvIntToBool; break; case EbtUint: newOp = EOpConvUintToBool; break; case EbtFloat: newOp = EOpConvFloatToBool; break; case EbtDouble: newOp = EOpConvDoubleToBool; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToBool; break; +#endif case EbtInt64: newOp = EOpConvInt64ToBool; break; case EbtUint64: newOp = EOpConvUint64ToBool; break; default: @@ -621,6 +656,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToInt; break; case EbtFloat: newOp = EOpConvFloatToInt; break; case EbtDouble: newOp = EOpConvDoubleToInt; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToInt; break; +#endif case EbtInt64: newOp = EOpConvInt64ToInt; break; case EbtUint64: newOp = EOpConvUint64ToInt; break; default: @@ -633,6 +671,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToUint; break; case EbtFloat: newOp = EOpConvFloatToUint; break; case EbtDouble: newOp = EOpConvDoubleToUint; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToUint; break; +#endif case EbtInt64: newOp = EOpConvInt64ToUint; break; case EbtUint64: newOp = EOpConvUint64ToUint; break; default: @@ -646,6 +687,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToInt64; break; case EbtFloat: newOp = EOpConvFloatToInt64; break; case EbtDouble: newOp = EOpConvDoubleToInt64; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToInt64; break; +#endif case EbtUint64: newOp = EOpConvUint64ToInt64; break; default: return 0; @@ -658,6 +702,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToUint64; break; case EbtFloat: newOp = EOpConvFloatToUint64; break; case EbtDouble: newOp = EOpConvDoubleToUint64; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToUint64; break; +#endif case EbtInt64: newOp = EOpConvInt64ToUint64; break; default: return 0; @@ -779,6 +826,9 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtUint64: case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif return true; default: return false; @@ -788,6 +838,9 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtInt: case EbtUint: case EbtFloat: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif return true; default: return false; @@ -923,6 +976,47 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const } } break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: + if (type.getMatrixCols()) { + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructF16Mat2x2; break; + case 3: op = EOpConstructF16Mat2x3; break; + case 4: op = EOpConstructF16Mat2x4; break; + default: break; // some compilers want this + } + break; + case 3: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructF16Mat3x2; break; + case 3: op = EOpConstructF16Mat3x3; break; + case 4: op = EOpConstructF16Mat3x4; break; + default: break; // some compilers want this + } + break; + case 4: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructF16Mat4x2; break; + case 3: op = EOpConstructF16Mat4x3; break; + case 4: op = EOpConstructF16Mat4x4; break; + default: break; // some compilers want this + } + break; + } + } + else { + switch (type.getVectorSize()) { + case 1: op = EOpConstructFloat16; break; + case 2: op = EOpConstructF16Vec2; break; + case 3: op = EOpConstructF16Vec3; break; + case 4: op = EOpConstructF16Vec4; break; + default: break; // some compilers want this + } + } + break; +#endif case EbtInt: switch(type.getVectorSize()) { case 1: op = EOpConstructInt; break; @@ -1196,7 +1290,11 @@ TIntermConstantUnion* TIntermediate::addConstantUnion(bool b, const TSourceLoc& TIntermConstantUnion* TIntermediate::addConstantUnion(double d, TBasicType baseType, const TSourceLoc& loc, bool literal) const { +#ifdef AMD_EXTENSIONS + assert(baseType == EbtFloat || baseType == EbtDouble || baseType == EbtFloat16); +#else assert(baseType == EbtFloat || baseType == EbtDouble); +#endif TConstUnionArray unionArray(1); unionArray[0].setDConst(d); @@ -1451,6 +1549,12 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const case EOpVectorSwizzle: case EOpConvFloatToDouble: case EOpConvDoubleToFloat: +#ifdef AMD_EXTENSIONS + case EOpConvFloat16ToFloat: + case EOpConvFloatToFloat16: + case EOpConvFloat16ToDouble: + case EOpConvDoubleToFloat16: +#endif return true; default: return false; @@ -1607,6 +1711,9 @@ bool TIntermUnary::promote() operand->getBasicType() != EbtInt64 && operand->getBasicType() != EbtUint64 && operand->getBasicType() != EbtFloat && +#ifdef AMD_EXTENSIONS + operand->getBasicType() != EbtFloat16 && +#endif operand->getBasicType() != EbtDouble) return false; @@ -1626,7 +1733,11 @@ bool TIntermUnary::promote() void TIntermUnary::updatePrecision() { +#ifdef AMD_EXTENSIONS + if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { +#else if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) { +#endif if (operand->getQualifier().precision > getQualifier().precision) getQualifier().precision = operand->getQualifier().precision; } @@ -1955,7 +2066,11 @@ bool TIntermBinary::promote() void TIntermBinary::updatePrecision() { +#ifdef AMD_EXTENSIONS + if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { +#else if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) { +#endif getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision); if (getQualifier().precision != EpqNone) { left->propagatePrecision(getQualifier().precision); @@ -1966,7 +2081,11 @@ void TIntermBinary::updatePrecision() void TIntermTyped::propagatePrecision(TPrecisionQualifier newPrecision) { +#ifdef AMD_EXTENSIONS + if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat && getBasicType() != EbtFloat16)) +#else if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat)) +#endif return; getQualifier().precision = newPrecision; @@ -2040,10 +2159,11 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getBConst())); break; case EbtFloat: - leftUnionArray[i] = rightUnionArray[i]; - break; case EbtDouble: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getDConst())); +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif + leftUnionArray[i] = rightUnionArray[i]; break; default: return node; @@ -2068,12 +2188,43 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i] = rightUnionArray[i]; break; default: return node; } break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: + switch (node->getType().getBasicType()) { + case EbtInt: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getIConst())); + break; + case EbtUint: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getUConst())); + break; + case EbtInt64: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getI64Const())); + break; + case EbtUint64: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getU64Const())); + break; + case EbtBool: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getBConst())); + break; + case EbtFloat: + case EbtDouble: + case EbtFloat16: + leftUnionArray[i] = rightUnionArray[i]; + break; + default: + return node; + } + break; +#endif case EbtInt: switch (node->getType().getBasicType()) { case EbtInt: @@ -2093,6 +2244,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setIConst(static_cast(rightUnionArray[i].getDConst())); break; default: @@ -2118,6 +2272,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setUConst(static_cast(rightUnionArray[i].getDConst())); break; default: @@ -2143,6 +2300,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setBConst(rightUnionArray[i].getDConst() != 0.0); break; default: @@ -2168,6 +2328,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setI64Const(static_cast(rightUnionArray[i].getDConst())); break; default: @@ -2193,6 +2356,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setU64Const(static_cast(rightUnionArray[i].getDConst())); break; default: diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 3c9caf13..a24a92d6 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4559,6 +4559,11 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) // containing a double, the offset must also be a multiple of 8..." if (type.containsBasicType(EbtDouble) && ! IsMultipleOfPow2(qualifier.layoutXfbOffset, 8)) error(loc, "type contains double; xfb_offset must be a multiple of 8", "xfb_offset", ""); +#ifdef AMD_EXTENSIONS + // ..., if applied to an aggregate containing a float16_t, the offset must also be a multiple of 2..." + else if (type.containsBasicType(EbtFloat16) && !IsMultipleOfPow2(qualifier.layoutXfbOffset, 2)) + error(loc, "type contains half float; xfb_offset must be a multiple of 2", "xfb_offset", ""); +#endif else if (! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4)) error(loc, "must be a multiple of size of first component", "xfb_offset", ""); } @@ -4662,6 +4667,9 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EbtBool: case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif break; default: error(loc, "cannot be applied to this type", "constant_id", ""); @@ -5561,6 +5569,24 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructDouble; break; +#ifdef AMD_EXTENSIONS + case EOpConstructF16Vec2: + case EOpConstructF16Vec3: + case EOpConstructF16Vec4: + case EOpConstructF16Mat2x2: + case EOpConstructF16Mat2x3: + case EOpConstructF16Mat2x4: + case EOpConstructF16Mat3x2: + case EOpConstructF16Mat3x3: + case EOpConstructF16Mat3x4: + case EOpConstructF16Mat4x2: + case EOpConstructF16Mat4x3: + case EOpConstructF16Mat4x4: + case EOpConstructFloat16: + basicOp = EOpConstructFloat16; + break; +#endif + case EOpConstructIVec2: case EOpConstructIVec3: case EOpConstructIVec4: diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index ee0dbb40..37506454 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -463,6 +463,25 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["u64vec3"] = U64VEC3; (*KeywordMap)["u64vec4"] = U64VEC4; +#ifdef AMD_EXTENSIONS + (*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; +#endif + (*KeywordMap)["sampler2D"] = SAMPLER2D; (*KeywordMap)["samplerCube"] = SAMPLERCUBE; (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; @@ -687,6 +706,9 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT; case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT; +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT; +#endif case PpAtomIdentifier: { int token = tokenizeIdentifier(); @@ -938,10 +960,38 @@ int TScanContext::tokenizeIdentifier() case U64VEC2: case U64VEC3: case U64VEC4: - if (parseContext.profile != EEsProfile && parseContext.version >= 450) + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + (parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) && + parseContext.profile != EEsProfile && parseContext.version >= 450)) return keyword; return identifierOrType(); +#ifdef AMD_EXTENSIONS + case FLOAT16_T: + case F16VEC2: + case F16VEC3: + case F16VEC4: + case F16MAT2: + case F16MAT3: + case F16MAT4: + case F16MAT2X2: + case F16MAT2X3: + case F16MAT2X4: + case F16MAT3X2: + case F16MAT3X3: + case F16MAT3X4: + case F16MAT4X2: + case F16MAT4X3: + case F16MAT4X4: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) && + parseContext.profile != EEsProfile && parseContext.version >= 450)) + return keyword; + return identifierOrType(); +#endif + case SAMPLERCUBEARRAY: case SAMPLERCUBEARRAYSHADOW: case ISAMPLERCUBEARRAY: diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 2068f26b..fb09fdf9 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -60,6 +60,9 @@ void TType::buildMangledName(TString& mangledName) switch (basicType) { case EbtFloat: mangledName += 'f'; break; case EbtDouble: mangledName += 'd'; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: mangledName += "f16"; break; +#endif case EbtInt: mangledName += 'i'; break; case EbtUint: mangledName += 'u'; break; case EbtInt64: mangledName += "i64"; break; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 52d205da..8a29cb37 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -192,6 +192,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_AMD_shader_trinary_minmax] = EBhDisable; extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter] = EBhDisable; extensionBehavior[E_GL_AMD_gcn_shader] = EBhDisable; + extensionBehavior[E_GL_AMD_gpu_shader_half_float] = EBhDisable; #endif // AEP @@ -299,6 +300,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_AMD_shader_trinary_minmax 1\n" "#define GL_AMD_shader_explicit_vertex_parameter 1\n" "#define GL_AMD_gcn_shader 1\n" + "#define GL_AMD_gpu_shader_half_float 1\n" #endif ; } @@ -663,6 +665,19 @@ void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op) profileRequires(loc, ECompatibilityProfile, 400, nullptr, op); } +#ifdef AMD_EXTENSIONS +// Call for any operation needing GLSL float16 data-type support. +void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float, "shader half float"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); + profileRequires(loc, ECoreProfile, 450, nullptr, op); + profileRequires(loc, ECompatibilityProfile, 450, nullptr, op); + } +} +#endif + // Call for any operation needing GLSL 64-bit integer data-type support. void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool builtIn) { diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 6fd08b05..17baf3b1 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -136,10 +136,11 @@ const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp const char* const E_GL_GOOGLE_include_directive = "GL_GOOGLE_include_directive"; #ifdef AMD_EXTENSIONS -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"; -const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter"; -const char* const E_GL_AMD_gcn_shader = "GL_AMD_gcn_shader"; +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"; +const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter"; +const char* const E_GL_AMD_gcn_shader = "GL_AMD_gcn_shader"; +const char* const E_GL_AMD_gpu_shader_half_float = "GL_AMD_gpu_shader_half_float"; #endif // AEP diff --git a/glslang/MachineIndependent/gl_types.h b/glslang/MachineIndependent/gl_types.h index 9e877d37..d7cb31fe 100644 --- a/glslang/MachineIndependent/gl_types.h +++ b/glslang/MachineIndependent/gl_types.h @@ -76,6 +76,24 @@ #define GL_DOUBLE_MAT4x2 0x8F4D #define GL_DOUBLE_MAT4x3 0x8F4E +#ifdef AMD_EXTENSIONS +// Those constants are borrowed from extension NV_gpu_shader5 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB + +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#endif + #define GL_SAMPLER_1D 0x8B5D #define GL_SAMPLER_2D 0x8B5E #define GL_SAMPLER_3D 0x8B5F diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index a1628f61..060ffdd6 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -119,13 +119,14 @@ extern int yylex(YYSTYPE*, TParseContext&); %expect 1 // One shift reduce conflict because of if | else %token ATTRIBUTE VARYING -%token CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T +%token CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T FLOAT16_T %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE %token BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 I64VEC2 I64VEC3 I64VEC4 UVEC2 UVEC3 UVEC4 U64VEC2 U64VEC3 U64VEC4 VEC2 VEC3 VEC4 %token MAT2 MAT3 MAT4 CENTROID IN OUT INOUT %token UNIFORM PATCH SAMPLE BUFFER SHARED %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY %token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 +%token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 %token NOPERSPECTIVE FLAT SMOOTH LAYOUT __EXPLICITINTERPAMD %token MAT2X2 MAT2X3 MAT2X4 @@ -134,6 +135,9 @@ extern int yylex(YYSTYPE*, TParseContext&); %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 ATOMIC_UINT // combined image/sampler @@ -182,7 +186,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token STRUCT VOID WHILE %token IDENTIFIER TYPE_NAME -%token FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT +%token FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT FLOAT16CONSTANT %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 @@ -274,6 +278,12 @@ primary_expression parseContext.doubleCheck($1.loc, "double literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true); } + | FLOAT16CONSTANT { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float literal"); + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); +#endif + } | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } @@ -1324,6 +1334,13 @@ type_specifier_nonarray $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; } + | FLOAT16_T { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; +#endif + } | INT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; @@ -1380,6 +1397,30 @@ type_specifier_nonarray $$.basicType = EbtDouble; $$.setVector(4); } + | F16VEC2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(2); +#endif + } + | F16VEC3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(3); +#endif + } + | F16VEC4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(4); +#endif + } | BVEC2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBool; @@ -1596,6 +1637,102 @@ type_specifier_nonarray $$.basicType = EbtDouble; $$.setMatrix(4, 4); } + | F16MAT2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 2); +#endif + } + | F16MAT3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 3); +#endif + } + | F16MAT4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 4); +#endif + } + | F16MAT2X2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 2); +#endif + } + | F16MAT2X3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 3); +#endif + } + | F16MAT2X4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 4); +#endif + } + | F16MAT3X2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 2); +#endif + } + | F16MAT3X3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 3); +#endif + } + | F16MAT3X4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 4); +#endif + } + | F16MAT4X2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 2); +#endif + } + | F16MAT4X3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 3); +#endif + } + | F16MAT4X4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 4); +#endif + } | ATOMIC_UINT { parseContext.vulkanRemoved($1.loc, "atomic counter types"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 3d7dc8e5..3507c04e 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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 . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "2.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -62,7 +62,8 @@ /* Copy the first part of user declarations. */ -#line 41 "MachineIndependent/glslang.y" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 41 "glslang.y" /* Based on: @@ -87,13 +88,14 @@ Jutta Degener, 1995 using namespace glslang; -#line 91 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 93 "glslang_tab.cpp" -# ifndef YY_NULLPTR +# ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# define YY_NULL nullptr # else -# define YY_NULLPTR 0 +# define YY_NULL 0 # endif # endif @@ -107,9 +109,9 @@ using namespace glslang; /* In a future release of Bison, this section will be replaced by #include "glslang_tab.cpp.h". */ -#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -/* Debug traces. */ +#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif @@ -117,288 +119,306 @@ using namespace glslang; extern int yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - ATTRIBUTE = 258, - VARYING = 259, - CONST = 260, - BOOL = 261, - FLOAT = 262, - DOUBLE = 263, - INT = 264, - UINT = 265, - INT64_T = 266, - UINT64_T = 267, - BREAK = 268, - CONTINUE = 269, - DO = 270, - ELSE = 271, - FOR = 272, - IF = 273, - DISCARD = 274, - RETURN = 275, - SWITCH = 276, - CASE = 277, - DEFAULT = 278, - SUBROUTINE = 279, - BVEC2 = 280, - BVEC3 = 281, - BVEC4 = 282, - IVEC2 = 283, - IVEC3 = 284, - IVEC4 = 285, - I64VEC2 = 286, - I64VEC3 = 287, - I64VEC4 = 288, - UVEC2 = 289, - UVEC3 = 290, - UVEC4 = 291, - U64VEC2 = 292, - U64VEC3 = 293, - U64VEC4 = 294, - VEC2 = 295, - VEC3 = 296, - VEC4 = 297, - MAT2 = 298, - MAT3 = 299, - MAT4 = 300, - CENTROID = 301, - IN = 302, - OUT = 303, - INOUT = 304, - UNIFORM = 305, - PATCH = 306, - SAMPLE = 307, - BUFFER = 308, - SHARED = 309, - COHERENT = 310, - VOLATILE = 311, - RESTRICT = 312, - READONLY = 313, - WRITEONLY = 314, - DVEC2 = 315, - DVEC3 = 316, - DVEC4 = 317, - DMAT2 = 318, - DMAT3 = 319, - DMAT4 = 320, - NOPERSPECTIVE = 321, - FLAT = 322, - SMOOTH = 323, - LAYOUT = 324, - __EXPLICITINTERPAMD = 325, - MAT2X2 = 326, - MAT2X3 = 327, - MAT2X4 = 328, - MAT3X2 = 329, - MAT3X3 = 330, - MAT3X4 = 331, - MAT4X2 = 332, - MAT4X3 = 333, - MAT4X4 = 334, - DMAT2X2 = 335, - DMAT2X3 = 336, - DMAT2X4 = 337, - DMAT3X2 = 338, - DMAT3X3 = 339, - DMAT3X4 = 340, - DMAT4X2 = 341, - DMAT4X3 = 342, - DMAT4X4 = 343, - ATOMIC_UINT = 344, - SAMPLER1D = 345, - SAMPLER2D = 346, - SAMPLER3D = 347, - SAMPLERCUBE = 348, - SAMPLER1DSHADOW = 349, - SAMPLER2DSHADOW = 350, - SAMPLERCUBESHADOW = 351, - SAMPLER1DARRAY = 352, - SAMPLER2DARRAY = 353, - SAMPLER1DARRAYSHADOW = 354, - SAMPLER2DARRAYSHADOW = 355, - ISAMPLER1D = 356, - ISAMPLER2D = 357, - ISAMPLER3D = 358, - ISAMPLERCUBE = 359, - ISAMPLER1DARRAY = 360, - ISAMPLER2DARRAY = 361, - USAMPLER1D = 362, - USAMPLER2D = 363, - USAMPLER3D = 364, - USAMPLERCUBE = 365, - USAMPLER1DARRAY = 366, - USAMPLER2DARRAY = 367, - SAMPLER2DRECT = 368, - SAMPLER2DRECTSHADOW = 369, - ISAMPLER2DRECT = 370, - USAMPLER2DRECT = 371, - SAMPLERBUFFER = 372, - ISAMPLERBUFFER = 373, - USAMPLERBUFFER = 374, - SAMPLERCUBEARRAY = 375, - SAMPLERCUBEARRAYSHADOW = 376, - ISAMPLERCUBEARRAY = 377, - USAMPLERCUBEARRAY = 378, - SAMPLER2DMS = 379, - ISAMPLER2DMS = 380, - USAMPLER2DMS = 381, - SAMPLER2DMSARRAY = 382, - ISAMPLER2DMSARRAY = 383, - USAMPLER2DMSARRAY = 384, - SAMPLEREXTERNALOES = 385, - SAMPLER = 386, - SAMPLERSHADOW = 387, - TEXTURE1D = 388, - TEXTURE2D = 389, - TEXTURE3D = 390, - TEXTURECUBE = 391, - TEXTURE1DARRAY = 392, - TEXTURE2DARRAY = 393, - ITEXTURE1D = 394, - ITEXTURE2D = 395, - ITEXTURE3D = 396, - ITEXTURECUBE = 397, - ITEXTURE1DARRAY = 398, - ITEXTURE2DARRAY = 399, - UTEXTURE1D = 400, - UTEXTURE2D = 401, - UTEXTURE3D = 402, - UTEXTURECUBE = 403, - UTEXTURE1DARRAY = 404, - UTEXTURE2DARRAY = 405, - TEXTURE2DRECT = 406, - ITEXTURE2DRECT = 407, - UTEXTURE2DRECT = 408, - TEXTUREBUFFER = 409, - ITEXTUREBUFFER = 410, - UTEXTUREBUFFER = 411, - TEXTURECUBEARRAY = 412, - ITEXTURECUBEARRAY = 413, - UTEXTURECUBEARRAY = 414, - TEXTURE2DMS = 415, - ITEXTURE2DMS = 416, - UTEXTURE2DMS = 417, - TEXTURE2DMSARRAY = 418, - ITEXTURE2DMSARRAY = 419, - UTEXTURE2DMSARRAY = 420, - SUBPASSINPUT = 421, - SUBPASSINPUTMS = 422, - ISUBPASSINPUT = 423, - ISUBPASSINPUTMS = 424, - USUBPASSINPUT = 425, - USUBPASSINPUTMS = 426, - IMAGE1D = 427, - IIMAGE1D = 428, - UIMAGE1D = 429, - IMAGE2D = 430, - IIMAGE2D = 431, - UIMAGE2D = 432, - IMAGE3D = 433, - IIMAGE3D = 434, - UIMAGE3D = 435, - IMAGE2DRECT = 436, - IIMAGE2DRECT = 437, - UIMAGE2DRECT = 438, - IMAGECUBE = 439, - IIMAGECUBE = 440, - UIMAGECUBE = 441, - IMAGEBUFFER = 442, - IIMAGEBUFFER = 443, - UIMAGEBUFFER = 444, - IMAGE1DARRAY = 445, - IIMAGE1DARRAY = 446, - UIMAGE1DARRAY = 447, - IMAGE2DARRAY = 448, - IIMAGE2DARRAY = 449, - UIMAGE2DARRAY = 450, - IMAGECUBEARRAY = 451, - IIMAGECUBEARRAY = 452, - UIMAGECUBEARRAY = 453, - IMAGE2DMS = 454, - IIMAGE2DMS = 455, - UIMAGE2DMS = 456, - IMAGE2DMSARRAY = 457, - IIMAGE2DMSARRAY = 458, - UIMAGE2DMSARRAY = 459, - STRUCT = 460, - VOID = 461, - WHILE = 462, - IDENTIFIER = 463, - TYPE_NAME = 464, - FLOATCONSTANT = 465, - DOUBLECONSTANT = 466, - INTCONSTANT = 467, - UINTCONSTANT = 468, - INT64CONSTANT = 469, - UINT64CONSTANT = 470, - BOOLCONSTANT = 471, - LEFT_OP = 472, - RIGHT_OP = 473, - INC_OP = 474, - DEC_OP = 475, - LE_OP = 476, - GE_OP = 477, - EQ_OP = 478, - NE_OP = 479, - AND_OP = 480, - OR_OP = 481, - XOR_OP = 482, - MUL_ASSIGN = 483, - DIV_ASSIGN = 484, - ADD_ASSIGN = 485, - MOD_ASSIGN = 486, - LEFT_ASSIGN = 487, - RIGHT_ASSIGN = 488, - AND_ASSIGN = 489, - XOR_ASSIGN = 490, - OR_ASSIGN = 491, - SUB_ASSIGN = 492, - LEFT_PAREN = 493, - RIGHT_PAREN = 494, - LEFT_BRACKET = 495, - RIGHT_BRACKET = 496, - LEFT_BRACE = 497, - RIGHT_BRACE = 498, - DOT = 499, - COMMA = 500, - COLON = 501, - EQUAL = 502, - SEMICOLON = 503, - BANG = 504, - DASH = 505, - TILDE = 506, - PLUS = 507, - STAR = 508, - SLASH = 509, - PERCENT = 510, - LEFT_ANGLE = 511, - RIGHT_ANGLE = 512, - VERTICAL_BAR = 513, - CARET = 514, - AMPERSAND = 515, - QUESTION = 516, - INVARIANT = 517, - PRECISE = 518, - HIGH_PRECISION = 519, - MEDIUM_PRECISION = 520, - LOW_PRECISION = 521, - PRECISION = 522, - PACKED = 523, - RESOURCE = 524, - SUPERP = 525 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + INT64_T = 266, + UINT64_T = 267, + FLOAT16_T = 268, + BREAK = 269, + CONTINUE = 270, + DO = 271, + ELSE = 272, + FOR = 273, + IF = 274, + DISCARD = 275, + RETURN = 276, + SWITCH = 277, + CASE = 278, + DEFAULT = 279, + SUBROUTINE = 280, + BVEC2 = 281, + BVEC3 = 282, + BVEC4 = 283, + IVEC2 = 284, + IVEC3 = 285, + IVEC4 = 286, + I64VEC2 = 287, + I64VEC3 = 288, + I64VEC4 = 289, + UVEC2 = 290, + UVEC3 = 291, + UVEC4 = 292, + U64VEC2 = 293, + U64VEC3 = 294, + U64VEC4 = 295, + VEC2 = 296, + VEC3 = 297, + VEC4 = 298, + MAT2 = 299, + MAT3 = 300, + MAT4 = 301, + CENTROID = 302, + IN = 303, + OUT = 304, + INOUT = 305, + UNIFORM = 306, + PATCH = 307, + SAMPLE = 308, + BUFFER = 309, + SHARED = 310, + COHERENT = 311, + VOLATILE = 312, + RESTRICT = 313, + READONLY = 314, + WRITEONLY = 315, + DVEC2 = 316, + DVEC3 = 317, + DVEC4 = 318, + DMAT2 = 319, + DMAT3 = 320, + DMAT4 = 321, + F16VEC2 = 322, + F16VEC3 = 323, + F16VEC4 = 324, + F16MAT2 = 325, + F16MAT3 = 326, + F16MAT4 = 327, + NOPERSPECTIVE = 328, + FLAT = 329, + SMOOTH = 330, + LAYOUT = 331, + __EXPLICITINTERPAMD = 332, + MAT2X2 = 333, + MAT2X3 = 334, + MAT2X4 = 335, + MAT3X2 = 336, + MAT3X3 = 337, + MAT3X4 = 338, + MAT4X2 = 339, + MAT4X3 = 340, + MAT4X4 = 341, + DMAT2X2 = 342, + DMAT2X3 = 343, + DMAT2X4 = 344, + DMAT3X2 = 345, + DMAT3X3 = 346, + DMAT3X4 = 347, + DMAT4X2 = 348, + DMAT4X3 = 349, + DMAT4X4 = 350, + F16MAT2X2 = 351, + F16MAT2X3 = 352, + F16MAT2X4 = 353, + F16MAT3X2 = 354, + F16MAT3X3 = 355, + F16MAT3X4 = 356, + F16MAT4X2 = 357, + F16MAT4X3 = 358, + F16MAT4X4 = 359, + ATOMIC_UINT = 360, + SAMPLER1D = 361, + SAMPLER2D = 362, + SAMPLER3D = 363, + SAMPLERCUBE = 364, + SAMPLER1DSHADOW = 365, + SAMPLER2DSHADOW = 366, + SAMPLERCUBESHADOW = 367, + SAMPLER1DARRAY = 368, + SAMPLER2DARRAY = 369, + SAMPLER1DARRAYSHADOW = 370, + SAMPLER2DARRAYSHADOW = 371, + ISAMPLER1D = 372, + ISAMPLER2D = 373, + ISAMPLER3D = 374, + ISAMPLERCUBE = 375, + ISAMPLER1DARRAY = 376, + ISAMPLER2DARRAY = 377, + USAMPLER1D = 378, + USAMPLER2D = 379, + USAMPLER3D = 380, + USAMPLERCUBE = 381, + USAMPLER1DARRAY = 382, + USAMPLER2DARRAY = 383, + SAMPLER2DRECT = 384, + SAMPLER2DRECTSHADOW = 385, + ISAMPLER2DRECT = 386, + USAMPLER2DRECT = 387, + SAMPLERBUFFER = 388, + ISAMPLERBUFFER = 389, + USAMPLERBUFFER = 390, + SAMPLERCUBEARRAY = 391, + SAMPLERCUBEARRAYSHADOW = 392, + ISAMPLERCUBEARRAY = 393, + USAMPLERCUBEARRAY = 394, + SAMPLER2DMS = 395, + ISAMPLER2DMS = 396, + USAMPLER2DMS = 397, + SAMPLER2DMSARRAY = 398, + ISAMPLER2DMSARRAY = 399, + USAMPLER2DMSARRAY = 400, + SAMPLEREXTERNALOES = 401, + SAMPLER = 402, + SAMPLERSHADOW = 403, + TEXTURE1D = 404, + TEXTURE2D = 405, + TEXTURE3D = 406, + TEXTURECUBE = 407, + TEXTURE1DARRAY = 408, + TEXTURE2DARRAY = 409, + ITEXTURE1D = 410, + ITEXTURE2D = 411, + ITEXTURE3D = 412, + ITEXTURECUBE = 413, + ITEXTURE1DARRAY = 414, + ITEXTURE2DARRAY = 415, + UTEXTURE1D = 416, + UTEXTURE2D = 417, + UTEXTURE3D = 418, + UTEXTURECUBE = 419, + UTEXTURE1DARRAY = 420, + UTEXTURE2DARRAY = 421, + TEXTURE2DRECT = 422, + ITEXTURE2DRECT = 423, + UTEXTURE2DRECT = 424, + TEXTUREBUFFER = 425, + ITEXTUREBUFFER = 426, + UTEXTUREBUFFER = 427, + TEXTURECUBEARRAY = 428, + ITEXTURECUBEARRAY = 429, + UTEXTURECUBEARRAY = 430, + TEXTURE2DMS = 431, + ITEXTURE2DMS = 432, + UTEXTURE2DMS = 433, + TEXTURE2DMSARRAY = 434, + ITEXTURE2DMSARRAY = 435, + UTEXTURE2DMSARRAY = 436, + SUBPASSINPUT = 437, + SUBPASSINPUTMS = 438, + ISUBPASSINPUT = 439, + ISUBPASSINPUTMS = 440, + USUBPASSINPUT = 441, + USUBPASSINPUTMS = 442, + IMAGE1D = 443, + IIMAGE1D = 444, + UIMAGE1D = 445, + IMAGE2D = 446, + IIMAGE2D = 447, + UIMAGE2D = 448, + IMAGE3D = 449, + IIMAGE3D = 450, + UIMAGE3D = 451, + IMAGE2DRECT = 452, + IIMAGE2DRECT = 453, + UIMAGE2DRECT = 454, + IMAGECUBE = 455, + IIMAGECUBE = 456, + UIMAGECUBE = 457, + IMAGEBUFFER = 458, + IIMAGEBUFFER = 459, + UIMAGEBUFFER = 460, + IMAGE1DARRAY = 461, + IIMAGE1DARRAY = 462, + UIMAGE1DARRAY = 463, + IMAGE2DARRAY = 464, + IIMAGE2DARRAY = 465, + UIMAGE2DARRAY = 466, + IMAGECUBEARRAY = 467, + IIMAGECUBEARRAY = 468, + UIMAGECUBEARRAY = 469, + IMAGE2DMS = 470, + IIMAGE2DMS = 471, + UIMAGE2DMS = 472, + IMAGE2DMSARRAY = 473, + IIMAGE2DMSARRAY = 474, + UIMAGE2DMSARRAY = 475, + STRUCT = 476, + VOID = 477, + WHILE = 478, + IDENTIFIER = 479, + TYPE_NAME = 480, + FLOATCONSTANT = 481, + DOUBLECONSTANT = 482, + INTCONSTANT = 483, + UINTCONSTANT = 484, + INT64CONSTANT = 485, + UINT64CONSTANT = 486, + BOOLCONSTANT = 487, + FLOAT16CONSTANT = 488, + LEFT_OP = 489, + RIGHT_OP = 490, + INC_OP = 491, + DEC_OP = 492, + LE_OP = 493, + GE_OP = 494, + EQ_OP = 495, + NE_OP = 496, + AND_OP = 497, + OR_OP = 498, + XOR_OP = 499, + MUL_ASSIGN = 500, + DIV_ASSIGN = 501, + ADD_ASSIGN = 502, + MOD_ASSIGN = 503, + LEFT_ASSIGN = 504, + RIGHT_ASSIGN = 505, + AND_ASSIGN = 506, + XOR_ASSIGN = 507, + OR_ASSIGN = 508, + SUB_ASSIGN = 509, + LEFT_PAREN = 510, + RIGHT_PAREN = 511, + LEFT_BRACKET = 512, + RIGHT_BRACKET = 513, + LEFT_BRACE = 514, + RIGHT_BRACE = 515, + DOT = 516, + COMMA = 517, + COLON = 518, + EQUAL = 519, + SEMICOLON = 520, + BANG = 521, + DASH = 522, + TILDE = 523, + PLUS = 524, + STAR = 525, + SLASH = 526, + PERCENT = 527, + LEFT_ANGLE = 528, + RIGHT_ANGLE = 529, + VERTICAL_BAR = 530, + CARET = 531, + AMPERSAND = 532, + QUESTION = 533, + INVARIANT = 534, + PRECISE = 535, + HIGH_PRECISION = 536, + MEDIUM_PRECISION = 537, + LOW_PRECISION = 538, + PRECISION = 539, + PACKED = 540, + RESOURCE = 541, + SUPERP = 542 + }; #endif -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 66 "MachineIndependent/glslang.y" /* yacc.c:355 */ +/* Line 387 of yacc.c */ +#line 66 "glslang.y" struct { glslang::TSourceLoc loc; @@ -432,22 +452,35 @@ union YYSTYPE }; } interm; -#line 436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 387 of yacc.c */ +#line 458 "glslang_tab.cpp" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ +#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 100 "MachineIndependent/glslang.y" /* yacc.c:358 */ +/* Line 390 of yacc.c */ +#line 100 "glslang.y" /* windows only pragma */ @@ -463,7 +496,8 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +/* Line 390 of yacc.c */ +#line 501 "glslang_tab.cpp" #ifdef short # undef short @@ -477,8 +511,11 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#else +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; +#else +typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -498,7 +535,8 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -520,33 +558,6 @@ typedef short int yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -554,25 +565,23 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(N) (N) #else -# define YY_INITIAL_VALUE(Value) Value +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; #endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END +{ + return yyi; +} #endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - #if ! defined yyoverflow || YYERROR_VERBOSE @@ -591,7 +600,8 @@ typedef short int yytype_int16; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -603,8 +613,8 @@ typedef short int yytype_int16; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -620,7 +630,7 @@ typedef short int yytype_int16; # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -628,13 +638,15 @@ typedef short int yytype_int16; # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -644,7 +656,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -669,16 +681,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif @@ -697,35 +709,33 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (0) + while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 249 +#define YYFINAL 265 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 5966 +#define YYLAST 6373 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 271 +#define YYNTOKENS 288 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 100 /* YYNRULES -- Number of rules. */ -#define YYNRULES 422 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 554 +#define YYNRULES 439 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 571 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 525 +#define YYMAXUTOK 542 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -780,56 +790,224 @@ static const yytype_uint16 yytranslate[] = 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270 + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, + 19, 21, 23, 27, 29, 34, 36, 40, 43, 46, + 48, 50, 52, 55, 58, 61, 63, 66, 70, 73, + 75, 77, 79, 82, 85, 88, 90, 92, 94, 96, + 98, 102, 106, 110, 112, 116, 120, 122, 126, 130, + 132, 136, 140, 144, 148, 150, 154, 158, 160, 164, + 166, 170, 172, 176, 178, 182, 184, 188, 190, 194, + 196, 197, 204, 206, 210, 212, 214, 216, 218, 220, + 222, 224, 226, 228, 230, 232, 234, 238, 240, 243, + 246, 251, 254, 258, 263, 266, 270, 275, 276, 283, + 286, 290, 293, 295, 297, 300, 304, 308, 311, 315, + 318, 320, 323, 325, 327, 329, 333, 338, 345, 351, + 353, 356, 360, 366, 371, 373, 376, 378, 380, 382, + 384, 386, 391, 393, 397, 399, 403, 405, 407, 409, + 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, + 452, 454, 456, 458, 460, 465, 467, 471, 473, 476, + 479, 483, 487, 492, 494, 496, 498, 500, 502, 504, + 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, + 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, + 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, + 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, + 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, + 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, + 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, + 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, + 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, + 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, + 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, + 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, + 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, + 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, + 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, + 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, + 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, + 866, 868, 870, 872, 873, 880, 881, 887, 889, 892, + 896, 901, 903, 907, 909, 912, 914, 918, 923, 925, + 929, 931, 933, 935, 937, 939, 941, 943, 945, 947, + 949, 952, 953, 954, 960, 962, 964, 965, 968, 969, + 972, 975, 979, 981, 984, 986, 989, 995, 999, 1001, + 1003, 1008, 1009, 1018, 1019, 1021, 1025, 1028, 1029, 1036, + 1037, 1046, 1047, 1055, 1057, 1059, 1061, 1062, 1065, 1069, + 1072, 1075, 1078, 1082, 1085, 1087, 1090, 1092, 1094, 1095 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 384, 0, -1, 224, -1, 289, -1, 228, -1, 229, + -1, 230, -1, 231, -1, 226, -1, 227, -1, 233, + -1, 232, -1, 255, 317, 256, -1, 290, -1, 291, + 257, 292, 258, -1, 293, -1, 291, 261, 224, -1, + 291, 236, -1, 291, 237, -1, 317, -1, 294, -1, + 295, -1, 297, 256, -1, 296, 256, -1, 298, 222, + -1, 298, -1, 298, 315, -1, 297, 262, 315, -1, + 299, 255, -1, 343, -1, 291, -1, 291, -1, 236, + 300, -1, 237, 300, -1, 301, 300, -1, 269, -1, + 267, -1, 266, -1, 268, -1, 300, -1, 302, 270, + 300, -1, 302, 271, 300, -1, 302, 272, 300, -1, + 302, -1, 303, 269, 302, -1, 303, 267, 302, -1, + 303, -1, 304, 234, 303, -1, 304, 235, 303, -1, + 304, -1, 305, 273, 304, -1, 305, 274, 304, -1, + 305, 238, 304, -1, 305, 239, 304, -1, 305, -1, + 306, 240, 305, -1, 306, 241, 305, -1, 306, -1, + 307, 277, 306, -1, 307, -1, 308, 276, 307, -1, + 308, -1, 309, 275, 308, -1, 309, -1, 310, 242, + 309, -1, 310, -1, 311, 244, 310, -1, 311, -1, + 312, 243, 311, -1, 312, -1, -1, 312, 278, 314, + 317, 263, 315, -1, 313, -1, 300, 316, 315, -1, + 264, -1, 245, -1, 246, -1, 248, -1, 247, -1, + 254, -1, 249, -1, 250, -1, 251, -1, 252, -1, + 253, -1, 315, -1, 317, 262, 315, -1, 313, -1, + 323, 265, -1, 330, 265, -1, 284, 346, 343, 265, + -1, 320, 265, -1, 320, 224, 265, -1, 320, 224, + 344, 265, -1, 339, 265, -1, 339, 224, 265, -1, + 339, 224, 322, 265, -1, -1, 339, 224, 259, 321, + 350, 260, -1, 262, 224, -1, 322, 262, 224, -1, + 324, 256, -1, 326, -1, 325, -1, 326, 328, -1, + 325, 262, 328, -1, 332, 224, 255, -1, 343, 224, + -1, 343, 224, 344, -1, 339, 327, -1, 327, -1, + 339, 329, -1, 329, -1, 343, -1, 331, -1, 330, + 262, 224, -1, 330, 262, 224, 344, -1, 330, 262, + 224, 344, 264, 354, -1, 330, 262, 224, 264, 354, + -1, 332, -1, 332, 224, -1, 332, 224, 344, -1, + 332, 224, 344, 264, 354, -1, 332, 224, 264, 354, + -1, 343, -1, 339, 343, -1, 279, -1, 75, -1, + 74, -1, 73, -1, 77, -1, 76, 255, 336, 256, + -1, 337, -1, 336, 262, 337, -1, 224, -1, 224, + 264, 318, -1, 55, -1, 280, -1, 340, -1, 339, + 340, -1, 341, -1, 335, -1, 346, -1, 334, -1, + 333, -1, 338, -1, 5, -1, 3, -1, 4, -1, + 50, -1, 48, -1, 49, -1, 47, -1, 52, -1, + 53, -1, 51, -1, 54, -1, 55, -1, 56, -1, + 57, -1, 58, -1, 59, -1, 60, -1, 25, -1, + 25, 255, 342, 256, -1, 225, -1, 342, 262, 225, + -1, 345, -1, 345, 344, -1, 257, 258, -1, 257, + 313, 258, -1, 344, 257, 258, -1, 344, 257, 313, + 258, -1, 222, -1, 7, -1, 8, -1, 13, -1, + 9, -1, 10, -1, 11, -1, 12, -1, 6, -1, + 41, -1, 42, -1, 43, -1, 61, -1, 62, -1, + 63, -1, 67, -1, 68, -1, 69, -1, 26, -1, + 27, -1, 28, -1, 29, -1, 30, -1, 31, -1, + 32, -1, 33, -1, 34, -1, 35, -1, 36, -1, + 37, -1, 38, -1, 39, -1, 40, -1, 44, -1, + 45, -1, 46, -1, 78, -1, 79, -1, 80, -1, + 81, -1, 82, -1, 83, -1, 84, -1, 85, -1, + 86, -1, 64, -1, 65, -1, 66, -1, 87, -1, + 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, + 93, -1, 94, -1, 95, -1, 70, -1, 71, -1, + 72, -1, 96, -1, 97, -1, 98, -1, 99, -1, + 100, -1, 101, -1, 102, -1, 103, -1, 104, -1, + 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, + 110, -1, 111, -1, 112, -1, 113, -1, 114, -1, + 115, -1, 116, -1, 136, -1, 137, -1, 117, -1, + 118, -1, 119, -1, 120, -1, 121, -1, 122, -1, + 138, -1, 123, -1, 124, -1, 125, -1, 126, -1, + 127, -1, 128, -1, 139, -1, 129, -1, 130, -1, + 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, + 140, -1, 141, -1, 142, -1, 143, -1, 144, -1, + 145, -1, 147, -1, 148, -1, 149, -1, 150, -1, + 151, -1, 152, -1, 153, -1, 154, -1, 173, -1, + 155, -1, 156, -1, 157, -1, 158, -1, 159, -1, + 160, -1, 174, -1, 161, -1, 162, -1, 163, -1, + 164, -1, 165, -1, 166, -1, 175, -1, 167, -1, + 168, -1, 169, -1, 170, -1, 171, -1, 172, -1, + 176, -1, 177, -1, 178, -1, 179, -1, 180, -1, + 181, -1, 188, -1, 189, -1, 190, -1, 191, -1, + 192, -1, 193, -1, 194, -1, 195, -1, 196, -1, + 197, -1, 198, -1, 199, -1, 200, -1, 201, -1, + 202, -1, 203, -1, 204, -1, 205, -1, 206, -1, + 207, -1, 208, -1, 209, -1, 210, -1, 211, -1, + 212, -1, 213, -1, 214, -1, 215, -1, 216, -1, + 217, -1, 218, -1, 219, -1, 220, -1, 146, -1, + 182, -1, 183, -1, 184, -1, 185, -1, 186, -1, + 187, -1, 347, -1, 225, -1, 281, -1, 282, -1, + 283, -1, -1, 221, 224, 259, 348, 350, 260, -1, + -1, 221, 259, 349, 350, 260, -1, 351, -1, 350, + 351, -1, 343, 352, 265, -1, 339, 343, 352, 265, + -1, 353, -1, 352, 262, 353, -1, 224, -1, 224, + 344, -1, 315, -1, 259, 355, 260, -1, 259, 355, + 262, 260, -1, 354, -1, 355, 262, 354, -1, 319, + -1, 359, -1, 358, -1, 356, -1, 368, -1, 369, + -1, 372, -1, 375, -1, 376, -1, 383, -1, 259, + 260, -1, -1, -1, 259, 360, 367, 361, 260, -1, + 366, -1, 358, -1, -1, 364, 359, -1, -1, 365, + 358, -1, 259, 260, -1, 259, 367, 260, -1, 357, + -1, 367, 357, -1, 265, -1, 317, 265, -1, 19, + 255, 317, 256, 370, -1, 363, 17, 363, -1, 363, + -1, 317, -1, 332, 224, 264, 354, -1, -1, 22, + 255, 317, 256, 373, 259, 374, 260, -1, -1, 367, + -1, 23, 317, 263, -1, 24, 263, -1, -1, 223, + 255, 377, 371, 256, 362, -1, -1, 16, 378, 357, + 223, 255, 317, 256, 265, -1, -1, 18, 255, 379, + 380, 382, 256, 362, -1, 368, -1, 356, -1, 371, + -1, -1, 381, 265, -1, 381, 265, 317, -1, 15, + 265, -1, 14, 265, -1, 21, 265, -1, 21, 317, + 265, -1, 20, 265, -1, 385, -1, 384, 385, -1, + 386, -1, 319, -1, -1, 323, 387, 366, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 246, 246, 252, 255, 258, 262, 266, 270, 273, - 277, 280, 288, 291, 294, 297, 300, 305, 313, 320, - 327, 333, 337, 344, 347, 353, 360, 370, 378, 383, - 413, 419, 423, 427, 447, 448, 449, 450, 456, 457, - 462, 467, 476, 477, 482, 490, 491, 497, 506, 507, - 512, 517, 522, 530, 531, 539, 550, 551, 560, 561, - 570, 571, 580, 581, 589, 590, 598, 599, 607, 608, - 608, 626, 627, 642, 646, 650, 654, 659, 663, 667, - 671, 675, 679, 683, 690, 693, 704, 711, 716, 721, - 729, 733, 737, 741, 746, 751, 760, 760, 771, 775, - 782, 789, 792, 799, 807, 827, 845, 860, 883, 894, - 904, 914, 924, 933, 936, 940, 944, 949, 957, 962, - 967, 972, 977, 986, 997, 1024, 1033, 1040, 1047, 1054, - 1066, 1072, 1075, 1082, 1086, 1090, 1098, 1107, 1110, 1121, - 1124, 1127, 1131, 1135, 1139, 1146, 1150, 1162, 1176, 1181, - 1187, 1193, 1200, 1206, 1211, 1216, 1221, 1228, 1232, 1236, - 1240, 1244, 1248, 1254, 1266, 1269, 1274, 1278, 1287, 1292, - 1300, 1304, 1314, 1318, 1322, 1327, 1331, 1336, 1341, 1346, - 1350, 1355, 1360, 1365, 1371, 1377, 1383, 1388, 1393, 1398, - 1403, 1408, 1413, 1419, 1425, 1431, 1437, 1443, 1449, 1455, - 1461, 1467, 1472, 1477, 1482, 1487, 1492, 1497, 1502, 1507, - 1512, 1517, 1522, 1527, 1533, 1539, 1545, 1551, 1557, 1563, - 1569, 1575, 1581, 1587, 1593, 1599, 1604, 1609, 1614, 1619, - 1624, 1629, 1634, 1639, 1644, 1649, 1654, 1659, 1664, 1669, - 1674, 1679, 1684, 1689, 1694, 1699, 1704, 1709, 1714, 1719, - 1724, 1729, 1734, 1739, 1744, 1749, 1754, 1759, 1764, 1769, - 1774, 1779, 1784, 1789, 1794, 1799, 1804, 1809, 1814, 1819, - 1824, 1829, 1834, 1839, 1844, 1849, 1854, 1859, 1864, 1869, - 1874, 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919, - 1924, 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964, 1969, - 1974, 1979, 1984, 1989, 1994, 1999, 2004, 2009, 2014, 2019, - 2024, 2029, 2034, 2039, 2044, 2049, 2054, 2059, 2064, 2069, - 2074, 2079, 2084, 2089, 2094, 2099, 2104, 2109, 2114, 2119, - 2124, 2129, 2134, 2139, 2144, 2150, 2156, 2162, 2168, 2174, - 2180, 2186, 2191, 2207, 2212, 2217, 2225, 2225, 2236, 2236, - 2246, 2249, 2262, 2280, 2304, 2308, 2314, 2319, 2330, 2333, - 2339, 2348, 2351, 2357, 2361, 2362, 2368, 2369, 2370, 2371, - 2372, 2373, 2374, 2378, 2379, 2383, 2379, 2395, 2396, 2400, - 2400, 2407, 2407, 2421, 2424, 2432, 2440, 2451, 2452, 2456, - 2463, 2467, 2475, 2479, 2492, 2492, 2512, 2515, 2521, 2533, - 2545, 2545, 2560, 2560, 2576, 2576, 2597, 2600, 2606, 2609, - 2615, 2619, 2626, 2631, 2636, 2643, 2646, 2655, 2659, 2666, - 2669, 2675, 2675 + 0, 250, 250, 256, 259, 262, 266, 270, 274, 277, + 281, 287, 290, 298, 301, 304, 307, 310, 315, 323, + 330, 337, 343, 347, 354, 357, 363, 370, 380, 388, + 393, 423, 429, 433, 437, 457, 458, 459, 460, 466, + 467, 472, 477, 486, 487, 492, 500, 501, 507, 516, + 517, 522, 527, 532, 540, 541, 549, 560, 561, 570, + 571, 580, 581, 590, 591, 599, 600, 608, 609, 617, + 618, 618, 636, 637, 652, 656, 660, 664, 669, 673, + 677, 681, 685, 689, 693, 700, 703, 714, 721, 726, + 731, 739, 743, 747, 751, 756, 761, 770, 770, 781, + 785, 792, 799, 802, 809, 817, 837, 855, 870, 893, + 904, 914, 924, 934, 943, 946, 950, 954, 959, 967, + 972, 977, 982, 987, 996, 1007, 1034, 1043, 1050, 1057, + 1064, 1076, 1082, 1085, 1092, 1096, 1100, 1108, 1117, 1120, + 1131, 1134, 1137, 1141, 1145, 1149, 1156, 1160, 1172, 1186, + 1191, 1197, 1203, 1210, 1216, 1221, 1226, 1231, 1238, 1242, + 1246, 1250, 1254, 1258, 1264, 1276, 1279, 1284, 1288, 1297, + 1302, 1310, 1314, 1324, 1328, 1332, 1337, 1344, 1348, 1353, + 1358, 1363, 1367, 1372, 1377, 1382, 1388, 1394, 1400, 1408, + 1416, 1424, 1429, 1434, 1439, 1444, 1449, 1454, 1460, 1466, + 1472, 1478, 1484, 1490, 1496, 1502, 1508, 1513, 1518, 1523, + 1528, 1533, 1538, 1543, 1548, 1553, 1558, 1563, 1568, 1574, + 1580, 1586, 1592, 1598, 1604, 1610, 1616, 1622, 1628, 1634, + 1640, 1648, 1656, 1664, 1672, 1680, 1688, 1696, 1704, 1712, + 1720, 1728, 1736, 1741, 1746, 1751, 1756, 1761, 1766, 1771, + 1776, 1781, 1786, 1791, 1796, 1801, 1806, 1811, 1816, 1821, + 1826, 1831, 1836, 1841, 1846, 1851, 1856, 1861, 1866, 1871, + 1876, 1881, 1886, 1891, 1896, 1901, 1906, 1911, 1916, 1921, + 1926, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, + 1976, 1981, 1986, 1991, 1996, 2001, 2006, 2011, 2016, 2021, + 2026, 2031, 2036, 2041, 2046, 2051, 2056, 2061, 2066, 2071, + 2076, 2081, 2086, 2091, 2096, 2101, 2106, 2111, 2116, 2121, + 2126, 2131, 2136, 2141, 2146, 2151, 2156, 2161, 2166, 2171, + 2176, 2181, 2186, 2191, 2196, 2201, 2206, 2211, 2216, 2221, + 2226, 2231, 2236, 2241, 2246, 2251, 2256, 2261, 2266, 2271, + 2276, 2281, 2287, 2293, 2299, 2305, 2311, 2317, 2323, 2328, + 2344, 2349, 2354, 2362, 2362, 2373, 2373, 2383, 2386, 2399, + 2417, 2441, 2445, 2451, 2456, 2467, 2470, 2476, 2485, 2488, + 2494, 2498, 2499, 2505, 2506, 2507, 2508, 2509, 2510, 2511, + 2515, 2516, 2520, 2516, 2532, 2533, 2537, 2537, 2544, 2544, + 2558, 2561, 2569, 2577, 2588, 2589, 2593, 2600, 2604, 2612, + 2616, 2629, 2629, 2649, 2652, 2658, 2670, 2682, 2682, 2697, + 2697, 2713, 2713, 2734, 2737, 2743, 2746, 2752, 2756, 2763, + 2768, 2773, 2780, 2783, 2792, 2796, 2803, 2806, 2812, 2812 }; #endif @@ -839,31 +1017,34 @@ static const yytype_uint16 yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "CONST", "BOOL", - "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "BREAK", - "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", - "CASE", "DEFAULT", "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", "IVEC2", - "IVEC3", "IVEC4", "I64VEC2", "I64VEC3", "I64VEC4", "UVEC2", "UVEC3", - "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4", "VEC2", "VEC3", "VEC4", "MAT2", - "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT", "UNIFORM", "PATCH", - "SAMPLE", "BUFFER", "SHARED", "COHERENT", "VOLATILE", "RESTRICT", - "READONLY", "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", - "DMAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", + "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "FLOAT16_T", + "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", + "SWITCH", "CASE", "DEFAULT", "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", + "IVEC2", "IVEC3", "IVEC4", "I64VEC2", "I64VEC3", "I64VEC4", "UVEC2", + "UVEC3", "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4", "VEC2", "VEC3", + "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT", + "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", "COHERENT", "VOLATILE", + "RESTRICT", "READONLY", "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", + "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", + "F16MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", - "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", - "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", - "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", - "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", - "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", - "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", - "USAMPLER2DARRAY", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", - "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", - "USAMPLERBUFFER", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", - "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", - "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", - "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW", - "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY", + "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", + "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "ATOMIC_UINT", + "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", + "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", + "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", + "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", + "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", + "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", + "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", + "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", + "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", + "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", + "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", + "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", + "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY", "TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY", @@ -882,11 +1063,11 @@ static const char *const yytname[] = "UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", "STRUCT", "VOID", "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", "INTCONSTANT", "UINTCONSTANT", "INT64CONSTANT", - "UINT64CONSTANT", "BOOLCONSTANT", "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", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", + "UINT64CONSTANT", "BOOLCONSTANT", "FLOAT16CONSTANT", "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", "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", @@ -925,13 +1106,13 @@ static const char *const yytname[] = "switch_statement_list", "case_label", "iteration_statement", "$@10", "$@11", "$@12", "for_init_statement", "conditionopt", "for_rest_statement", "jump_statement", "translation_unit", - "external_declaration", "function_definition", "$@13", YY_NULLPTR + "external_declaration", "function_definition", "$@13", YY_NULL }; #endif # ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -961,448 +1142,363 @@ static const yytype_uint16 yytoknum[] = 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 + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542 }; # endif -#define YYPACT_NINF -495 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-495))) - -#define YYTABLE_NINF -380 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = { - 2402, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -216, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -198, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -190, -495, -495, -495, -495, -495, -495, -495, - -127, -495, -189, -193, -158, -149, 3885, -207, -495, -98, - -495, -495, -495, -495, 2910, -495, -495, -495, -106, -495, - -495, 547, -495, -495, -62, -45, -90, -495, 5757, -217, - -495, -495, -86, -495, 3885, -495, -495, -495, 3885, -51, - -50, -495, -208, -155, -495, -495, -495, 4339, -81, -495, - -495, -495, -185, -495, -87, -157, -495, -495, 3885, -83, - -495, -204, 812, -495, -495, -495, -495, -106, -183, -495, - 4575, -162, -495, -47, -495, -119, -495, -495, -495, -495, - -495, -495, -495, -495, 5291, 5291, 5291, -495, -495, -495, - -495, -495, -495, -495, -195, -495, -495, -495, -77, -150, - 5524, -72, -495, 5291, -111, -144, -167, -194, -147, -93, - -91, -89, -55, -56, -213, -69, -495, 4822, -495, -36, - 5291, -495, -45, 3885, 3885, -34, 3156, -495, -495, -495, - -73, -71, -495, -60, -59, -66, 5058, -54, 5291, -70, - -49, -58, -495, -495, -163, -495, -495, -118, -495, -193, - -46, -495, -495, -495, -495, 1077, -495, -495, -495, -495, - -495, -495, -81, 4575, -161, 4575, -495, -495, 4575, 3885, - -495, -25, -495, -495, -495, -145, -495, -495, 5291, -21, - -495, -495, 5291, -48, -495, -495, -495, 5291, 5291, 5291, - 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, - 5291, 5291, 5291, 5291, 5291, 5291, -495, -495, -495, -44, - -495, -495, -495, -495, 3399, -34, -106, -117, -495, -495, - -495, -495, -495, 1342, -495, 5291, -495, -495, -113, 5291, - -154, -495, -495, -495, 1342, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, 5291, 5291, -495, -495, - -495, -495, 4575, -495, -92, -495, 3642, -495, -495, -43, - -57, -495, -495, -495, -495, -495, -111, -111, -144, -144, - -167, -167, -167, -167, -194, -194, -147, -93, -91, -89, - -55, -56, 5291, -495, -495, -112, -81, -34, -495, -14, - 2137, -136, -495, -134, -495, 2646, 1342, -495, -495, -495, - -495, 4092, -495, -495, -131, -495, -495, -42, -495, -495, - 2646, -39, -495, -57, -9, 3885, -35, -38, -495, -495, - 5291, 5291, -495, -41, -31, 184, -32, 1872, -495, -30, - -29, 1607, -495, -495, -132, 5291, 1607, -39, -495, -495, - 1342, 4575, -495, -495, -495, -37, -57, -495, -495, 1342, - -27, -495, -495, -495 + 0, 288, 289, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 291, 291, 291, 291, 291, 291, 292, + 293, 294, 295, 295, 296, 296, 297, 297, 298, 299, + 299, 300, 300, 300, 300, 301, 301, 301, 301, 302, + 302, 302, 302, 303, 303, 303, 304, 304, 304, 305, + 305, 305, 305, 305, 306, 306, 306, 307, 307, 308, + 308, 309, 309, 310, 310, 311, 311, 312, 312, 313, + 314, 313, 315, 315, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 317, 317, 318, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 321, 320, 322, + 322, 323, 324, 324, 325, 325, 326, 327, 327, 328, + 328, 328, 328, 329, 330, 330, 330, 330, 330, 331, + 331, 331, 331, 331, 332, 332, 333, 334, 334, 334, + 334, 335, 336, 336, 337, 337, 337, 338, 339, 339, + 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 342, 342, 343, 343, 344, + 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 348, 347, 349, 347, 350, 350, 351, + 351, 352, 352, 353, 353, 354, 354, 354, 355, 355, + 356, 357, 357, 358, 358, 358, 358, 358, 358, 358, + 359, 360, 361, 359, 362, 362, 364, 363, 365, 363, + 366, 366, 367, 367, 368, 368, 369, 370, 370, 371, + 371, 373, 372, 374, 374, 375, 375, 377, 376, 378, + 376, 379, 376, 380, 380, 381, 381, 382, 382, 383, + 383, 383, 383, 383, 384, 384, 385, 385, 387, 386 }; - /* 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. */ +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 4, 1, 3, 2, 2, 1, + 1, 1, 2, 2, 2, 1, 2, 3, 2, 1, + 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, + 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, + 4, 2, 3, 4, 2, 3, 4, 0, 6, 2, + 3, 2, 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, 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, 4, 1, 3, 1, 2, 2, + 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 0, 5, 1, 1, 0, 2, 0, 2, + 2, 3, 1, 2, 1, 2, 5, 3, 1, 1, + 4, 0, 8, 0, 1, 3, 2, 0, 6, 0, + 8, 0, 7, 1, 1, 1, 0, 2, 3, 2, + 2, 2, 3, 2, 1, 2, 1, 1, 0, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 146, 147, 145, 179, 173, 174, 175, 176, 177, - 178, 162, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 180, 181, 182, - 201, 202, 203, 151, 149, 150, 148, 154, 152, 153, - 155, 156, 157, 158, 159, 160, 161, 183, 184, 185, - 213, 214, 215, 128, 127, 126, 0, 129, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 239, 240, - 241, 242, 243, 244, 246, 247, 248, 249, 250, 251, - 253, 254, 255, 256, 257, 258, 259, 237, 238, 245, - 252, 260, 261, 262, 263, 264, 265, 334, 266, 267, - 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, - 279, 280, 282, 283, 284, 285, 286, 287, 289, 290, - 291, 292, 293, 294, 274, 281, 288, 295, 296, 297, - 298, 299, 300, 335, 336, 337, 338, 339, 340, 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, 0, 172, 342, 125, 136, 343, 344, 345, - 0, 420, 0, 421, 0, 102, 101, 0, 113, 118, - 143, 142, 140, 144, 0, 137, 139, 123, 166, 141, - 341, 0, 417, 419, 0, 0, 0, 348, 0, 0, - 90, 87, 0, 100, 0, 109, 103, 111, 0, 112, - 0, 88, 119, 0, 93, 138, 124, 0, 167, 1, - 418, 164, 0, 135, 133, 0, 131, 346, 0, 0, - 91, 0, 0, 422, 104, 108, 110, 106, 114, 105, - 0, 120, 96, 0, 94, 0, 2, 8, 9, 4, - 5, 6, 7, 10, 0, 0, 0, 168, 36, 35, - 37, 34, 3, 12, 30, 14, 19, 20, 0, 0, - 24, 0, 38, 0, 42, 45, 48, 53, 56, 58, - 60, 62, 64, 66, 68, 0, 28, 0, 163, 0, - 0, 130, 0, 0, 0, 0, 0, 350, 89, 92, - 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, - 0, 374, 383, 387, 38, 71, 84, 0, 363, 0, - 123, 366, 385, 365, 364, 0, 367, 368, 369, 370, - 371, 372, 107, 0, 115, 0, 358, 122, 0, 0, - 98, 0, 95, 31, 32, 0, 16, 17, 0, 0, - 22, 21, 0, 172, 25, 27, 33, 0, 0, 0, + 0, 147, 148, 146, 181, 174, 175, 177, 178, 179, + 180, 176, 163, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 182, 183, + 184, 206, 207, 208, 152, 150, 151, 149, 155, 153, + 154, 156, 157, 158, 159, 160, 161, 162, 185, 186, + 187, 218, 219, 220, 188, 189, 190, 230, 231, 232, + 129, 128, 127, 0, 130, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 256, 257, 258, 259, 260, 261, + 263, 264, 265, 266, 267, 268, 270, 271, 272, 273, + 274, 275, 276, 254, 255, 262, 269, 277, 278, 279, + 280, 281, 282, 351, 283, 284, 285, 286, 287, 288, + 289, 290, 292, 293, 294, 295, 296, 297, 299, 300, + 301, 302, 303, 304, 306, 307, 308, 309, 310, 311, + 291, 298, 305, 312, 313, 314, 315, 316, 317, 352, + 353, 354, 355, 356, 357, 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, 0, 173, + 359, 126, 137, 360, 361, 362, 0, 437, 0, 438, + 0, 103, 102, 0, 114, 119, 144, 143, 141, 145, + 0, 138, 140, 124, 167, 142, 358, 0, 434, 436, + 0, 0, 0, 365, 0, 0, 91, 88, 0, 101, + 0, 110, 104, 112, 0, 113, 0, 89, 120, 0, + 94, 139, 125, 0, 168, 1, 435, 165, 0, 136, + 134, 0, 132, 363, 0, 0, 92, 0, 0, 439, + 105, 109, 111, 107, 115, 106, 0, 121, 97, 0, + 95, 0, 2, 8, 9, 4, 5, 6, 7, 11, + 10, 0, 0, 0, 169, 37, 36, 38, 35, 3, + 13, 31, 15, 20, 21, 0, 0, 25, 0, 39, + 0, 43, 46, 49, 54, 57, 59, 61, 63, 65, + 67, 69, 0, 29, 0, 164, 0, 0, 131, 0, + 0, 0, 0, 0, 367, 90, 93, 0, 0, 419, + 0, 0, 0, 0, 0, 0, 0, 0, 391, 400, + 404, 39, 72, 85, 0, 380, 0, 124, 383, 402, + 382, 381, 0, 384, 385, 386, 387, 388, 389, 108, + 0, 116, 0, 375, 123, 0, 0, 99, 0, 96, + 32, 33, 0, 17, 18, 0, 0, 23, 22, 0, + 173, 26, 28, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 169, 170, 0, - 165, 86, 134, 132, 0, 0, 356, 0, 354, 349, - 351, 413, 412, 0, 404, 0, 416, 414, 0, 0, - 0, 399, 400, 373, 0, 74, 75, 77, 76, 79, - 80, 81, 82, 83, 78, 73, 0, 0, 388, 384, - 386, 117, 0, 361, 0, 121, 0, 99, 11, 0, - 18, 15, 26, 39, 40, 41, 44, 43, 46, 47, - 51, 52, 49, 50, 54, 55, 57, 59, 61, 63, - 65, 67, 0, 171, 347, 0, 357, 0, 352, 0, - 0, 0, 415, 0, 398, 0, 375, 72, 85, 116, - 359, 0, 97, 13, 0, 353, 355, 0, 407, 406, - 409, 381, 394, 392, 0, 0, 0, 0, 360, 362, - 0, 0, 408, 0, 0, 391, 0, 0, 389, 0, - 0, 0, 376, 70, 0, 410, 0, 381, 380, 382, - 396, 0, 378, 401, 377, 0, 411, 405, 390, 397, - 0, 393, 403, 395 + 0, 0, 0, 70, 170, 171, 0, 166, 87, 135, + 133, 0, 0, 373, 0, 371, 366, 368, 430, 429, + 0, 421, 0, 433, 431, 0, 0, 0, 416, 417, + 390, 0, 75, 76, 78, 77, 80, 81, 82, 83, + 84, 79, 74, 0, 0, 405, 401, 403, 118, 0, + 378, 0, 122, 0, 100, 12, 0, 19, 16, 27, + 40, 41, 42, 45, 44, 47, 48, 52, 53, 50, + 51, 55, 56, 58, 60, 62, 64, 66, 68, 0, + 172, 364, 0, 374, 0, 369, 0, 0, 0, 432, + 0, 415, 0, 392, 73, 86, 117, 376, 0, 98, + 14, 0, 370, 372, 0, 424, 423, 426, 398, 411, + 409, 0, 0, 0, 0, 377, 379, 0, 0, 425, + 0, 0, 408, 0, 0, 406, 0, 0, 0, 393, + 71, 0, 427, 0, 398, 397, 399, 413, 0, 395, + 418, 394, 0, 428, 422, 407, 414, 0, 410, 420, + 412 }; - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, - -495, -495, -53, -495, -271, -252, -272, -244, -187, -184, - -182, -181, -179, -186, -495, -237, -495, -266, -495, -280, - -495, 3, -495, -495, -495, 5, -495, -495, -495, -15, - -7, -5, -495, -495, -475, -495, -495, -495, -495, -85, - -495, -205, -212, -495, -495, 0, -221, -495, 29, -495, - -495, -495, -308, -310, -176, -251, -351, -495, -250, -348, - -494, -284, -495, -495, -293, -292, -495, -495, 12, -423, - -243, -495, -495, -264, -495, -495, -495, -495, -495, -495, - -495, -495, -495, -495, -495, -495, -495, 27, -495, -495 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 292, 293, 294, 459, 295, 296, 297, 298, 299, - 300, 301, 344, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 345, 482, 346, 446, 347, - 412, 348, 202, 369, 275, 349, 204, 205, 206, 235, - 236, 237, 207, 208, 209, 210, 211, 212, 255, 256, - 213, 214, 215, 216, 252, 316, 248, 218, 219, 220, - 323, 258, 326, 327, 417, 418, 367, 454, 351, 352, - 353, 354, 434, 517, 543, 525, 526, 527, 544, 355, - 356, 357, 528, 516, 358, 529, 550, 359, 360, 495, - 423, 490, 510, 523, 524, 361, 221, 222, 223, 232 + -1, 309, 310, 311, 476, 312, 313, 314, 315, 316, + 317, 318, 361, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 362, 499, 363, 463, 364, + 429, 365, 218, 386, 291, 366, 220, 221, 222, 251, + 252, 253, 223, 224, 225, 226, 227, 228, 271, 272, + 229, 230, 231, 232, 268, 333, 264, 234, 235, 236, + 340, 274, 343, 344, 434, 435, 384, 471, 368, 369, + 370, 371, 451, 534, 560, 542, 543, 544, 561, 372, + 373, 374, 545, 533, 375, 546, 567, 376, 377, 512, + 440, 507, 527, 540, 541, 378, 237, 238, 239, 248 }; - /* 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. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -512 +static const yytype_int16 yypact[] = +{ + 2538, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -235, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -201, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -203, -512, + -512, -512, -512, -512, -512, -512, -153, -512, -210, -220, + -152, -189, 4119, -160, -512, -128, -512, -512, -512, -512, + 3079, -512, -512, -512, -122, -512, -512, 564, -512, -512, + -72, -46, -105, -512, 6148, -216, -512, -512, -102, -512, + 4119, -512, -512, -512, 4119, -68, -66, -512, -225, -187, + -512, -512, -512, 4606, -98, -512, -512, -512, -179, -512, + -104, -172, -512, -512, 4119, -101, -512, -186, 846, -512, + -512, -512, -512, -122, -233, -512, 4870, -217, -512, -63, + -512, -151, -512, -512, -512, -512, -512, -512, -512, -512, + -512, 5648, 5648, 5648, -512, -512, -512, -512, -512, -512, + -512, -209, -512, -512, -512, -94, -170, 5898, -92, -512, + 5648, -139, -133, -109, -223, -103, -111, -108, -106, -71, + -74, -218, -86, -512, 5134, -512, -52, 5648, -512, -46, + 4119, 4119, -50, 3342, -512, -512, -512, -90, -89, -512, + -78, -76, -85, 5398, -70, 5648, -80, -69, -64, -512, + -512, -184, -512, -512, -150, -512, -220, -67, -512, -512, + -512, -512, 1128, -512, -512, -512, -512, -512, -512, -98, + 4870, -183, 4870, -512, -512, 4870, 4119, -512, -40, -512, + -512, -512, -169, -512, -512, 5648, -35, -512, -512, 5648, + -65, -512, -512, -512, 5648, 5648, 5648, 5648, 5648, 5648, + 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, + 5648, 5648, 5648, -512, -512, -512, -61, -512, -512, -512, + -512, 3601, -50, -122, -144, -512, -512, -512, -512, -512, + 1410, -512, 5648, -512, -512, -142, 5648, -123, -512, -512, + -512, 1410, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, 5648, 5648, -512, -512, -512, -512, 4870, + -512, -226, -512, 3860, -512, -512, -60, -62, -512, -512, + -512, -512, -512, -139, -139, -133, -133, -109, -109, -109, + -109, -223, -223, -103, -111, -108, -106, -71, -74, 5648, + -512, -512, -138, -98, -50, -512, -33, 2256, -168, -512, + -167, -512, 2798, 1410, -512, -512, -512, -512, 4342, -512, + -512, -121, -512, -512, -56, -512, -512, 2798, -58, -512, + -62, -32, 4119, -49, -51, -512, -512, 5648, 5648, -512, + -57, -45, 177, -55, 1974, -512, -47, -44, 1692, -512, + -512, -165, 5648, 1692, -58, -512, -512, 1410, 4870, -512, + -512, -512, -48, -62, -512, -512, 1410, -42, -512, -512, + -512 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -96, -512, -263, -262, -304, -264, -204, -199, + -205, -197, -206, -196, -512, -252, -512, -282, -512, -296, + -512, 3, -512, -512, -512, 6, -512, -512, -512, -29, + -23, -26, -512, -512, -489, -512, -512, -512, -512, -118, + -512, -221, -228, -512, -512, 0, -240, -512, 13, -512, + -512, -512, -328, -330, -200, -271, -363, -512, -273, -364, + -511, -308, -512, -512, -314, -309, -512, -512, -2, -441, + -260, -512, -512, -279, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, 12, -512, -512 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -397 static const yytype_int16 yytable[] = { - 217, 238, 245, 201, 366, 203, 375, 450, 261, 253, - 315, 496, 451, 405, 453, 414, 420, 455, 226, 229, - 514, 271, 224, 247, 376, 377, 245, 394, 395, 238, - 269, 260, 247, 539, 384, 514, 317, 542, 240, 270, - 225, 241, 542, -29, 329, 378, 362, 364, 406, 379, - 392, 393, 227, 324, 318, 231, 428, 247, 430, 230, - 319, 456, 396, 397, 363, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 489, 398, 399, 317, 317, - 409, 233, 321, 411, 445, 368, 452, 272, 322, 381, - 273, 447, 494, 274, 458, 382, 234, 366, 460, 366, - 447, 499, 366, 511, 420, 512, 390, 545, 391, 447, - 242, 447, 245, 447, 447, 520, 462, 549, 324, 466, - 467, 324, 470, 471, 472, 473, 371, 447, 487, 372, - 448, 488, 447, 487, 247, 492, 505, 197, 198, 199, - 468, 469, 387, 388, 389, 491, 420, 251, 450, 493, - 519, 500, 257, 501, 474, 475, 262, 267, 268, 317, - 320, 370, 380, 254, 324, 328, 385, 400, 401, 402, - 403, 404, 407, 410, 416, 421, 431, 422, 424, 425, - 497, 498, 426, 457, 429, 433, 366, 461, 447, 432, - 551, -23, -28, 507, 302, 486, 521, 483, 503, 530, - 537, 450, 504, -379, 531, 532, 239, 535, 536, 324, - 341, 552, 540, 476, 246, 513, 553, 477, 541, 481, - 478, 217, 479, 265, 201, 480, 203, 264, 259, 228, - 513, 373, 374, 266, 239, 366, 506, 413, 239, 485, - 508, 534, 538, 547, 263, 548, 522, 509, 250, 0, - 386, 324, 0, 0, 533, 546, 0, 0, 325, 0, - 0, 0, 350, 0, 302, 0, 0, 302, 0, 0, - 0, 0, 0, 0, 0, 366, 0, 0, 0, 0, + 233, 254, 261, 217, 383, 277, 219, 392, 467, 269, + 513, 332, 431, 437, 245, 411, 412, 468, 287, 470, + 240, 242, 472, 531, 263, 422, 261, 393, 394, 254, + 285, 380, 263, 556, 517, 401, 518, 559, 531, 286, + 334, 263, 559, 379, 381, 247, -30, 385, 395, 276, + 413, 414, 396, 341, 241, 246, 243, 445, 473, 447, + 423, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 334, 288, 250, 334, 289, 506, 335, 290, 346, + 462, 469, 426, 336, 338, 428, 398, 475, 528, 529, + 339, 562, 399, 464, 464, 464, 258, 464, 383, 477, + 383, 437, 256, 383, 249, 257, 516, 487, 488, 489, + 490, 388, 464, 261, 389, 465, 566, 479, 504, 341, + 464, 505, 341, 509, 504, 409, 410, 522, 213, 214, + 215, 404, 405, 406, 407, 263, 408, 415, 416, 464, + 511, 464, 537, 437, 483, 484, 508, 485, 486, 467, + 510, 491, 492, 267, 273, 536, 283, 278, 284, 334, + 337, 387, 397, 402, 345, 341, 417, 319, 418, 419, + 421, 420, 424, 427, 433, 438, 439, 441, 270, 442, + 443, 514, 515, 448, 474, 446, 449, 383, -29, 478, + 524, -24, 547, 503, 554, 568, 450, 500, 520, 538, + 464, -396, 467, 521, 358, 390, 391, 548, 552, 549, + 341, 553, 557, 493, 495, 497, 530, 569, 570, 494, + 558, 430, 255, 496, 403, 281, 498, 280, 282, 244, + 262, 530, 502, 523, 525, 555, 383, 233, 319, 564, + 217, 319, 551, 219, 275, 565, 279, 526, 539, 266, + 255, 0, 341, 0, 255, 550, 563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 245, 0, 515, 0, 0, 0, 0, + 0, 0, 0, 0, 342, 0, 383, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 325, 415, 0, 325, 0, 0, 0, - 0, 0, 0, 0, 463, 464, 465, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 0, 0, 350, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, + 0, 532, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 0, 532, 0, 480, 481, + 482, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 342, 432, 0, 342, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 350, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, + 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, + 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 367, 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, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 350, 0, 0, 0, 0, 350, 350, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 350, 0, 0, 0, 0, 246, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 350, 0, 0, - 0, 350, 0, 0, 0, 0, 350, 0, 0, 0, - 350, 0, 0, 0, 0, 0, 0, 249, 0, 350, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 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, 0, 0, 194, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, + 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, + 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 367, 0, 0, 0, 367, 0, + 0, 0, 0, 367, 0, 0, 0, 367, 0, 0, + 0, 0, 0, 0, 265, 0, 367, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, - 196, 197, 198, 199, 200, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 330, 331, 332, 0, 333, - 334, 335, 336, 337, 338, 339, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, 340, - 276, 194, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 0, 0, 341, 342, 0, 0, 0, 0, - 343, 288, 289, 290, 291, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 195, 196, 197, 198, 199, 200, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, - 339, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 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, 340, 276, 194, 277, 278, 279, - 280, 281, 282, 283, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 286, 0, 0, 0, 341, - 449, 0, 0, 0, 0, 343, 288, 289, 290, 291, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, - 196, 197, 198, 199, 200, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 330, 331, 332, 0, 333, - 334, 335, 336, 337, 338, 339, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, 340, - 276, 194, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 0, 0, 341, 0, 0, 0, 0, 0, - 343, 288, 289, 290, 291, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 195, 196, 197, 198, 199, 200, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, - 339, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 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, 340, 276, 194, 277, 278, 279, - 280, 281, 282, 283, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 286, 0, 0, 0, 262, - 0, 0, 0, 0, 0, 343, 288, 289, 290, 291, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, - 196, 197, 198, 199, 200, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 330, 331, 332, 0, 333, - 334, 335, 336, 337, 338, 339, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, 340, - 276, 194, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 343, 288, 289, 290, 291, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 195, 196, 197, 198, 199, 200, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 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, 0, 276, 194, 277, 278, 279, - 280, 281, 282, 283, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 286, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 343, 288, 289, 290, 291, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, - 196, 197, 198, 199, 200, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, 0, - 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, - 0, 0, 0, 0, 195, 196, 197, 198, 199, 200, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 0, 0, 0, 211, 212, 213, 214, 215, 216, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, + 356, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, @@ -1420,15 +1516,45 @@ static const yytype_int16 yytable[] = 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 0, 276, 194, 277, 278, 279, 280, - 281, 282, 283, 0, 0, 284, 285, 0, 0, 0, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 357, + 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 286, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 288, 289, 290, 291, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 195, 196, - 197, 198, 199, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, + 0, 303, 0, 0, 0, 358, 359, 0, 0, 0, + 0, 360, 305, 306, 307, 308, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, + 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 355, 356, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, 357, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 0, 0, 0, 358, 466, 0, + 0, 0, 0, 360, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, + 214, 215, 216, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, @@ -1446,14 +1572,74 @@ static const yytype_int16 yytable[] = 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 0, 243, 194, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 357, 292, 210, 293, 294, 295, 296, + 297, 298, 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 303, 0, 0, 0, 358, + 0, 0, 0, 0, 0, 360, 305, 306, 307, 308, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, + 212, 213, 214, 215, 216, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 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, 357, 292, 210, 293, 294, + 295, 296, 297, 298, 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, + 0, 278, 0, 0, 0, 0, 0, 360, 305, 306, + 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 211, 212, 213, 214, 215, 216, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 347, 348, + 349, 0, 350, 351, 352, 353, 354, 355, 356, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, 357, 292, 210, + 293, 294, 295, 296, 297, 298, 299, 300, 0, 0, + 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, + 305, 306, 307, 308, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 211, 212, 213, 214, 215, 216, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 244, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, - 0, 0, 195, 196, 197, 198, 199, 0, 0, 0, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, @@ -1471,13 +1657,71 @@ static const yytype_int16 yytable[] = 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 0, 0, 194, 0, 0, 0, 0, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 0, + 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 360, 305, 306, 307, 308, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, + 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, - 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 0, 0, 0, 0, 0, 0, 195, 196, - 197, 198, 199, 11, 12, 13, 14, 15, 16, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 211, 212, 213, + 214, 215, 216, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, + 214, 215, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, @@ -1495,13 +1739,15 @@ static const yytype_int16 yytable[] = 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 0, 0, 194, 0, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 0, 259, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 484, 0, 0, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, - 0, 195, 196, 197, 198, 199, 11, 12, 13, 14, + 0, 0, 0, 0, 260, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 0, 0, 211, 212, + 213, 214, 215, 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, @@ -1519,14 +1765,415 @@ static const yytype_int16 yytable[] = 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 0, - 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 0, 0, 210, 0, 0, 0, 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, 0, 0, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, - 0, 0, 0, 0, 195, 196, 197, 198, 199, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 436, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, + 0, 211, 212, 213, 214, 215, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 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, 0, 0, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 501, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, + 211, 212, 213, 214, 215, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 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, 0, 0, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 519, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 0, 0, 0, 0, 0, 0, 211, + 212, 213, 214, 215, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, 0, 0, 210, 0, 0, 0, 4, 5, + 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 212, + 213, 214, 215, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 0, 292, 210, 293, 294, + 295, 296, 297, 298, 299, 300, 0, 0, 301, 302, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, + 0, 382, 535, 0, 0, 0, 0, 0, 305, 306, + 307, 308, 4, 5, 6, 7, 8, 9, 10, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, + 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 0, + 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 303, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 0, 305, 306, 307, 308, 4, 5, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 0, 0, 0, 0, 0, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 0, 292, 210, 293, 294, 295, 296, + 297, 298, 299, 300, 0, 0, 301, 302, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 303, 0, 0, 0, 382, + 0, 0, 0, 0, 0, 0, 305, 306, 307, 308, + 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, + 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 0, 292, 210, + 293, 294, 295, 296, 297, 298, 299, 300, 0, 0, + 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, + 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, + 305, 306, 307, 308, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 444, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 400, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 0, 210 +}; + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-512))) + +#define yytable_value_is_error(Yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 0, 222, 230, 0, 286, 245, 0, 303, 372, 55, + 451, 263, 340, 343, 224, 238, 239, 380, 258, 382, + 255, 224, 385, 512, 257, 243, 254, 236, 237, 250, + 255, 264, 257, 544, 260, 317, 262, 548, 527, 264, + 257, 257, 553, 283, 284, 265, 255, 264, 257, 265, + 273, 274, 261, 274, 255, 265, 259, 353, 386, 355, + 278, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 257, 259, 262, 257, 262, 440, 256, 265, 265, + 264, 264, 334, 262, 256, 337, 256, 256, 256, 256, + 262, 256, 262, 262, 262, 262, 224, 262, 380, 395, + 382, 431, 262, 385, 256, 265, 469, 411, 412, 413, + 414, 262, 262, 341, 265, 265, 557, 399, 262, 340, + 262, 265, 343, 265, 262, 234, 235, 265, 281, 282, + 283, 270, 271, 272, 267, 257, 269, 240, 241, 262, + 263, 262, 263, 473, 407, 408, 442, 409, 410, 513, + 446, 415, 416, 225, 259, 518, 224, 259, 224, 257, + 264, 224, 256, 255, 265, 386, 277, 263, 276, 275, + 244, 242, 258, 225, 224, 265, 265, 255, 224, 255, + 265, 463, 464, 263, 224, 255, 255, 469, 255, 224, + 223, 256, 224, 433, 17, 558, 260, 258, 258, 255, + 262, 259, 566, 499, 259, 301, 302, 256, 265, 260, + 431, 256, 259, 417, 419, 421, 512, 265, 260, 418, + 264, 339, 222, 420, 320, 254, 422, 250, 254, 216, + 230, 527, 432, 504, 507, 543, 518, 237, 334, 553, + 237, 337, 538, 237, 244, 554, 248, 507, 527, 237, + 250, -1, 473, -1, 254, 537, 552, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 274, -1, 558, -1, 278, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 532, -1, 527, -1, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 340, 341, -1, 343, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 372, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 431, -1, -1, -1, -1, -1, -1, -1, -1, + 440, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 473, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 507, -1, -1, + -1, -1, 512, 513, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, + -1, -1, 532, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 544, -1, -1, -1, 548, -1, + -1, -1, -1, 553, -1, -1, -1, 557, -1, -1, + -1, -1, -1, -1, 0, -1, 566, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 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, -1, -1, 225, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 279, 280, 281, 282, 283, 284, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, -1, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, + -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 255, -1, -1, -1, 259, 260, -1, -1, -1, + -1, 265, 266, 267, 268, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, @@ -1544,492 +2191,18 @@ static const yytype_int16 yytable[] = 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 0, 0, 194, 0, 0, 0, 4, 5, - 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 196, 197, - 198, 199, 47, 48, 49, 50, 51, 52, 0, 0, - 0, 0, 0, 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, 0, - 276, 194, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 0, 0, 365, 518, 0, 0, 0, 0, - 0, 288, 289, 290, 291, 4, 5, 6, 7, 8, - 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, - 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, - 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, 0, 276, 194, 277, - 278, 279, 280, 281, 282, 283, 0, 0, 284, 285, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 286, 0, 0, - 287, 4, 5, 6, 7, 8, 9, 10, 288, 289, - 290, 291, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 47, 48, 49, 50, 51, - 52, 0, 0, 0, 0, 0, 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, 0, 276, 194, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 286, 0, 0, 0, 365, 0, 0, - 0, 0, 0, 0, 288, 289, 290, 291, 4, 5, - 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 47, 48, 49, 50, 51, 52, 0, 0, - 0, 0, 0, 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, 0, - 276, 194, 277, 278, 279, 280, 281, 282, 283, 0, - 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 0, 408, 4, 5, 6, 7, 8, 9, - 10, 288, 289, 290, 291, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, - 49, 50, 51, 52, 0, 0, 0, 0, 0, 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, 0, 276, 194, 277, 278, - 279, 280, 281, 282, 283, 0, 0, 284, 285, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 286, 4, 5, 6, - 7, 8, 9, 10, 0, 0, 427, 288, 289, 290, - 291, 0, 0, 0, 0, 0, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 47, 48, 49, 50, 51, 52, 0, 0, 0, - 0, 0, 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, 0, 276, - 194, 277, 278, 279, 280, 281, 282, 283, 0, 0, - 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, - 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, - 288, 289, 290, 291, 0, 0, 0, 0, 0, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 0, 0, 0, 0, 0, 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, - 383, 0, 276, 194, 277, 278, 279, 280, 281, 282, - 283, 0, 0, 284, 285, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 4, 5, 6, 7, 8, 9, 10, - 0, 0, 0, 288, 289, 290, 291, 0, 0, 0, - 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, -1, -1, -1, 259, 260, -1, + -1, -1, -1, 265, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 0, 0, 0, 0, 0, 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, 0, 0, 194 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 206, 214, 0, 270, 0, 286, 355, 229, 54, - 247, 434, 363, 226, 365, 323, 326, 368, 208, 208, - 495, 242, 238, 240, 219, 220, 238, 221, 222, 234, - 238, 248, 240, 527, 300, 510, 240, 531, 245, 247, - 238, 248, 536, 238, 248, 240, 267, 268, 261, 244, - 217, 218, 242, 258, 239, 248, 336, 240, 338, 248, - 245, 369, 256, 257, 247, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 423, 223, 224, 240, 240, - 317, 239, 239, 320, 247, 247, 247, 242, 245, 239, - 245, 245, 246, 248, 239, 245, 245, 363, 378, 365, - 245, 452, 368, 239, 414, 239, 250, 239, 252, 245, - 208, 245, 324, 245, 245, 246, 382, 540, 323, 390, - 391, 326, 394, 395, 396, 397, 245, 245, 245, 248, - 248, 248, 245, 245, 240, 248, 248, 264, 265, 266, - 392, 393, 253, 254, 255, 425, 456, 209, 496, 429, - 501, 243, 242, 245, 398, 399, 242, 208, 208, 240, - 247, 208, 239, 208, 369, 248, 238, 260, 259, 258, - 225, 227, 241, 209, 208, 248, 246, 248, 238, 238, - 446, 447, 248, 208, 238, 243, 452, 208, 245, 238, - 541, 239, 238, 207, 247, 416, 238, 241, 241, 208, - 16, 549, 482, 242, 239, 243, 206, 248, 239, 414, - 242, 248, 242, 400, 214, 495, 243, 401, 247, 405, - 402, 221, 403, 238, 221, 404, 221, 234, 228, 200, - 510, 284, 285, 238, 234, 501, 487, 322, 238, 415, - 490, 521, 526, 536, 232, 537, 510, 490, 221, -1, - 303, 456, -1, -1, 520, 535, -1, -1, 258, -1, - -1, -1, 262, -1, 317, -1, -1, 320, -1, -1, - -1, -1, -1, -1, -1, 541, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 495, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 515, -1, 510, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 323, 324, -1, 326, -1, -1, -1, - -1, -1, -1, -1, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, -1, -1, 355, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 369, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -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, -1, -1, -1, -1, -1, - -1, -1, -1, 423, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 434, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 456, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 490, -1, -1, -1, -1, 495, 496, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 510, -1, -1, -1, -1, 515, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, - -1, 531, -1, -1, -1, -1, 536, -1, -1, -1, - 540, -1, -1, -1, -1, -1, -1, 0, -1, 549, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, 209, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, - 263, 264, 265, 266, 267, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, -1, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, - -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 238, -1, -1, -1, 242, 243, -1, -1, -1, -1, - 248, 249, 250, 251, 252, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, -1, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, 219, 220, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 238, -1, -1, -1, 242, - 243, -1, -1, -1, -1, 248, 249, 250, 251, 252, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, - 263, 264, 265, 266, 267, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, -1, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, - -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 238, -1, -1, -1, 242, -1, -1, -1, -1, -1, - 248, 249, 250, 251, 252, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, -1, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, 219, 220, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 238, -1, -1, -1, 242, - -1, -1, -1, -1, -1, 248, 249, 250, 251, 252, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, - 263, 264, 265, 266, 267, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, -1, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, - -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 248, 249, 250, 251, 252, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, -1, -1, 219, 220, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 238, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 248, 249, 250, 251, 252, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, - 263, 264, 265, 266, 267, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, - -1, 209, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, 208, 209, 210, 211, 212, 213, - 214, 215, 216, -1, -1, 219, 220, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 238, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 249, 250, 251, 252, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, - 264, 265, 266, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, @@ -2047,62 +2220,17 @@ static const yytype_int16 yycheck[] = 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, -1, 208, 209, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 248, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, -1, 262, 263, 264, 265, 266, -1, -1, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, 209, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, 262, 263, - 264, 265, 266, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 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, -1, -1, 209, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 243, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, 262, 263, 264, 265, 266, 24, 25, 26, 27, + -1, -1, -1, -1, -1, 255, -1, -1, -1, 259, + -1, -1, -1, -1, -1, 265, 266, 267, 268, 269, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 284, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, @@ -2120,182 +2248,22 @@ static const yytype_int16 yycheck[] = 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, -1, - -1, 209, -1, -1, -1, -1, -1, -1, -1, -1, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 243, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - -1, -1, -1, -1, 262, 263, 264, 265, 266, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, -1, -1, 209, -1, -1, -1, 6, 7, - 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, - 265, 266, 60, 61, 62, 63, 64, 65, -1, -1, - -1, -1, -1, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, -1, - 208, 209, 210, 211, 212, 213, 214, 215, 216, -1, - -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 238, -1, -1, -1, 242, 243, -1, -1, -1, -1, - -1, 249, 250, 251, 252, 6, 7, 8, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, -1, -1, 219, 220, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 238, -1, -1, - 241, 6, 7, 8, 9, 10, 11, 12, 249, 250, - 251, 252, -1, -1, -1, -1, -1, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, -1, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, -1, -1, 219, 220, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 238, -1, -1, -1, 242, -1, -1, - -1, -1, -1, -1, 249, 250, 251, 252, 6, 7, - 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, 63, 64, 65, -1, -1, - -1, -1, -1, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, -1, - 208, 209, 210, 211, 212, 213, 214, 215, 216, -1, - -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 238, -1, -1, 241, 6, 7, 8, 9, 10, 11, - 12, 249, 250, 251, 252, -1, -1, -1, -1, -1, - -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, -1, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, -1, 208, 209, 210, 211, - 212, 213, 214, 215, 216, -1, -1, 219, 220, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 238, 6, 7, 8, - 9, 10, 11, 12, -1, -1, 248, 249, 250, 251, - 252, -1, -1, -1, -1, -1, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, -1, -1, - 219, 220, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 238, - 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, - 249, 250, 251, 252, -1, -1, -1, -1, -1, 25, + -1, -1, -1, -1, -1, -1, -1, 255, -1, -1, + -1, 259, -1, -1, -1, -1, -1, 265, 266, 267, + 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 279, 280, 281, 282, 283, 284, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 64, 65, - -1, -1, -1, -1, -1, 71, 72, 73, 74, 75, + 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, @@ -2309,38 +2277,434 @@ static const yytype_int16 yycheck[] = 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, -1, 208, 209, 210, 211, 212, 213, 214, 215, - 216, -1, -1, 219, 220, -1, -1, -1, -1, -1, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, + 266, 267, 268, 269, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 279, 280, 281, 282, 283, 284, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 238, 6, 7, 8, 9, 10, 11, 12, - -1, -1, -1, 249, 250, 251, 252, -1, -1, -1, - -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, -1, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, -1, -1, 209 + -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 255, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 265, 266, 267, 268, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 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, -1, -1, 225, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 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, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 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, -1, 224, 225, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 265, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, -1, -1, 279, 280, + 281, 282, 283, -1, -1, -1, -1, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 225, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 260, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, + -1, 279, 280, 281, 282, 283, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 225, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 260, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + 279, 280, 281, 282, 283, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 225, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 260, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, -1, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 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, -1, -1, 225, -1, -1, -1, 6, 7, + 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, -1, -1, -1, -1, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, -1, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 255, -1, -1, + -1, 259, 260, -1, -1, -1, -1, -1, 266, 267, + 268, 269, 6, 7, 8, 9, 10, 11, 12, 13, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, + -1, -1, -1, -1, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 255, -1, -1, 258, -1, -1, -1, -1, -1, + -1, -1, 266, 267, 268, 269, 6, 7, 8, 9, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, -1, -1, -1, -1, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, -1, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 255, -1, -1, -1, 259, + -1, -1, -1, -1, -1, -1, 266, 267, 268, 269, + 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, -1, -1, -1, + -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, -1, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + -1, -1, 258, -1, -1, -1, -1, -1, -1, -1, + 266, 267, 268, 269, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, + 12, 13, -1, 265, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 12, 13, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, @@ -2358,151 +2722,71 @@ static const yytype_uint16 yystos[] = 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 209, 262, 263, 264, 265, 266, - 267, 302, 303, 306, 307, 308, 309, 313, 314, 315, - 316, 317, 318, 321, 322, 323, 324, 326, 328, 329, - 330, 367, 368, 369, 238, 238, 208, 242, 329, 208, - 248, 248, 370, 239, 245, 310, 311, 312, 322, 326, - 245, 248, 208, 208, 248, 323, 326, 240, 327, 0, - 368, 209, 325, 54, 208, 319, 320, 242, 332, 326, - 248, 327, 242, 349, 311, 310, 312, 208, 208, 238, - 247, 327, 242, 245, 248, 305, 208, 210, 211, 212, - 213, 214, 215, 216, 219, 220, 238, 241, 249, 250, - 251, 252, 272, 273, 274, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 326, 240, 239, 245, - 247, 239, 245, 331, 322, 326, 333, 334, 248, 248, - 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, - 207, 242, 243, 248, 283, 296, 298, 300, 302, 306, - 326, 339, 340, 341, 342, 350, 351, 352, 355, 358, - 359, 366, 327, 247, 327, 242, 298, 337, 247, 304, - 208, 245, 248, 283, 283, 300, 219, 220, 240, 244, - 239, 239, 245, 206, 298, 238, 283, 253, 254, 255, - 250, 252, 217, 218, 221, 222, 256, 257, 223, 224, - 260, 259, 258, 225, 227, 226, 261, 241, 241, 296, - 209, 296, 301, 320, 333, 326, 208, 335, 336, 243, - 334, 248, 248, 361, 238, 238, 248, 248, 300, 238, - 300, 246, 238, 243, 343, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 247, 299, 245, 248, 243, - 340, 337, 247, 337, 338, 337, 333, 208, 239, 275, - 300, 208, 298, 283, 283, 283, 285, 285, 286, 286, - 287, 287, 287, 287, 288, 288, 289, 290, 291, 292, - 293, 294, 297, 241, 243, 335, 327, 245, 248, 340, - 362, 300, 248, 300, 246, 360, 350, 298, 298, 337, - 243, 245, 243, 241, 300, 248, 336, 207, 339, 351, - 363, 239, 239, 300, 315, 322, 354, 344, 243, 337, - 246, 238, 354, 364, 365, 346, 347, 348, 353, 356, - 208, 239, 243, 298, 300, 248, 239, 16, 342, 341, - 242, 247, 341, 345, 349, 239, 300, 345, 346, 350, - 357, 337, 248, 243 + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 225, 279, 280, 281, 282, 283, 284, 319, 320, 323, + 324, 325, 326, 330, 331, 332, 333, 334, 335, 338, + 339, 340, 341, 343, 345, 346, 347, 384, 385, 386, + 255, 255, 224, 259, 346, 224, 265, 265, 387, 256, + 262, 327, 328, 329, 339, 343, 262, 265, 224, 224, + 265, 340, 343, 257, 344, 0, 385, 225, 342, 55, + 224, 336, 337, 259, 349, 343, 265, 344, 259, 366, + 328, 327, 329, 224, 224, 255, 264, 344, 259, 262, + 265, 322, 224, 226, 227, 228, 229, 230, 231, 232, + 233, 236, 237, 255, 258, 266, 267, 268, 269, 289, + 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 343, 257, 256, 262, 264, 256, 262, + 348, 339, 343, 350, 351, 265, 265, 14, 15, 16, + 18, 19, 20, 21, 22, 23, 24, 223, 259, 260, + 265, 300, 313, 315, 317, 319, 323, 343, 356, 357, + 358, 359, 367, 368, 369, 372, 375, 376, 383, 344, + 264, 344, 259, 315, 354, 264, 321, 224, 262, 265, + 300, 300, 317, 236, 237, 257, 261, 256, 256, 262, + 222, 315, 255, 300, 270, 271, 272, 267, 269, 234, + 235, 238, 239, 273, 274, 240, 241, 277, 276, 275, + 242, 244, 243, 278, 258, 258, 313, 225, 313, 318, + 337, 350, 343, 224, 352, 353, 260, 351, 265, 265, + 378, 255, 255, 265, 265, 317, 255, 317, 263, 255, + 260, 360, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 264, 316, 262, 265, 260, 357, 354, 264, + 354, 355, 354, 350, 224, 256, 292, 317, 224, 315, + 300, 300, 300, 302, 302, 303, 303, 304, 304, 304, + 304, 305, 305, 306, 307, 308, 309, 310, 311, 314, + 258, 260, 352, 344, 262, 265, 357, 379, 317, 265, + 317, 263, 377, 367, 315, 315, 354, 260, 262, 260, + 258, 317, 265, 353, 223, 356, 368, 380, 256, 256, + 317, 332, 339, 371, 361, 260, 354, 263, 255, 371, + 381, 382, 363, 364, 365, 370, 373, 224, 256, 260, + 315, 317, 265, 256, 17, 359, 358, 259, 264, 358, + 362, 366, 256, 317, 362, 363, 367, 374, 354, 265, + 260 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 271, 272, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 274, 274, 274, 274, 274, 274, 275, 276, - 277, 278, 278, 279, 279, 280, 280, 281, 282, 282, - 283, 283, 283, 283, 284, 284, 284, 284, 285, 285, - 285, 285, 286, 286, 286, 287, 287, 287, 288, 288, - 288, 288, 288, 289, 289, 289, 290, 290, 291, 291, - 292, 292, 293, 293, 294, 294, 295, 295, 296, 297, - 296, 298, 298, 299, 299, 299, 299, 299, 299, 299, - 299, 299, 299, 299, 300, 300, 301, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 304, 303, 305, 305, - 306, 307, 307, 308, 308, 309, 310, 310, 311, 311, - 311, 311, 312, 313, 313, 313, 313, 313, 314, 314, - 314, 314, 314, 315, 315, 316, 317, 317, 317, 317, - 318, 319, 319, 320, 320, 320, 321, 322, 322, 323, - 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 325, 325, 326, 326, 327, 327, - 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 329, 329, 329, 331, 330, 332, 330, - 333, 333, 334, 334, 335, 335, 336, 336, 337, 337, - 337, 338, 338, 339, 340, 340, 341, 341, 341, 341, - 341, 341, 341, 342, 343, 344, 342, 345, 345, 347, - 346, 348, 346, 349, 349, 350, 350, 351, 351, 352, - 353, 353, 354, 354, 356, 355, 357, 357, 358, 358, - 360, 359, 361, 359, 362, 359, 363, 363, 364, 364, - 365, 365, 366, 366, 366, 366, 366, 367, 367, 368, - 368, 370, 369 -}; +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 4, 1, 3, 2, 2, 1, 1, - 1, 2, 2, 2, 1, 2, 3, 2, 1, 1, - 1, 2, 2, 2, 1, 1, 1, 1, 1, 3, - 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, - 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, - 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 2, 2, 4, - 2, 3, 4, 2, 3, 4, 0, 6, 2, 3, - 2, 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, - 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, 4, 1, 3, 1, 2, 2, 3, - 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 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, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 0, 5, 1, 1, 0, - 2, 0, 2, 2, 3, 1, 2, 1, 2, 5, - 3, 1, 1, 4, 0, 8, 0, 1, 3, 2, - 0, 6, 0, 8, 0, 7, 1, 1, 1, 0, - 2, 3, 2, 2, 2, 3, 2, 1, 2, 1, - 1, 0, 3 -}; +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) @@ -2519,15 +2803,27 @@ do \ else \ { \ yyerror (pParseContext, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) + YYERROR; \ + } \ +while (YYID (0)) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, parseContext) +#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -2537,47 +2833,58 @@ while (0) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (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, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, pParseContext); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, pParseContext); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif { FILE *yyo = yyoutput; YYUSE (yyo); - YYUSE (pParseContext); if (!yyvaluep) return; + YYUSE (pParseContext); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YYUSE (yytype); + switch (yytype) + { + default: + break; + } } @@ -2585,11 +2892,23 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue | Print this symbol on YYOUTPUT. | `--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif { - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext); YYFPRINTF (yyoutput, ")"); @@ -2600,8 +2919,16 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, gls | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2612,42 +2939,50 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) +#else +static void +yy_reduce_print (yyvsp, yyrule, pParseContext) + YYSTYPE *yyvsp; + int yyrule; + glslang::TParseContext* pParseContext; +#endif { - unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; + unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , pParseContext); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , pParseContext); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule, pParseContext); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, pParseContext); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -2661,7 +2996,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -2684,8 +3019,15 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -2701,8 +3043,16 @@ yystrlen (const char *yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { char *yyd = yydest; const char *yys = yysrc; @@ -2732,27 +3082,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -2775,11 +3125,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; + const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -2787,6 +3137,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -2836,7 +3190,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -2903,18 +3257,33 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, pParseContext) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + glslang::TParseContext* pParseContext; +#endif { YYUSE (yyvaluep); YYUSE (pParseContext); + if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } @@ -2924,18 +3293,56 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseCon | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (glslang::TParseContext* pParseContext) +#else +int +yyparse (pParseContext) + glslang::TParseContext* pParseContext; +#endif +#endif { /* The lookahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); +static YYSTYPE yyval_default; +# define YY_INITIAL_VALUE(Value) = Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); /* Number of syntax errors so far. */ int yynerrs; @@ -2945,8 +3352,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); int yyerrstatus; /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. + `yyss': related to states. + `yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -3014,23 +3421,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); - yyss = yyss1; - yyvs = yyvs1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -3038,22 +3445,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -3062,10 +3469,10 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -3094,7 +3501,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (&yylval, parseContext); + yychar = YYLEX; } if (yychar <= YYEOF) @@ -3159,7 +3566,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -3173,247 +3580,259 @@ yyreduce: switch (yyn) { case 2: -#line 246 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 250 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); + (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[(1) - (1)].lex).loc, (yyvsp[(1) - (1)].lex).symbol, (yyvsp[(1) - (1)].lex).string); } -#line 3181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 256 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 255 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 259 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 262 "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); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 266 "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); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i64, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 270 "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); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u64, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 274 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 277 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtDouble, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: -#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 281 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat16, (yyvsp[(1) - (1)].lex).loc, true); +#endif } -#line 3249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: -#line 280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 287 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); - if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) - (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).b, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: -#line 288 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 290 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 3267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: -#line 291 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 298 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: -#line 294 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 301 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.intermTypedNode), (yyvsp[(3) - (4)].interm.intermTypedNode)); } -#line 3283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: -#line 297 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 304 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: -#line 300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 307 "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)); + (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[(3) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode), *(yyvsp[(3) - (3)].lex).string); } -#line 3301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: -#line 305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 310 "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)); + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "++", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "++", EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); } -#line 3311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: -#line 313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 315 "glslang.y" { - parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "--", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "--", EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); } -#line 3320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: -#line 320 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 323 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); - delete (yyvsp[0].interm).function; + parseContext.integerCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]"); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: -#line 327 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 330 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[(1) - (1)].interm).loc, (yyvsp[(1) - (1)].interm).function, (yyvsp[(1) - (1)].interm).intermNode); + delete (yyvsp[(1) - (1)].interm).function; } -#line 3337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: -#line 333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 337 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm) = (yyvsp[(1) - (1)].interm); } -#line 3346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: -#line 337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 343 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; } -#line 3355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: -#line 344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 347 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; } -#line 3363 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: -#line 347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 354 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + (yyval.interm) = (yyvsp[(1) - (2)].interm); } -#line 3371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: -#line 353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 357 "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); + (yyval.interm) = (yyvsp[(1) - (1)].interm); } -#line 3383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: -#line 360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 363 "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); + param.type->shallowCopy((yyvsp[(2) - (2)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (2)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (2)].interm).function; + (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode); } -#line 3395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: -#line 370 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 370 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[(3) - (3)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (3)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (3)].interm).function; + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); } -#line 3403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: -#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 380 "glslang.y" { - // Constructor - (yyval.interm).intermNode = 0; - (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); + (yyval.interm) = (yyvsp[(1) - (2)].interm); } -#line 3413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: -#line 383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 388 "glslang.y" + { + // Constructor + (yyval.interm).intermNode = 0; + (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type)); + } + break; + + case 30: +/* Line 1792 of yacc.c */ +#line 393 "glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -3421,18 +3840,18 @@ yyreduce: (yyval.interm).function = 0; (yyval.interm).intermNode = 0; - TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); + TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode(); if (method) { (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); (yyval.interm).intermNode = method->getObject(); } else { - TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode(); + TIntermSymbol* symbol = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsSymbolNode(); if (symbol) { parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); (yyval.interm).function = function; } else - parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); } if ((yyval.interm).function == 0) { @@ -3441,3709 +3860,3916 @@ yyreduce: (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull); } } -#line 3445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 30: -#line 413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 3456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: -#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 423 "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)); + parseContext.variableCheck((yyvsp[(1) - (1)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + if (TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode()) + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 3465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: -#line 423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 429 "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)); + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "++", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "++", EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); } -#line 3474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: -#line 427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 433 "glslang.y" { - if ((yyvsp[-1].interm).op != EOpNull) { + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "--", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "--", EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } + break; + + case 34: +/* Line 1792 of yacc.c */ +#line 437 "glslang.y" + { + if ((yyvsp[(1) - (2)].interm).op != EOpNull) { char errorOp[2] = {0, 0}; - switch((yyvsp[-1].interm).op) { + switch((yyvsp[(1) - (2)].interm).op) { case EOpNegative: errorOp[0] = '-'; break; case EOpLogicalNot: errorOp[0] = '!'; break; case EOpBitwiseNot: errorOp[0] = '~'; break; default: break; // some compilers want this } - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].interm).loc, errorOp, (yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].interm).loc, errorOp, (yyvsp[(1) - (2)].interm).op, (yyvsp[(2) - (2)].interm.intermTypedNode)); } else { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 3495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 34: -#line 447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 3501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: -#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 3507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 457 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNull; } break; case 36: -#line 449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 3513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 458 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNegative; } break; case 37: -#line 450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 3520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 459 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLogicalNot; } break; case 38: -#line 456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 460 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpBitwiseNot; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise not"); } break; case 39: -#line 457 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (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 3536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 466 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 40: -#line 462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 467 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "*", EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: -#line 467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 472 "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)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "/", EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: -#line 476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 477 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "%"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "%", EOpMod, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 43: -#line 477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (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 3573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 486 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 44: -#line 482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 487 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "+", EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: -#line 490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 492 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "-", EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 46: -#line 491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 3600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 500 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 47: -#line 497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 501 "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)); + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift left"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<<", EOpLeftShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: -#line 506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 507 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift right"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">>", EOpRightShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 49: -#line 507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (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 3627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 516 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 50: -#line 512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 517 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<", EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: -#line 517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 522 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">", EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: -#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 527 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<=", EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: -#line 530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 532 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 54: -#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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(), "=="); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (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 3676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 540 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 55: -#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 541 "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(), "!="); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "==", EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: -#line 550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 549 "glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "!=", EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 57: -#line 551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 3706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 560 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 58: -#line 560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 561 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise and"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&", EOpAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 59: -#line 561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 3723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 570 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 60: -#line 570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 571 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise exclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^", EOpExclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 61: -#line 571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 3740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 580 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 62: -#line 580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 581 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise inclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "|", EOpInclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 63: -#line 581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (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 3756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 590 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 64: -#line 589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 591 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&&", EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 65: -#line 590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (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 3772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 599 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 66: -#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 600 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^^", EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 67: -#line 599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (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 3788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 608 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 68: -#line 607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 609 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "||", EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 69: -#line 608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; - } -#line 3802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 617 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 70: -#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 618 "glslang.y" { - --parseContext.controlFlowNestingLevel; - parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode)); - 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) { - parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } + ++parseContext.controlFlowNestingLevel; } -#line 3819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: -#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 621 "glslang.y" + { + --parseContext.controlFlowNestingLevel; + parseContext.boolCheck((yyvsp[(2) - (6)].lex).loc, (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (6)].lex).loc, "?", (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[(1) - (6)].interm.intermTypedNode), (yyvsp[(4) - (6)].interm.intermTypedNode), (yyvsp[(6) - (6)].interm.intermTypedNode), (yyvsp[(2) - (6)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(6) - (6)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(6) - (6)].interm.intermTypedNode); + } + } break; case 72: -#line 627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); - parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); - parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); - 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.intermediate.addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].interm).loc); - if ((yyval.interm.intermTypedNode) == 0) { - parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } - } -#line 3842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 636 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 73: -#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 637 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpAssign; + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array assignment"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.specializationCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.lValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(3) - (3)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].interm).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.assignError((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } } -#line 3851 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: -#line 646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 652 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpMulAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAssign; } -#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: -#line 650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 656 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpDivAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpMulAssign; } -#line 3869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: -#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 660 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpModAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpDivAssign; } -#line 3879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: -#line 659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 664 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpAddAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "%="); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpModAssign; } -#line 3888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: -#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 669 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpSubAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAddAssign; } -#line 3897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: -#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 673 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpSubAssign; } -#line 3906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: -#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 677 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift left assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 3915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: -#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 681 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift right assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 3924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: -#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 685 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-and assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 3933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: -#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 689 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-xor assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 3942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: -#line 690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 693 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-or assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 3950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: -#line 693 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 700 "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) == 0) { - parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: -#line 704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 703 "glslang.y" { - parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.samplerConstructorLocationCheck((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(3) - (3)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode); + } } -#line 3972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: -#line 711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 714 "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 + parseContext.constantValueCheck((yyvsp[(1) - (1)].interm.intermTypedNode), ""); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: -#line 716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 721 "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; + parseContext.handleFunctionDeclarator((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).function, true /* prototype */); + (yyval.interm.intermNode) = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 3992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: -#line 721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 726 "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 - 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; + if ((yyvsp[(1) - (2)].interm).intermNode && (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()) + (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermNode; } -#line 4005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: -#line 729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 731 "glslang.y" { - parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); + parseContext.profileRequires((yyvsp[(1) - (4)].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[(1) - (4)].lex).loc, (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 4014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: -#line 733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 739 "glslang.y" { - parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); + parseContext.declareBlock((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 4023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: -#line 737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 743 "glslang.y" { - parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); + parseContext.declareBlock((yyvsp[(1) - (3)].interm).loc, *(yyvsp[(1) - (3)].interm).typeList, (yyvsp[(2) - (3)].lex).string); (yyval.interm.intermNode) = 0; } -#line 4032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: -#line 741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 747 "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)); + parseContext.declareBlock((yyvsp[(1) - (4)].interm).loc, *(yyvsp[(1) - (4)].interm).typeList, (yyvsp[(2) - (4)].lex).string, (yyvsp[(3) - (4)].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 4042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: -#line 746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 751 "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); + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.updateStandaloneQualifierDefaults((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type)); (yyval.interm.intermNode) = 0; } -#line 4052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: -#line 751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 756 "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)); + parseContext.checkNoShaderLayouts((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).shaderQualifiers); + parseContext.addQualifierToExisting((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).qualifier, *(yyvsp[(2) - (3)].lex).string); (yyval.interm.intermNode) = 0; } -#line 4063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 96: -#line 760 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 4069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 761 "glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + (yyvsp[(3) - (4)].interm.identifierList)->push_back((yyvsp[(2) - (4)].lex).string); + parseContext.addQualifierToExisting((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier, *(yyvsp[(3) - (4)].interm.identifierList)); + (yyval.interm.intermNode) = 0; + } break; case 97: -#line 760 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - --parseContext.structNestingLevel; - parseContext.blockName = (yyvsp[-4].lex).string; - parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier); - parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers); - parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier; - (yyval.interm).loc = (yyvsp[-5].interm.type).loc; - (yyval.interm).typeList = (yyvsp[-1].interm.typeList); - } -#line 4083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 770 "glslang.y" + { parseContext.nestedBlockCheck((yyvsp[(1) - (3)].interm.type).loc); } break; case 98: -#line 771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 770 "glslang.y" { - (yyval.interm.identifierList) = new TIdentifierList; - (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); + --parseContext.structNestingLevel; + parseContext.blockName = (yyvsp[(2) - (6)].lex).string; + parseContext.globalQualifierFixCheck((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).qualifier); + parseContext.checkNoShaderLayouts((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).shaderQualifiers); + parseContext.currentBlockQualifier = (yyvsp[(1) - (6)].interm.type).qualifier; + (yyval.interm).loc = (yyvsp[(1) - (6)].interm.type).loc; + (yyval.interm).typeList = (yyvsp[(5) - (6)].interm.typeList); } -#line 4092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 99: -#line 775 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 781 "glslang.y" { - (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); - (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); + (yyval.interm.identifierList) = new TIdentifierList; + (yyval.interm.identifierList)->push_back((yyvsp[(2) - (2)].lex).string); } -#line 4101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 100: -#line 782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 785 "glslang.y" { - (yyval.interm).function = (yyvsp[-1].interm.function); - (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm.identifierList) = (yyvsp[(1) - (3)].interm.identifierList); + (yyval.interm.identifierList)->push_back((yyvsp[(3) - (3)].lex).string); } -#line 4110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 101: -#line 789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 792 "glslang.y" { - (yyval.interm.function) = (yyvsp[0].interm.function); + (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; } -#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 102: -#line 792 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 799 "glslang.y" { - (yyval.interm.function) = (yyvsp[0].interm.function); + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); } -#line 4126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: -#line 799 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 802 "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); - else - delete (yyvsp[0].interm).param.type; + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); } -#line 4139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: -#line 807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 809 "glslang.y" + { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function); + if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid) + (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param); + else + delete (yyvsp[(2) - (2)].interm).param.type; + } + break; + + case 105: +/* Line 1792 of yacc.c */ +#line 817 "glslang.y" { // // Only first parameter of one-parameter functions can be void // The check for named parameters not being void is done in parameter_declarator // - if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) { + if ((yyvsp[(3) - (3)].interm).param.type->getBasicType() == EbtVoid) { // // This parameter > first is void // - parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); - delete (yyvsp[0].interm).param.type; + parseContext.error((yyvsp[(2) - (3)].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); + delete (yyvsp[(3) - (3)].interm).param.type; } else { // Add the parameter - (yyval.interm.function) = (yyvsp[-2].interm.function); - (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); + (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function); + (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param); } } -#line 4161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 105: -#line 827 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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", - GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), ""); - } - if ((yyvsp[-2].interm.type).arraySizes) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - - // Add the function as a prototype after parsing it (we do not support recursion) - TFunction *function; - TType type((yyvsp[-2].interm.type)); - function = new TFunction((yyvsp[-1].lex).string, type); - (yyval.interm.function) = function; - } -#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 106: -#line 845 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 837 "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, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes); + if ((yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqTemporary) { + parseContext.error((yyvsp[(2) - (3)].lex).loc, "no qualifiers allowed for function return", + GetStorageQualifierString((yyvsp[(1) - (3)].interm.type).qualifier.storage), ""); } - if ((yyvsp[-1].interm.type).basicType == EbtVoid) { - parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), ""); - } - parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string); + if ((yyvsp[(1) - (3)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); - TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))}; - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).param = param; + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type((yyvsp[(1) - (3)].interm.type)); + function = new TFunction((yyvsp[(2) - (3)].lex).string, type); + (yyval.interm.function) = function; } -#line 4200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 107: -#line 860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 855 "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, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); + if ((yyvsp[(1) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (2)].interm.type).loc, *(yyvsp[(1) - (2)].interm.type).arraySizes); } - parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.type).arraySizes, (yyvsp[0].interm).arraySizes); + if ((yyvsp[(1) - (2)].interm.type).basicType == EbtVoid) { + parseContext.error((yyvsp[(2) - (2)].lex).loc, "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str(), ""); + } + parseContext.reservedErrorCheck((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string); - parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes); - parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string); - - (yyvsp[-2].interm.type).arraySizes = (yyvsp[0].interm).arraySizes; - - TParameter param = { (yyvsp[-1].lex).string, new TType((yyvsp[-2].interm.type))}; - (yyval.interm).loc = (yyvsp[-1].lex).loc; + TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; (yyval.interm).param = param; } -#line 4222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 108: -#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 870 "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()); + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + parseContext.arrayDimCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.type).arraySizes, (yyvsp[(3) - (3)].interm).arraySizes); - 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); + parseContext.arraySizeRequiredCheck((yyvsp[(3) - (3)].interm).loc, *(yyvsp[(3) - (3)].interm).arraySizes); + parseContext.reservedErrorCheck((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string); + (yyvsp[(1) - (3)].interm.type).arraySizes = (yyvsp[(3) - (3)].interm).arraySizes; + + TParameter param = { (yyvsp[(2) - (3)].lex).string, new TType((yyvsp[(1) - (3)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (3)].lex).loc; + (yyval.interm).param = param; } -#line 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 109: -#line 894 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 893 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); - - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); - parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); + } -#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 110: -#line 904 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 904 "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()); + (yyval.interm) = (yyvsp[(1) - (1)].interm); - 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); + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 111: -#line 914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 914 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyvsp[(1) - (2)].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); - parseContext.paramCheckFix((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.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); } -#line 4277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 112: -#line 924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 924 "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); + (yyval.interm) = (yyvsp[(1) - (1)].interm); + + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 113: -#line 933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 934 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) }; + (yyval.interm).param = param; + if ((yyvsp[(1) - (1)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (1)].interm.type).loc, *(yyvsp[(1) - (1)].interm.type).arraySizes); } -#line 4296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 114: -#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 943 "glslang.y" { - (yyval.interm) = (yyvsp[-2].interm); - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); + (yyval.interm) = (yyvsp[(1) - (1)].interm); } -#line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 115: -#line 940 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 946 "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); + (yyval.interm) = (yyvsp[(1) - (3)].interm); + parseContext.declareVariable((yyvsp[(3) - (3)].lex).loc, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm).type); } -#line 4314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 116: -#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 950 "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); + (yyval.interm) = (yyvsp[(1) - (4)].interm); + parseContext.declareVariable((yyvsp[(3) - (4)].lex).loc, *(yyvsp[(3) - (4)].lex).string, (yyvsp[(1) - (4)].interm).type, (yyvsp[(4) - (4)].interm).arraySizes); } -#line 4324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 117: -#line 949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 954 "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); + (yyval.interm).type = (yyvsp[(1) - (6)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (6)].lex).loc, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, (yyvsp[(4) - (6)].interm).arraySizes, (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, initNode, (yyvsp[(5) - (6)].lex).loc); } -#line 4334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 118: -#line 957 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 959 "glslang.y" { - (yyval.interm).type = (yyvsp[0].interm.type); - (yyval.interm).intermNode = 0; - parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + (yyval.interm).type = (yyvsp[(1) - (5)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (5)].lex).loc, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, 0, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, initNode, (yyvsp[(4) - (5)].lex).loc); } -#line 4344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: -#line 962 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 967 "glslang.y" { - (yyval.interm).type = (yyvsp[-1].interm.type); + (yyval.interm).type = (yyvsp[(1) - (1)].interm.type); (yyval.interm).intermNode = 0; - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); + parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 4354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: -#line 967 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 972 "glslang.y" { - (yyval.interm).type = (yyvsp[-2].interm.type); + (yyval.interm).type = (yyvsp[(1) - (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); + parseContext.declareVariable((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string, (yyvsp[(1) - (2)].interm.type)); } -#line 4364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 121: -#line 972 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 977 "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); + (yyval.interm).type = (yyvsp[(1) - (3)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string, (yyvsp[(1) - (3)].interm.type), (yyvsp[(3) - (3)].interm).arraySizes); } -#line 4374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 122: -#line 977 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 982 "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); + (yyval.interm).type = (yyvsp[(1) - (5)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (5)].lex).loc, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), (yyvsp[(3) - (5)].interm).arraySizes, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(4) - (5)].lex).loc); } -#line 4384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 123: -#line 986 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 987 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(3) - (4)].lex).loc); + } + break; - 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"); + case 124: +/* Line 1792 of yacc.c */ +#line 996 "glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier, (yyval.interm.type)); + if ((yyvsp[(1) - (1)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 4400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 124: -#line 997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 125: +/* Line 1792 of yacc.c */ +#line 1007 "glslang.y" { - parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); - parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].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"); + if ((yyvsp[(2) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (2)].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)) - (yyvsp[0].interm.type).arraySizes = 0; + if ((yyvsp[(2) - (2)].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier)) + (yyvsp[(2) - (2)].interm.type).arraySizes = 0; - 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.checkNoShaderLayouts((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + (yyvsp[(2) - (2)].interm.type).shaderQualifiers.merge((yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).basicType, (yyvsp[(2) - (2)].interm.type).qualifier); - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type); if (! (yyval.interm.type).qualifier.isInterpolation() && ((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) || (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 4429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 125: -#line 1024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 4440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: -#line 1033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1034 "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"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.smooth = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "invariant"); + parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.invariant = true; } -#line 4452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: -#line 1040 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1043 "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"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.flat = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "smooth"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.smooth = true; } -#line 4464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: -#line 1047 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1050 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); - parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "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; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "flat"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.flat = true; } -#line 4476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: -#line 1054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1057 "glslang.y" { -#ifdef AMD_EXTENSIONS - parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.explicitInterp = true; -#endif + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "noperspective"); + parseContext.requireProfile((yyvsp[(1) - (1)].lex).loc, ~EEsProfile, "noperspective"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "noperspective"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.nopersp = true; } -#line 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: -#line 1066 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1064 "glslang.y" { - (yyval.interm.type) = (yyvsp[-1].interm.type); +#ifdef AMD_EXTENSIONS + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "__explicitInterpAMD"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.explicitInterp = true; +#endif } -#line 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: -#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1076 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(3) - (4)].interm.type); } -#line 4506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: -#line 1075 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1082 "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); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: -#line 1082 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1085 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); + (yyval.interm.type) = (yyvsp[(1) - (3)].interm.type); + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(3) - (3)].interm.type).shaderQualifiers); + parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[(3) - (3)].interm.type).qualifier, false); } -#line 4525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: -#line 1086 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1092 "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)); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (1)].lex).string); } -#line 4534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: -#line 1090 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // 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 1792 of yacc.c */ +#line 1096 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (3)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (3)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (3)].lex).string, (yyvsp[(3) - (3)].interm.intermTypedNode)); } -#line 4544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: -#line 1098 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 1792 of yacc.c */ +#line 1100 "glslang.y" + { // because "shared" is both an identifier and a keyword + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + TString strShared("shared"); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), strShared); } -#line 4555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: -#line 1107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1108 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.noContraction = true; } -#line 4563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: -#line 1110 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1117 "glslang.y" { - (yyval.interm.type) = (yyvsp[-1].interm.type); - if ((yyval.interm.type).basicType == EbtVoid) - (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType; - - (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); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 139: -#line 1121 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1120 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + if ((yyval.interm.type).basicType == EbtVoid) + (yyval.interm.type).basicType = (yyvsp[(2) - (2)].interm.type).basicType; + + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(2) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).qualifier, false); } -#line 4584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 140: -#line 1124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1131 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 141: -#line 1127 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1134 "glslang.y" { - parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: -#line 1131 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1137 "glslang.y" { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + parseContext.checkPrecisionQualifier((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier.precision); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 143: -#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1141 "glslang.y" { // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 144: -#line 1139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1145 "glslang.y" { // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: -#line 1146 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1149 "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 + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 146: -#line 1150 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1156 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute"); - - parseContext.globalCheck((yyvsp[0].lex).loc, "attribute"); - - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqVaryingIn; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 4654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 147: -#line 1162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1160 "glslang.y" { - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangVertex, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "attribute"); - parseContext.globalCheck((yyvsp[0].lex).loc, "varying"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "attribute"); - (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } + break; + + case 148: +/* Line 1792 of yacc.c */ +#line 1172 "glslang.y" + { + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "varying"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "varying"); + + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "varying"); + + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); if (parseContext.language == EShLangVertex) (yyval.interm.type).qualifier.storage = EvqVaryingOut; else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 4673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 148: -#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqInOut; - } -#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 149: -#line 1181 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1186 "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; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "inout"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 150: -#line 1187 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1191 "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; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "in"); + (yyval.interm.type).init((yyvsp[(1) - (1)].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 4705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 151: -#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1197 "glslang.y" { - 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; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "out"); + (yyval.interm.type).init((yyvsp[(1) - (1)].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 4717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1203 "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; + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "centroid"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.centroid = true; } -#line 4728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: -#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1210 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.sample = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "patch"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.patch = true; } -#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 154: -#line 1211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1216 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqUniform; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "sample"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.sample = true; } -#line 4748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 155: -#line 1216 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1221 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqBuffer; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "uniform"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 4758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 156: -#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1226 "glslang.y" { - 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, EShLangCompute, "shared"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqShared; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "buffer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 157: -#line 1228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1231 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.coherent = true; + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 310, 0, "shared"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangCompute, "shared"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqShared; } -#line 4779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 158: -#line 1232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1238 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.volatil = true; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.coherent = true; } -#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 159: -#line 1236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1242 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.restrict = true; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.volatil = true; } -#line 4797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: -#line 1240 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1246 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.readonly = true; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.restrict = true; } -#line 4806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: -#line 1244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1250 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.writeonly = true; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.readonly = true; } -#line 4815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: -#line 1248 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1254 "glslang.y" { - parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); - parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqUniform; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.writeonly = true; } -#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 163: -#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1258 "glslang.y" { - parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); - parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); - (yyval.interm.type).init((yyvsp[-3].lex).loc); + parseContext.spvRemoved((yyvsp[(1) - (1)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + } + break; + + case 164: +/* Line 1792 of yacc.c */ +#line 1264 "glslang.y" + { + parseContext.spvRemoved((yyvsp[(1) - (4)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (4)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (4)].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; // 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 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 164: -#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // TODO: 4.0 functionality: subroutine type to list - } -#line 4848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: -#line 1269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1276 "glslang.y" { + // TODO: 4.0 functionality: subroutine type to list } -#line 4855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 166: -#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1279 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); - (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); } -#line 4864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: -#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1284 "glslang.y" { - parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0); - (yyval.interm.type) = (yyvsp[-1].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); - (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 4875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 168: -#line 1287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1288 "glslang.y" { - (yyval.interm).loc = (yyvsp[-1].lex).loc; - (yyval.interm).arraySizes = new TArraySizes; - (yyval.interm).arraySizes->addInnerSize(); + parseContext.arrayDimCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + (yyval.interm.type).arraySizes = (yyvsp[(2) - (2)].interm).arraySizes; } -#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 169: -#line 1292 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1297 "glslang.y" { - (yyval.interm).loc = (yyvsp[-2].lex).loc; + (yyval.interm).loc = (yyvsp[(1) - (2)].lex).loc; (yyval.interm).arraySizes = new TArraySizes; - - TArraySize size; - parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); - (yyval.interm).arraySizes->addInnerSize(size); + (yyval.interm).arraySizes->addInnerSize(); } -#line 4898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 170: -#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1302 "glslang.y" { - (yyval.interm) = (yyvsp[-2].interm); - (yyval.interm).arraySizes->addInnerSize(); + (yyval.interm).loc = (yyvsp[(1) - (3)].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[(2) - (3)].interm.intermTypedNode)->getLoc(), (yyvsp[(2) - (3)].interm.intermTypedNode), size); + (yyval.interm).arraySizes->addInnerSize(size); } -#line 4907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 171: -#line 1304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1310 "glslang.y" { - (yyval.interm) = (yyvsp[-3].interm); - - TArraySize size; - parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); - (yyval.interm).arraySizes->addInnerSize(size); + (yyval.interm) = (yyvsp[(1) - (3)].interm); + (yyval.interm).arraySizes->addInnerSize(); } -#line 4919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 172: -#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1314 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtVoid; + (yyval.interm) = (yyvsp[(1) - (4)].interm); + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[(3) - (4)].interm.intermTypedNode)->getLoc(), (yyvsp[(3) - (4)].interm.intermTypedNode), size); + (yyval.interm).arraySizes->addInnerSize(size); } -#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 173: -#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1324 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtVoid; } -#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 174: -#line 1322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1328 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; } -#line 4947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 175: -#line 1327 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1332 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; } -#line 4956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 176: -#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1337 "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; +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; +#endif } -#line 4966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 177: -#line 1336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1344 "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; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; } -#line 4976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 178: -#line 1341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1348 "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; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; } -#line 4986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 179: -#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1353 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; } -#line 4995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 180: -#line 1350 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1358 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; } -#line 5005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 181: -#line 1355 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1363 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; } -#line 5015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 182: -#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1367 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); + (yyval.interm.type).setVector(2); } -#line 5025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 183: -#line 1365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1372 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); } -#line 5036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 184: -#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1377 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); } -#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 185: -#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1382 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(4); + (yyval.interm.type).setVector(2); } -#line 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: -#line 1383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1388 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(2); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); } -#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 187: -#line 1388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1394 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(3); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); } -#line 5078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 188: -#line 1393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1400 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(4); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(2); +#endif } -#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 189: -#line 1398 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1408 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(3); +#endif } -#line 5098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: -#line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1416 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(4); +#endif } -#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 191: -#line 1408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1424 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(4); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(2); } -#line 5118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 192: -#line 1413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1429 "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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); } -#line 5129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 193: -#line 1419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1434 "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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); } -#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 194: -#line 1425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1439 "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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); } -#line 5151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: -#line 1431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1444 "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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); } -#line 5162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 196: -#line 1437 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1449 "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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); } -#line 5173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 197: -#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1454 "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); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(2); } -#line 5184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 198: -#line 1449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1460 "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); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(3); } -#line 5195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 199: -#line 1455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1466 "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); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(4); } -#line 5206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 200: -#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1472 "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); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); } -#line 5217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: -#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1478 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); } -#line 5227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 202: -#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1484 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); } -#line 5237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 203: -#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1490 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(2); } -#line 5247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 204: -#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1496 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(3); } -#line 5257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 205: -#line 1487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1502 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(4); } -#line 5267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 206: -#line 1492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1508 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).setMatrix(2, 2); } -#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 207: -#line 1497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1513 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).setMatrix(3, 3); } -#line 5287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 208: -#line 1502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1518 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(4, 4); } -#line 5297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 209: -#line 1507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1523 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).setMatrix(2, 2); } -#line 5307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 210: -#line 1512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1528 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(2, 3); } -#line 5317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 211: -#line 1517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1533 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).setMatrix(2, 4); } -#line 5327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 212: -#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1538 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(3, 2); } -#line 5337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: -#line 1527 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1543 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); } -#line 5348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 214: -#line 1533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1548 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); } -#line 5359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 215: -#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1553 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); } -#line 5370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 216: -#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1558 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); } -#line 5381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 217: -#line 1551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1563 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); } -#line 5392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 218: -#line 1557 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1568 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).setMatrix(2, 2); } -#line 5403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 219: -#line 1563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1574 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 2); - } -#line 5414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 220: -#line 1569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 5425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 221: -#line 1575 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 220: +/* Line 1792 of yacc.c */ +#line 1580 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 4); - } -#line 5436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 222: -#line 1581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 2); - } -#line 5447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 223: -#line 1587 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 3); - } -#line 5458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 224: -#line 1593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 5469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 221: +/* Line 1792 of yacc.c */ +#line 1586 "glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 222: +/* Line 1792 of yacc.c */ +#line 1592 "glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } + break; + + case 223: +/* Line 1792 of yacc.c */ +#line 1598 "glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } + break; + + case 224: +/* Line 1792 of yacc.c */ +#line 1604 "glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); + } break; case 225: -#line 1599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1610 "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; + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); } -#line 5479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 226: -#line 1604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1616 "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); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); } -#line 5489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 227: -#line 1609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1622 "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); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); } -#line 5499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 228: -#line 1614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1628 "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); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); } -#line 5509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 229: -#line 1619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1634 "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); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); } -#line 5519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 230: -#line 1624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1640 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); +#endif } -#line 5529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 231: -#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1648 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); +#endif } -#line 5539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: -#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1656 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); +#endif } -#line 5549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1664 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); +#endif } -#line 5559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1672 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 3); +#endif } -#line 5569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: -#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1680 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 4); +#endif } -#line 5579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: -#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1688 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 2); +#endif } -#line 5589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: -#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1696 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); +#endif } -#line 5599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: -#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1704 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 4); +#endif } -#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1712 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 2); +#endif } -#line 5619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1720 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 3); +#endif } -#line 5629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1728 "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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); +#endif } -#line 5639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1684 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1736 "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); + parseContext.vulkanRemoved((yyvsp[(1) - (1)].lex).loc, "atomic counter types"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAtomicUint; } -#line 5649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: -#line 1689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1741 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 5659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 244: -#line 1694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1746 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 5669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 245: -#line 1699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1751 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 5679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: -#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1756 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 5689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1761 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 5699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: -#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1766 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd3D); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 5709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 249: -#line 1719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1771 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 5719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 250: -#line 1724 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1776 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 5729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 251: -#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1781 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 5739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 252: -#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1786 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 5749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 253: -#line 1739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1791 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 5759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 254: -#line 1744 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1796 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 255: -#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1801 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdRect); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 5779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: -#line 1754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1806 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdRect); + (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: -#line 1759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1811 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 5799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: -#line 1764 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1816 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 5809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: -#line 1769 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1821 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 5819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 260: -#line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1826 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 5829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 261: -#line 1779 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1831 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 5839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: -#line 1784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1836 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 5849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 263: -#line 1789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1841 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 5859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 264: -#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1846 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 5869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 265: -#line 1799 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1851 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 5879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 266: -#line 1804 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1856 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(false); + (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 5889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 267: -#line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1861 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(true); + (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 5899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: -#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1866 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 5909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 269: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1871 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 5919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 270: -#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1876 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 5929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 271: -#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1881 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); + (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 5939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 272: -#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1886 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 5949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 273: -#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1891 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 5959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 274: -#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1896 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 5969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 275: -#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1901 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 5979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 276: -#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1906 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 5989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 277: -#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1911 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 5999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 278: -#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1916 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 6009 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 279: -#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1921 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 6019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: -#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1926 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 6029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1931 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 6039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: -#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1936 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 6049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 283: -#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1941 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); + (yyval.interm.type).sampler.setPureSampler(false); } -#line 6059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 284: -#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1946 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); + (yyval.interm.type).sampler.setPureSampler(true); } -#line 6069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: -#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1951 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 6079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 286: -#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1956 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 6089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 287: -#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1961 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 6099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 288: -#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1966 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 6109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 289: -#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1971 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 6119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 290: -#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1976 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 6129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 291: -#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1981 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 6139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: -#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1986 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 6149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: -#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1991 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 6159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 294: -#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1996 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 6169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 295: -#line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2001 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 6179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 296: -#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2006 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 6189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 297: -#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2011 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 6199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 298: -#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2016 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 6209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 299: -#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2021 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 6219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 300: -#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2026 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 6229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 301: -#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2031 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 6239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 302: -#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2036 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 6249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 303: -#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2041 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 6259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 304: -#line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2046 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 6269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 305: -#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2051 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 6279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 306: -#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2056 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 6289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 307: -#line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2061 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 6299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 308: -#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2066 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 6309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 309: -#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2071 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 6319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 310: -#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2076 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 6329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 311: -#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2081 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 6339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 312: -#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2086 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 6349 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 313: -#line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2091 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 6359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 314: -#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2096 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 6369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 315: -#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2101 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 6379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 316: -#line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2106 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 6389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 317: -#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2111 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 6399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 318: -#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2116 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 6409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 319: -#line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2121 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 6419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 320: -#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2126 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 6429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 321: -#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2131 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 6439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 322: -#line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2136 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 6449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 323: -#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2141 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 6459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 324: -#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2146 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 6469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 325: -#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2151 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 6479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 326: -#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2156 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 6489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 327: -#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2161 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 6499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 328: -#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2166 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 6509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 329: -#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2171 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 6519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 330: -#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2176 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 6529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 331: -#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2181 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 6539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 332: -#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2186 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 6549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 333: -#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2191 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 6559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 334: -#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2196 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + } + break; + + case 335: +/* Line 1792 of yacc.c */ +#line 2201 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + } + break; + + case 336: +/* Line 1792 of yacc.c */ +#line 2206 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + } + break; + + case 337: +/* Line 1792 of yacc.c */ +#line 2211 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + } + break; + + case 338: +/* Line 1792 of yacc.c */ +#line 2216 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + } + break; + + case 339: +/* Line 1792 of yacc.c */ +#line 2221 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + } + break; + + case 340: +/* Line 1792 of yacc.c */ +#line 2226 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); + } + break; + + case 341: +/* Line 1792 of yacc.c */ +#line 2231 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); + } + break; + + case 342: +/* Line 1792 of yacc.c */ +#line 2236 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); + } + break; + + case 343: +/* Line 1792 of yacc.c */ +#line 2241 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); + } + break; + + case 344: +/* Line 1792 of yacc.c */ +#line 2246 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + } + break; + + case 345: +/* Line 1792 of yacc.c */ +#line 2251 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + } + break; + + case 346: +/* Line 1792 of yacc.c */ +#line 2256 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); + } + break; + + case 347: +/* Line 1792 of yacc.c */ +#line 2261 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); + } + break; + + case 348: +/* Line 1792 of yacc.c */ +#line 2266 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + } + break; + + case 349: +/* Line 1792 of yacc.c */ +#line 2271 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + } + break; + + case 350: +/* Line 1792 of yacc.c */ +#line 2276 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + } + break; + + case 351: +/* Line 1792 of yacc.c */ +#line 2281 "glslang.y" { // GL_OES_EGL_image_external - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 6570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 335: -#line 2150 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 352: +/* Line 1792 of yacc.c */ +#line 2287 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 6581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 336: -#line 2156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 353: +/* Line 1792 of yacc.c */ +#line 2293 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 6592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 337: -#line 2162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 354: +/* Line 1792 of yacc.c */ +#line 2299 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 6603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 338: -#line 2168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 355: +/* Line 1792 of yacc.c */ +#line 2305 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 6614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 339: -#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 356: +/* Line 1792 of yacc.c */ +#line 2311 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 6625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 340: -#line 2180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 357: +/* Line 1792 of yacc.c */ +#line 2317 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 6636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 341: -#line 2186 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 358: +/* Line 1792 of yacc.c */ +#line 2323 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 6646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 342: -#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 359: +/* Line 1792 of yacc.c */ +#line 2328 "glslang.y" { // // This is for user defined type names. The lexical phase looked up the // type. // - if (const TVariable* variable = ((yyvsp[0].lex).symbol)->getAsVariable()) { + if (const TVariable* variable = ((yyvsp[(1) - (1)].lex).symbol)->getAsVariable()) { const TType& structure = variable->getType(); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtStruct; (yyval.interm.type).userDef = &structure; } else - parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); + parseContext.error((yyvsp[(1) - (1)].lex).loc, "expected type name", (yyvsp[(1) - (1)].lex).string->c_str(), ""); } -#line 6664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 343: -#line 2207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 344: -#line 2212 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6684 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 345: -#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 346: -#line 2225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 6700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 347: -#line 2225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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"); - (yyval.interm.type).init((yyvsp[-5].lex).loc); - (yyval.interm.type).basicType = EbtStruct; - (yyval.interm.type).userDef = structure; - --parseContext.structNestingLevel; - } -#line 6716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 348: -#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 6722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 349: -#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); - (yyval.interm.type).init((yyvsp[-4].lex).loc); - (yyval.interm.type).basicType = EbtStruct; - (yyval.interm.type).userDef = structure; - --parseContext.structNestingLevel; - } -#line 6734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 350: -#line 2246 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = (yyvsp[0].interm.typeList); - } -#line 6742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 351: -#line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); - for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { - for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { - if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName()) - parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str()); - } - (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); - } - } -#line 6757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 352: -#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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"); - if (parseContext.profile == EEsProfile) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - } - - (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); - - for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { - parseContext.arrayDimCheck((yyvsp[-2].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes); - (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); - } - } -#line 6780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 353: -#line 2280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier); - 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"); - if (parseContext.profile == EEsProfile) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - } - - (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); - - parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); - 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); - - for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { - parseContext.arrayDimCheck((yyvsp[-3].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes); - (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); - } - } -#line 6806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 354: -#line 2304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = new TTypeList; - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); - } -#line 6815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 355: -#line 2308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); - } -#line 6823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 356: -#line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (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 6833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 357: -#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0); - - (yyval.interm.typeLine).type = new TType(EbtVoid); - (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc; - (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); - (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes); - } -#line 6846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 358: -#line 2330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } -#line 6854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 359: -#line 2333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 360: -#line 2339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2344 "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); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 6876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 361: -#line 2348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2349 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 6884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 362: -#line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2354 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 6892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 363: -#line 2357 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2362 "glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (3)].lex).loc); } break; case 364: -#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2362 "glslang.y" + { + TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string); + parseContext.structArrayCheck((yyvsp[(2) - (6)].lex).loc, *structure); + TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true); + if (! parseContext.symbolTable.insert(*userTypeDef)) + parseContext.error((yyvsp[(2) - (6)].lex).loc, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct"); + (yyval.interm.type).init((yyvsp[(1) - (6)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } break; case 365: -#line 2362 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2373 "glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (2)].lex).loc); } break; case 366: -#line 2368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2373 "glslang.y" + { + TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString("")); + (yyval.interm.type).init((yyvsp[(1) - (5)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } break; case 367: -#line 2369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2383 "glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList); + } break; case 368: -#line 2370 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2386 "glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList); + for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) { + for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { + if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName()) + parseContext.error((*(yyvsp[(2) - (2)].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName().c_str()); + } + (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]); + } + } break; case 369: -#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2399 "glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList); + + parseContext.voidErrorCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyvsp[(2) - (3)].interm.typeList))[0].type->getFieldName(), (yyvsp[(1) - (3)].interm.type).basicType); + parseContext.precisionQualifierCheck((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).basicType, (yyvsp[(1) - (3)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(1) - (3)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(1) - (3)].interm.type)); + } + } break; case 370: -#line 2372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2417 "glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier); + if ((yyvsp[(2) - (4)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(2) - (4)].interm.type).loc, *(yyvsp[(2) - (4)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(3) - (4)].interm.typeList); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + parseContext.voidErrorCheck((yyvsp[(2) - (4)].interm.type).loc, (*(yyvsp[(3) - (4)].interm.typeList))[0].type->getFieldName(), (yyvsp[(2) - (4)].interm.type).basicType); + parseContext.mergeQualifiers((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).qualifier, (yyvsp[(1) - (4)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).basicType, (yyvsp[(2) - (4)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (4)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(2) - (4)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(2) - (4)].interm.type)); + } + } break; case 371: -#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2441 "glslang.y" + { + (yyval.interm.typeList) = new TTypeList; + (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine)); + } break; case 372: -#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2445 "glslang.y" + { + (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine)); + } break; case 373: -#line 2378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 6958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2451 "glslang.y" + { + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string); + } break; case 374: -#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2456 "glslang.y" { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; + parseContext.arrayDimCheck((yyvsp[(1) - (2)].lex).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (2)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (2)].lex).string); + (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[(2) - (2)].interm).arraySizes); } -#line 6967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 375: -#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2467 "glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 376: +/* Line 1792 of yacc.c */ +#line 2470 "glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + } + break; + + case 377: +/* Line 1792 of yacc.c */ +#line 2476 "glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (4)].interm.intermTypedNode); + } + break; + + case 378: +/* Line 1792 of yacc.c */ +#line 2485 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[(1) - (1)].interm.intermTypedNode), (yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc()); + } + break; + + case 379: +/* Line 1792 of yacc.c */ +#line 2488 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + } + break; + + case 380: +/* Line 1792 of yacc.c */ +#line 2494 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 381: +/* Line 1792 of yacc.c */ +#line 2498 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 382: +/* Line 1792 of yacc.c */ +#line 2499 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 383: +/* Line 1792 of yacc.c */ +#line 2505 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 384: +/* Line 1792 of yacc.c */ +#line 2506 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 385: +/* Line 1792 of yacc.c */ +#line 2507 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 386: +/* Line 1792 of yacc.c */ +#line 2508 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 387: +/* Line 1792 of yacc.c */ +#line 2509 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 388: +/* Line 1792 of yacc.c */ +#line 2510 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 389: +/* Line 1792 of yacc.c */ +#line 2511 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 390: +/* Line 1792 of yacc.c */ +#line 2515 "glslang.y" + { (yyval.interm.intermNode) = 0; } + break; + + case 391: +/* Line 1792 of yacc.c */ +#line 2516 "glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } + break; + + case 392: +/* Line 1792 of yacc.c */ +#line 2520 "glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 6976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 376: -#line 2387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 393: +/* Line 1792 of yacc.c */ +#line 2524 "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); + if ((yyvsp[(3) - (5)].interm.intermNode) && (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()) + (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(3) - (5)].interm.intermNode); } -#line 6986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 377: -#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 394: +/* Line 1792 of yacc.c */ +#line 2532 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 378: -#line 2396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 395: +/* Line 1792 of yacc.c */ +#line 2533 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 379: -#line 2400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 396: +/* Line 1792 of yacc.c */ +#line 2537 "glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 7006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 380: -#line 2403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 397: +/* Line 1792 of yacc.c */ +#line 2540 "glslang.y" { --parseContext.controlFlowNestingLevel; - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } -#line 7015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 381: -#line 2407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 398: +/* Line 1792 of yacc.c */ +#line 2544 "glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 382: -#line 2412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 399: +/* Line 1792 of yacc.c */ +#line 2549 "glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } -#line 7036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 383: -#line 2421 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 400: +/* Line 1792 of yacc.c */ +#line 2558 "glslang.y" { (yyval.interm.intermNode) = 0; } -#line 7044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 384: -#line 2424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 401: +/* Line 1792 of yacc.c */ +#line 2561 "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); + if ((yyvsp[(2) - (3)].interm.intermNode) && (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()) + (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermNode); } -#line 7054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 385: -#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 402: +/* Line 1792 of yacc.c */ +#line 2569 "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(0, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode)); + if ((yyvsp[(1) - (1)].interm.intermNode) && (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence(0, (yyvsp[(1) - (1)].interm.intermNode)); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 386: -#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 403: +/* Line 1792 of yacc.c */ +#line 2577 "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() : 0, (yyvsp[0].interm.intermNode)); + if ((yyvsp[(2) - (2)].interm.intermNode) && (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence((yyvsp[(1) - (2)].interm.intermNode) ? (yyvsp[(1) - (2)].interm.intermNode)->getAsAggregate() : 0, (yyvsp[(2) - (2)].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)); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); } -#line 7080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 387: -#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 404: +/* Line 1792 of yacc.c */ +#line 2588 "glslang.y" { (yyval.interm.intermNode) = 0; } -#line 7086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 388: -#line 2452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 7092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 405: +/* Line 1792 of yacc.c */ +#line 2589 "glslang.y" + { (yyval.interm.intermNode) = static_cast((yyvsp[(1) - (2)].interm.intermTypedNode)); } break; - case 389: -#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 406: +/* Line 1792 of yacc.c */ +#line 2593 "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); + parseContext.boolCheck((yyvsp[(1) - (5)].lex).loc, (yyvsp[(3) - (5)].interm.intermTypedNode)); + (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).loc); } -#line 7101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 390: -#line 2463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 407: +/* Line 1792 of yacc.c */ +#line 2600 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); - (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode); } -#line 7110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 391: -#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 408: +/* Line 1792 of yacc.c */ +#line 2604 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 7119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 392: -#line 2475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 409: +/* Line 1792 of yacc.c */ +#line 2612 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + parseContext.boolCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), (yyvsp[(1) - (1)].interm.intermTypedNode)); } -#line 7128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 393: -#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 410: +/* Line 1792 of yacc.c */ +#line 2616 "glslang.y" { - parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); + parseContext.boolCheck((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].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)); + TType type((yyvsp[(1) - (4)].interm.type)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); if (initNode) (yyval.interm.intermTypedNode) = initNode->getAsTyped(); else (yyval.interm.intermTypedNode) = 0; } -#line 7143 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 394: -#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 411: +/* Line 1792 of yacc.c */ +#line 2629 "glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -7152,13 +7778,13 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 7156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 395: -#line 2500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 412: +/* Line 1792 of yacc.c */ +#line 2637 "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[(1) - (8)].lex).loc, (yyvsp[(3) - (8)].interm.intermTypedNode), (yyvsp[(7) - (8)].interm.intermNode) ? (yyvsp[(7) - (8)].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); parseContext.switchSequenceStack.pop_back(); parseContext.switchLevel.pop_back(); @@ -7166,287 +7792,287 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 396: -#line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 413: +/* Line 1792 of yacc.c */ +#line 2649 "glslang.y" { (yyval.interm.intermNode) = 0; } -#line 7178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 397: -#line 2515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 414: +/* Line 1792 of yacc.c */ +#line 2652 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 398: -#line 2521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 415: +/* Line 1792 of yacc.c */ +#line 2658 "glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) - parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot appear outside switch statement", "case", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", ""); + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot be nested inside control flow", "case", ""); else { - parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case"); - parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); + parseContext.constantValueCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + parseContext.integerCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); } } -#line 7203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 399: -#line 2533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 416: +/* Line 1792 of yacc.c */ +#line 2670 "glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) - parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot appear outside switch statement", "default", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot be nested inside control flow", "default", ""); else - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[(1) - (2)].lex).loc); } -#line 7217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 400: -#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 417: +/* Line 1792 of yacc.c */ +#line 2682 "glslang.y" { if (! parseContext.limits.whileLoops) - parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "while loops not available", "limitation", ""); parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 401: -#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 418: +/* Line 1792 of yacc.c */ +#line 2690 "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[(6) - (6)].interm.intermNode), (yyvsp[(4) - (6)].interm.intermTypedNode), 0, true, (yyvsp[(1) - (6)].lex).loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 402: -#line 2560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 419: +/* Line 1792 of yacc.c */ +#line 2697 "glslang.y" { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 403: -#line 2565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 420: +/* Line 1792 of yacc.c */ +#line 2702 "glslang.y" { if (! parseContext.limits.whileLoops) - parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); + parseContext.error((yyvsp[(1) - (8)].lex).loc, "do-while loops not available", "limitation", ""); - parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); + parseContext.boolCheck((yyvsp[(8) - (8)].lex).loc, (yyvsp[(6) - (8)].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[(3) - (8)].interm.intermNode), (yyvsp[(6) - (8)].interm.intermTypedNode), 0, false, (yyvsp[(4) - (8)].lex).loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 404: -#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 421: +/* Line 1792 of yacc.c */ +#line 2713 "glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 405: -#line 2582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 422: +/* Line 1792 of yacc.c */ +#line 2719 "glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); - TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast((yyvsp[-2].interm.nodePair).node1), reinterpret_cast((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(4) - (7)].interm.intermNode), (yyvsp[(2) - (7)].lex).loc); + TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[(7) - (7)].interm.intermNode), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node2), true, (yyvsp[(1) - (7)].lex).loc); if (! parseContext.limits.nonInductiveForLoops) - parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop); - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc); + parseContext.inductiveLoopCheck((yyvsp[(1) - (7)].lex).loc, (yyvsp[(4) - (7)].interm.intermNode), forLoop); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[(1) - (7)].lex).loc); (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 406: -#line 2597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 423: +/* Line 1792 of yacc.c */ +#line 2734 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 407: -#line 2600 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 424: +/* Line 1792 of yacc.c */ +#line 2737 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 408: -#line 2606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 425: +/* Line 1792 of yacc.c */ +#line 2743 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 409: -#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 426: +/* Line 1792 of yacc.c */ +#line 2746 "glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 7328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 410: -#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 427: +/* Line 1792 of yacc.c */ +#line 2752 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 7337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 411: -#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 428: +/* Line 1792 of yacc.c */ +#line 2756 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); - (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode); } -#line 7346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 412: -#line 2626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 429: +/* Line 1792 of yacc.c */ +#line 2763 "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); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "continue statement only allowed in loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).loc); } -#line 7356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 413: -#line 2631 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 430: +/* Line 1792 of yacc.c */ +#line 2768 "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); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "break statement only allowed in switch and loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).loc); } -#line 7366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 414: -#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 431: +/* Line 1792 of yacc.c */ +#line 2773 "glslang.y" { - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) - parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "non-void function must return a value", "return", ""); if (parseContext.inMain) parseContext.postMainReturn = true; } -#line 7378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 415: -#line 2643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 432: +/* Line 1792 of yacc.c */ +#line 2780 "glslang.y" { - (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[(1) - (3)].lex).loc, (yyvsp[(2) - (3)].interm.intermTypedNode)); } -#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 416: -#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 433: +/* Line 1792 of yacc.c */ +#line 2783 "glslang.y" { - parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); + parseContext.requireStage((yyvsp[(1) - (2)].lex).loc, EShLangFragment, "discard"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).loc); } -#line 7395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 417: -#line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 434: +/* Line 1792 of yacc.c */ +#line 2792 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 7404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 418: -#line 2659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 435: +/* Line 1792 of yacc.c */ +#line 2796 "glslang.y" { - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 7413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 419: -#line 2666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 436: +/* Line 1792 of yacc.c */ +#line 2803 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 420: -#line 2669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 437: +/* Line 1792 of yacc.c */ +#line 2806 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 421: -#line 2675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 438: +/* Line 1792 of yacc.c */ +#line 2812 "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); + (yyvsp[(1) - (1)].interm).function = parseContext.handleFunctionDeclarator((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function, false /* not prototype */); + (yyvsp[(1) - (1)].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function); } -#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 422: -#line 2679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 439: +/* Line 1792 of yacc.c */ +#line 2816 "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.error((yyvsp[(1) - (3)].interm).loc, "function does not return a value:", "", (yyvsp[(1) - (3)].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)); - 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()); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermNode)); + parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[(1) - (3)].interm).function->getType(), (yyvsp[(1) - (3)].interm).loc); + (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).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 @@ -7454,11 +8080,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 7458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 7462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8088 "glslang_tab.cpp" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -7480,7 +8106,7 @@ yyreduce: *++yyvsp = yyval; - /* Now 'shift' the result of the reduction. Determine what state + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -7495,9 +8121,9 @@ yyreduce: goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -7548,20 +8174,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, pParseContext); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, pParseContext); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -7580,7 +8206,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -7593,29 +8219,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp, pParseContext); + yystos[yystate], yyvsp, pParseContext); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -7666,14 +8292,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, pParseContext); } - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, pParseContext); + yystos[*yyssp], yyvsp, pParseContext); YYPOPSTACK (1); } #ifndef yyoverflow @@ -7684,7 +8310,11 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - return yyresult; + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 2696 "MachineIndependent/glslang.y" /* yacc.c:1906 */ + + +/* Line 2055 of yacc.c */ +#line 2833 "glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 2d8276af..b6d27993 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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 . */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -/* Debug traces. */ +#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif @@ -40,288 +40,306 @@ extern int yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - ATTRIBUTE = 258, - VARYING = 259, - CONST = 260, - BOOL = 261, - FLOAT = 262, - DOUBLE = 263, - INT = 264, - UINT = 265, - INT64_T = 266, - UINT64_T = 267, - BREAK = 268, - CONTINUE = 269, - DO = 270, - ELSE = 271, - FOR = 272, - IF = 273, - DISCARD = 274, - RETURN = 275, - SWITCH = 276, - CASE = 277, - DEFAULT = 278, - SUBROUTINE = 279, - BVEC2 = 280, - BVEC3 = 281, - BVEC4 = 282, - IVEC2 = 283, - IVEC3 = 284, - IVEC4 = 285, - I64VEC2 = 286, - I64VEC3 = 287, - I64VEC4 = 288, - UVEC2 = 289, - UVEC3 = 290, - UVEC4 = 291, - U64VEC2 = 292, - U64VEC3 = 293, - U64VEC4 = 294, - VEC2 = 295, - VEC3 = 296, - VEC4 = 297, - MAT2 = 298, - MAT3 = 299, - MAT4 = 300, - CENTROID = 301, - IN = 302, - OUT = 303, - INOUT = 304, - UNIFORM = 305, - PATCH = 306, - SAMPLE = 307, - BUFFER = 308, - SHARED = 309, - COHERENT = 310, - VOLATILE = 311, - RESTRICT = 312, - READONLY = 313, - WRITEONLY = 314, - DVEC2 = 315, - DVEC3 = 316, - DVEC4 = 317, - DMAT2 = 318, - DMAT3 = 319, - DMAT4 = 320, - NOPERSPECTIVE = 321, - FLAT = 322, - SMOOTH = 323, - LAYOUT = 324, - __EXPLICITINTERPAMD = 325, - MAT2X2 = 326, - MAT2X3 = 327, - MAT2X4 = 328, - MAT3X2 = 329, - MAT3X3 = 330, - MAT3X4 = 331, - MAT4X2 = 332, - MAT4X3 = 333, - MAT4X4 = 334, - DMAT2X2 = 335, - DMAT2X3 = 336, - DMAT2X4 = 337, - DMAT3X2 = 338, - DMAT3X3 = 339, - DMAT3X4 = 340, - DMAT4X2 = 341, - DMAT4X3 = 342, - DMAT4X4 = 343, - ATOMIC_UINT = 344, - SAMPLER1D = 345, - SAMPLER2D = 346, - SAMPLER3D = 347, - SAMPLERCUBE = 348, - SAMPLER1DSHADOW = 349, - SAMPLER2DSHADOW = 350, - SAMPLERCUBESHADOW = 351, - SAMPLER1DARRAY = 352, - SAMPLER2DARRAY = 353, - SAMPLER1DARRAYSHADOW = 354, - SAMPLER2DARRAYSHADOW = 355, - ISAMPLER1D = 356, - ISAMPLER2D = 357, - ISAMPLER3D = 358, - ISAMPLERCUBE = 359, - ISAMPLER1DARRAY = 360, - ISAMPLER2DARRAY = 361, - USAMPLER1D = 362, - USAMPLER2D = 363, - USAMPLER3D = 364, - USAMPLERCUBE = 365, - USAMPLER1DARRAY = 366, - USAMPLER2DARRAY = 367, - SAMPLER2DRECT = 368, - SAMPLER2DRECTSHADOW = 369, - ISAMPLER2DRECT = 370, - USAMPLER2DRECT = 371, - SAMPLERBUFFER = 372, - ISAMPLERBUFFER = 373, - USAMPLERBUFFER = 374, - SAMPLERCUBEARRAY = 375, - SAMPLERCUBEARRAYSHADOW = 376, - ISAMPLERCUBEARRAY = 377, - USAMPLERCUBEARRAY = 378, - SAMPLER2DMS = 379, - ISAMPLER2DMS = 380, - USAMPLER2DMS = 381, - SAMPLER2DMSARRAY = 382, - ISAMPLER2DMSARRAY = 383, - USAMPLER2DMSARRAY = 384, - SAMPLEREXTERNALOES = 385, - SAMPLER = 386, - SAMPLERSHADOW = 387, - TEXTURE1D = 388, - TEXTURE2D = 389, - TEXTURE3D = 390, - TEXTURECUBE = 391, - TEXTURE1DARRAY = 392, - TEXTURE2DARRAY = 393, - ITEXTURE1D = 394, - ITEXTURE2D = 395, - ITEXTURE3D = 396, - ITEXTURECUBE = 397, - ITEXTURE1DARRAY = 398, - ITEXTURE2DARRAY = 399, - UTEXTURE1D = 400, - UTEXTURE2D = 401, - UTEXTURE3D = 402, - UTEXTURECUBE = 403, - UTEXTURE1DARRAY = 404, - UTEXTURE2DARRAY = 405, - TEXTURE2DRECT = 406, - ITEXTURE2DRECT = 407, - UTEXTURE2DRECT = 408, - TEXTUREBUFFER = 409, - ITEXTUREBUFFER = 410, - UTEXTUREBUFFER = 411, - TEXTURECUBEARRAY = 412, - ITEXTURECUBEARRAY = 413, - UTEXTURECUBEARRAY = 414, - TEXTURE2DMS = 415, - ITEXTURE2DMS = 416, - UTEXTURE2DMS = 417, - TEXTURE2DMSARRAY = 418, - ITEXTURE2DMSARRAY = 419, - UTEXTURE2DMSARRAY = 420, - SUBPASSINPUT = 421, - SUBPASSINPUTMS = 422, - ISUBPASSINPUT = 423, - ISUBPASSINPUTMS = 424, - USUBPASSINPUT = 425, - USUBPASSINPUTMS = 426, - IMAGE1D = 427, - IIMAGE1D = 428, - UIMAGE1D = 429, - IMAGE2D = 430, - IIMAGE2D = 431, - UIMAGE2D = 432, - IMAGE3D = 433, - IIMAGE3D = 434, - UIMAGE3D = 435, - IMAGE2DRECT = 436, - IIMAGE2DRECT = 437, - UIMAGE2DRECT = 438, - IMAGECUBE = 439, - IIMAGECUBE = 440, - UIMAGECUBE = 441, - IMAGEBUFFER = 442, - IIMAGEBUFFER = 443, - UIMAGEBUFFER = 444, - IMAGE1DARRAY = 445, - IIMAGE1DARRAY = 446, - UIMAGE1DARRAY = 447, - IMAGE2DARRAY = 448, - IIMAGE2DARRAY = 449, - UIMAGE2DARRAY = 450, - IMAGECUBEARRAY = 451, - IIMAGECUBEARRAY = 452, - UIMAGECUBEARRAY = 453, - IMAGE2DMS = 454, - IIMAGE2DMS = 455, - UIMAGE2DMS = 456, - IMAGE2DMSARRAY = 457, - IIMAGE2DMSARRAY = 458, - UIMAGE2DMSARRAY = 459, - STRUCT = 460, - VOID = 461, - WHILE = 462, - IDENTIFIER = 463, - TYPE_NAME = 464, - FLOATCONSTANT = 465, - DOUBLECONSTANT = 466, - INTCONSTANT = 467, - UINTCONSTANT = 468, - INT64CONSTANT = 469, - UINT64CONSTANT = 470, - BOOLCONSTANT = 471, - LEFT_OP = 472, - RIGHT_OP = 473, - INC_OP = 474, - DEC_OP = 475, - LE_OP = 476, - GE_OP = 477, - EQ_OP = 478, - NE_OP = 479, - AND_OP = 480, - OR_OP = 481, - XOR_OP = 482, - MUL_ASSIGN = 483, - DIV_ASSIGN = 484, - ADD_ASSIGN = 485, - MOD_ASSIGN = 486, - LEFT_ASSIGN = 487, - RIGHT_ASSIGN = 488, - AND_ASSIGN = 489, - XOR_ASSIGN = 490, - OR_ASSIGN = 491, - SUB_ASSIGN = 492, - LEFT_PAREN = 493, - RIGHT_PAREN = 494, - LEFT_BRACKET = 495, - RIGHT_BRACKET = 496, - LEFT_BRACE = 497, - RIGHT_BRACE = 498, - DOT = 499, - COMMA = 500, - COLON = 501, - EQUAL = 502, - SEMICOLON = 503, - BANG = 504, - DASH = 505, - TILDE = 506, - PLUS = 507, - STAR = 508, - SLASH = 509, - PERCENT = 510, - LEFT_ANGLE = 511, - RIGHT_ANGLE = 512, - VERTICAL_BAR = 513, - CARET = 514, - AMPERSAND = 515, - QUESTION = 516, - INVARIANT = 517, - PRECISE = 518, - HIGH_PRECISION = 519, - MEDIUM_PRECISION = 520, - LOW_PRECISION = 521, - PRECISION = 522, - PACKED = 523, - RESOURCE = 524, - SUPERP = 525 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + INT64_T = 266, + UINT64_T = 267, + FLOAT16_T = 268, + BREAK = 269, + CONTINUE = 270, + DO = 271, + ELSE = 272, + FOR = 273, + IF = 274, + DISCARD = 275, + RETURN = 276, + SWITCH = 277, + CASE = 278, + DEFAULT = 279, + SUBROUTINE = 280, + BVEC2 = 281, + BVEC3 = 282, + BVEC4 = 283, + IVEC2 = 284, + IVEC3 = 285, + IVEC4 = 286, + I64VEC2 = 287, + I64VEC3 = 288, + I64VEC4 = 289, + UVEC2 = 290, + UVEC3 = 291, + UVEC4 = 292, + U64VEC2 = 293, + U64VEC3 = 294, + U64VEC4 = 295, + VEC2 = 296, + VEC3 = 297, + VEC4 = 298, + MAT2 = 299, + MAT3 = 300, + MAT4 = 301, + CENTROID = 302, + IN = 303, + OUT = 304, + INOUT = 305, + UNIFORM = 306, + PATCH = 307, + SAMPLE = 308, + BUFFER = 309, + SHARED = 310, + COHERENT = 311, + VOLATILE = 312, + RESTRICT = 313, + READONLY = 314, + WRITEONLY = 315, + DVEC2 = 316, + DVEC3 = 317, + DVEC4 = 318, + DMAT2 = 319, + DMAT3 = 320, + DMAT4 = 321, + F16VEC2 = 322, + F16VEC3 = 323, + F16VEC4 = 324, + F16MAT2 = 325, + F16MAT3 = 326, + F16MAT4 = 327, + NOPERSPECTIVE = 328, + FLAT = 329, + SMOOTH = 330, + LAYOUT = 331, + __EXPLICITINTERPAMD = 332, + MAT2X2 = 333, + MAT2X3 = 334, + MAT2X4 = 335, + MAT3X2 = 336, + MAT3X3 = 337, + MAT3X4 = 338, + MAT4X2 = 339, + MAT4X3 = 340, + MAT4X4 = 341, + DMAT2X2 = 342, + DMAT2X3 = 343, + DMAT2X4 = 344, + DMAT3X2 = 345, + DMAT3X3 = 346, + DMAT3X4 = 347, + DMAT4X2 = 348, + DMAT4X3 = 349, + DMAT4X4 = 350, + F16MAT2X2 = 351, + F16MAT2X3 = 352, + F16MAT2X4 = 353, + F16MAT3X2 = 354, + F16MAT3X3 = 355, + F16MAT3X4 = 356, + F16MAT4X2 = 357, + F16MAT4X3 = 358, + F16MAT4X4 = 359, + ATOMIC_UINT = 360, + SAMPLER1D = 361, + SAMPLER2D = 362, + SAMPLER3D = 363, + SAMPLERCUBE = 364, + SAMPLER1DSHADOW = 365, + SAMPLER2DSHADOW = 366, + SAMPLERCUBESHADOW = 367, + SAMPLER1DARRAY = 368, + SAMPLER2DARRAY = 369, + SAMPLER1DARRAYSHADOW = 370, + SAMPLER2DARRAYSHADOW = 371, + ISAMPLER1D = 372, + ISAMPLER2D = 373, + ISAMPLER3D = 374, + ISAMPLERCUBE = 375, + ISAMPLER1DARRAY = 376, + ISAMPLER2DARRAY = 377, + USAMPLER1D = 378, + USAMPLER2D = 379, + USAMPLER3D = 380, + USAMPLERCUBE = 381, + USAMPLER1DARRAY = 382, + USAMPLER2DARRAY = 383, + SAMPLER2DRECT = 384, + SAMPLER2DRECTSHADOW = 385, + ISAMPLER2DRECT = 386, + USAMPLER2DRECT = 387, + SAMPLERBUFFER = 388, + ISAMPLERBUFFER = 389, + USAMPLERBUFFER = 390, + SAMPLERCUBEARRAY = 391, + SAMPLERCUBEARRAYSHADOW = 392, + ISAMPLERCUBEARRAY = 393, + USAMPLERCUBEARRAY = 394, + SAMPLER2DMS = 395, + ISAMPLER2DMS = 396, + USAMPLER2DMS = 397, + SAMPLER2DMSARRAY = 398, + ISAMPLER2DMSARRAY = 399, + USAMPLER2DMSARRAY = 400, + SAMPLEREXTERNALOES = 401, + SAMPLER = 402, + SAMPLERSHADOW = 403, + TEXTURE1D = 404, + TEXTURE2D = 405, + TEXTURE3D = 406, + TEXTURECUBE = 407, + TEXTURE1DARRAY = 408, + TEXTURE2DARRAY = 409, + ITEXTURE1D = 410, + ITEXTURE2D = 411, + ITEXTURE3D = 412, + ITEXTURECUBE = 413, + ITEXTURE1DARRAY = 414, + ITEXTURE2DARRAY = 415, + UTEXTURE1D = 416, + UTEXTURE2D = 417, + UTEXTURE3D = 418, + UTEXTURECUBE = 419, + UTEXTURE1DARRAY = 420, + UTEXTURE2DARRAY = 421, + TEXTURE2DRECT = 422, + ITEXTURE2DRECT = 423, + UTEXTURE2DRECT = 424, + TEXTUREBUFFER = 425, + ITEXTUREBUFFER = 426, + UTEXTUREBUFFER = 427, + TEXTURECUBEARRAY = 428, + ITEXTURECUBEARRAY = 429, + UTEXTURECUBEARRAY = 430, + TEXTURE2DMS = 431, + ITEXTURE2DMS = 432, + UTEXTURE2DMS = 433, + TEXTURE2DMSARRAY = 434, + ITEXTURE2DMSARRAY = 435, + UTEXTURE2DMSARRAY = 436, + SUBPASSINPUT = 437, + SUBPASSINPUTMS = 438, + ISUBPASSINPUT = 439, + ISUBPASSINPUTMS = 440, + USUBPASSINPUT = 441, + USUBPASSINPUTMS = 442, + IMAGE1D = 443, + IIMAGE1D = 444, + UIMAGE1D = 445, + IMAGE2D = 446, + IIMAGE2D = 447, + UIMAGE2D = 448, + IMAGE3D = 449, + IIMAGE3D = 450, + UIMAGE3D = 451, + IMAGE2DRECT = 452, + IIMAGE2DRECT = 453, + UIMAGE2DRECT = 454, + IMAGECUBE = 455, + IIMAGECUBE = 456, + UIMAGECUBE = 457, + IMAGEBUFFER = 458, + IIMAGEBUFFER = 459, + UIMAGEBUFFER = 460, + IMAGE1DARRAY = 461, + IIMAGE1DARRAY = 462, + UIMAGE1DARRAY = 463, + IMAGE2DARRAY = 464, + IIMAGE2DARRAY = 465, + UIMAGE2DARRAY = 466, + IMAGECUBEARRAY = 467, + IIMAGECUBEARRAY = 468, + UIMAGECUBEARRAY = 469, + IMAGE2DMS = 470, + IIMAGE2DMS = 471, + UIMAGE2DMS = 472, + IMAGE2DMSARRAY = 473, + IIMAGE2DMSARRAY = 474, + UIMAGE2DMSARRAY = 475, + STRUCT = 476, + VOID = 477, + WHILE = 478, + IDENTIFIER = 479, + TYPE_NAME = 480, + FLOATCONSTANT = 481, + DOUBLECONSTANT = 482, + INTCONSTANT = 483, + UINTCONSTANT = 484, + INT64CONSTANT = 485, + UINT64CONSTANT = 486, + BOOLCONSTANT = 487, + FLOAT16CONSTANT = 488, + LEFT_OP = 489, + RIGHT_OP = 490, + INC_OP = 491, + DEC_OP = 492, + LE_OP = 493, + GE_OP = 494, + EQ_OP = 495, + NE_OP = 496, + AND_OP = 497, + OR_OP = 498, + XOR_OP = 499, + MUL_ASSIGN = 500, + DIV_ASSIGN = 501, + ADD_ASSIGN = 502, + MOD_ASSIGN = 503, + LEFT_ASSIGN = 504, + RIGHT_ASSIGN = 505, + AND_ASSIGN = 506, + XOR_ASSIGN = 507, + OR_ASSIGN = 508, + SUB_ASSIGN = 509, + LEFT_PAREN = 510, + RIGHT_PAREN = 511, + LEFT_BRACKET = 512, + RIGHT_BRACKET = 513, + LEFT_BRACE = 514, + RIGHT_BRACE = 515, + DOT = 516, + COMMA = 517, + COLON = 518, + EQUAL = 519, + SEMICOLON = 520, + BANG = 521, + DASH = 522, + TILDE = 523, + PLUS = 524, + STAR = 525, + SLASH = 526, + PERCENT = 527, + LEFT_ANGLE = 528, + RIGHT_ANGLE = 529, + VERTICAL_BAR = 530, + CARET = 531, + AMPERSAND = 532, + QUESTION = 533, + INVARIANT = 534, + PRECISE = 535, + HIGH_PRECISION = 536, + MEDIUM_PRECISION = 537, + LOW_PRECISION = 538, + PRECISION = 539, + PACKED = 540, + RESOURCE = 541, + SUPERP = 542 + }; #endif -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 66 "MachineIndependent/glslang.y" /* yacc.c:1909 */ +/* Line 2058 of yacc.c */ +#line 66 "glslang.y" struct { glslang::TSourceLoc loc; @@ -355,16 +373,28 @@ union YYSTYPE }; } interm; -#line 359 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 2058 of yacc.c */ +#line 379 "glslang_tab.cpp.h" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ +#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */ diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 0ef37c47..bd64f199 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -304,6 +304,11 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpPackUint2x32: out.debug << "packUint2x32"; break; case EOpUnpackUint2x32: out.debug << "unpackUint2x32"; break; +#ifdef AMD_EXTENSIONS + case EOpPackFloat2x16: out.debug << "packFloat2x16"; break; + case EOpUnpackFloat2x16: out.debug << "unpackFloat2x16"; break; +#endif + case EOpLength: out.debug << "length"; break; case EOpNormalize: out.debug << "normalize"; break; case EOpDPdx: out.debug << "dPdx"; break; @@ -373,6 +378,21 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break; case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break; + + case EOpConvBoolToFloat16: out.debug << "Convert bool to float16"; break; + case EOpConvIntToFloat16: out.debug << "Convert int to float16"; break; + case EOpConvUintToFloat16: out.debug << "Convert uint to float16"; break; + case EOpConvFloatToFloat16: out.debug << "Convert float to float16"; break; + case EOpConvDoubleToFloat16: out.debug << "Convert double to float16"; break; + case EOpConvInt64ToFloat16: out.debug << "Convert int64 to float16"; break; + case EOpConvUint64ToFloat16: out.debug << "Convert uint64 to float16"; break; + case EOpConvFloat16ToBool: out.debug << "Convert float16 to bool"; break; + case EOpConvFloat16ToInt: out.debug << "Convert float16 to int"; break; + case EOpConvFloat16ToUint: out.debug << "Convert float16 to uint"; break; + case EOpConvFloat16ToFloat: out.debug << "Convert float16 to float"; break; + case EOpConvFloat16ToDouble: out.debug << "Convert float16 to double"; break; + case EOpConvFloat16ToInt64: out.debug << "Convert float16 to int64"; break; + case EOpConvFloat16ToUint64: out.debug << "Convert float16 to uint64"; break; #endif default: out.debug.message(EPrefixError, "Bad unary op"); @@ -447,6 +467,21 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructDMat4x2: out.debug << "Construct dmat4x2"; break; case EOpConstructDMat4x3: out.debug << "Construct dmat4x3"; break; case EOpConstructDMat4x4: out.debug << "Construct dmat4"; break; +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: out.debug << "Construct float16_t"; break; + case EOpConstructF16Vec2: out.debug << "Construct f16vec2"; break; + case EOpConstructF16Vec3: out.debug << "Construct f16vec3"; break; + case EOpConstructF16Vec4: out.debug << "Construct f16vec4"; break; + case EOpConstructF16Mat2x2: out.debug << "Construct f16mat2"; break; + case EOpConstructF16Mat2x3: out.debug << "Construct f16mat2x3"; break; + case EOpConstructF16Mat2x4: out.debug << "Construct f16mat2x4"; break; + case EOpConstructF16Mat3x2: out.debug << "Construct f16mat3x2"; break; + case EOpConstructF16Mat3x3: out.debug << "Construct f16mat3"; break; + case EOpConstructF16Mat3x4: out.debug << "Construct f16mat3x4"; break; + case EOpConstructF16Mat4x2: out.debug << "Construct f16mat4x2"; break; + case EOpConstructF16Mat4x3: out.debug << "Construct f16mat4x3"; break; + case EOpConstructF16Mat4x4: out.debug << "Construct f16mat4"; break; +#endif case EOpConstructStruct: out.debug << "Construct structure"; break; case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break; @@ -636,6 +671,9 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif { const double value = constUnion[i].getDConst(); // Print infinity in a portable way, for test stability. diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index f213dd6c..2e101347 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -950,6 +950,9 @@ int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) case EbtInt64: case EbtUint64: case EbtDouble: size = 8; return 8; +#ifdef AMD_EXTENSIONS + case EbtFloat16: size = 2; return 2; +#endif default: size = 4; return 4; } } diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index dc51682b..967d352a 100755 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -76,6 +76,9 @@ public: virtual void updateExtensionBehavior(int line, const char* const extension, const char* behavior); virtual void fullIntegerCheck(const TSourceLoc&, const char* op); virtual void doubleCheck(const TSourceLoc&, const char* op); +#ifdef AMD_EXTENSIONS + virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false); +#endif virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void spvRemoved(const TSourceLoc&, const char* op); virtual void vulkanRemoved(const TSourceLoc&, const char* op); diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index d28e7beb..3c6d0122 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -705,6 +705,9 @@ int TPpContext::CPPerror(TPpToken* ppToken) while (token != '\n' && token != EndOfInput) { if (token == PpAtomConstInt || token == PpAtomConstUint || token == PpAtomConstInt64 || token == PpAtomConstUint64 || +#ifdef AMD_EXTENSIONS + token == PpAtomConstFloat16 || +#endif token == PpAtomConstFloat || token == PpAtomConstDouble) { message.append(ppToken->name); } else if (token == PpAtomIdentifier || token == PpAtomConstString) { @@ -739,6 +742,9 @@ int TPpContext::CPPpragma(TPpToken* ppToken) case PpAtomConstUint64: case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif tokens.push_back(ppToken->name); break; default: diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index 7daebb3d..518dbdee 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -117,6 +117,10 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) int declen; int str_len; int isDouble = 0; +#ifdef AMD_EXTENSIONS + int isFloat16 = 0; + bool enableFloat16 = parseContext.version >= 450 && parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float); +#endif declen = 0; @@ -200,6 +204,28 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) len = 1,str_len=1; } } +#ifdef AMD_EXTENSIONS + } else if (enableFloat16 && (ch == 'h' || ch == 'H')) { + parseContext.float16Check(ppToken->loc, "half floating-point suffix"); + if (!HasDecimalOrExponent) + parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); + int ch2 = getChar(); + if (ch2 != 'f' && ch2 != 'F') { + ungetChar(); + ungetChar(); + } + else { + if (len < MaxTokenLength) { + str[len++] = (char)ch; + str[len++] = (char)ch2; + isFloat16 = 1; + } + else { + parseContext.ppError(ppToken->loc, "float literal too long", "", ""); + len = 1, str_len = 1; + } + } +#endif } else if (ch == 'f' || ch == 'F') { parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix"); if (! parseContext.relaxedErrors()) @@ -222,6 +248,10 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) if (isDouble) return PpAtomConstDouble; +#ifdef AMD_EXTENSIONS + else if (isFloat16) + return PpAtomConstFloat16; +#endif else return PpAtomConstFloat; } @@ -744,6 +774,9 @@ const char* TPpContext::tokenize(TPpToken* ppToken) case PpAtomConstInt64: case PpAtomConstUint64: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif tokenString = ppToken->name; break; case PpAtomConstString: diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index f5a0513c..48e2e7a3 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -144,6 +144,9 @@ void TPpContext::RecordToken(TokenStream *pTok, int token, TPpToken* ppToken) case PpAtomConstUint64: case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif str = ppToken->name; while (*str) { lAddByte(pTok, (unsigned char) *str); @@ -195,6 +198,9 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) case PpAtomIdentifier: case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif case PpAtomConstInt: case PpAtomConstUint: case PpAtomConstInt64: @@ -221,6 +227,9 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) break; case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif ppToken->dval = atof(ppToken->name); break; case PpAtomConstInt: diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.h b/glslang/MachineIndependent/preprocessor/PpTokens.h index fd4d4076..c84431d3 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.h +++ b/glslang/MachineIndependent/preprocessor/PpTokens.h @@ -123,6 +123,9 @@ enum EFixedAtoms { PpAtomConstUint64, PpAtomConstFloat, PpAtomConstDouble, +#ifdef AMD_EXTENSIONS + PpAtomConstFloat16, +#endif PpAtomConstString, // Identifiers diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index d5577656..ca81458b 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -529,6 +529,9 @@ public: switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT_VEC2 + offset; case EbtDouble: return GL_DOUBLE_VEC2 + offset; +#ifdef AMD_EXTENSIONS + case EbtFloat16: return GL_FLOAT16_VEC2_NV + offset; +#endif case EbtInt: return GL_INT_VEC2 + offset; case EbtUint: return GL_UNSIGNED_INT_VEC2 + offset; case EbtInt64: return GL_INT64_ARB + offset; @@ -588,6 +591,32 @@ public: default: return 0; } } +#ifdef AMD_EXTENSIONS + case EbtFloat16: + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: return GL_FLOAT16_MAT2_AMD; + case 3: return GL_FLOAT16_MAT2x3_AMD; + case 4: return GL_FLOAT16_MAT2x4_AMD; + default: return 0; + } + case 3: + switch (type.getMatrixRows()) { + case 2: return GL_FLOAT16_MAT3x2_AMD; + case 3: return GL_FLOAT16_MAT3_AMD; + case 4: return GL_FLOAT16_MAT3x4_AMD; + default: return 0; + } + case 4: + switch (type.getMatrixRows()) { + case 2: return GL_FLOAT16_MAT4x2_AMD; + case 3: return GL_FLOAT16_MAT4x3_AMD; + case 4: return GL_FLOAT16_MAT4_AMD; + default: return 0; + } + } +#endif default: return 0; } @@ -596,6 +625,9 @@ public: switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT; case EbtDouble: return GL_DOUBLE; +#ifdef AMD_EXTENSIONS + case EbtFloat16: return GL_FLOAT16_NV; +#endif case EbtInt: return GL_INT; case EbtUint: return GL_UNSIGNED_INT; case EbtInt64: return GL_INT64_ARB; diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 8a91eef3..a7cba22b 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -14,6 +14,7 @@ if (TARGET gmock) ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp diff --git a/gtests/HexFloat.cpp b/gtests/HexFloat.cpp new file mode 100644 index 00000000..248513c4 --- /dev/null +++ b/gtests/HexFloat.cpp @@ -0,0 +1,1232 @@ +// Copyright (c) 2015-2016 The Khronos Group Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include +#include +#include +#include +#include + +#include +#include "SPIRV/hex_float.h" + +namespace { +using ::testing::Eq; +using spvutils::BitwiseCast; +using spvutils::Float16; +using spvutils::FloatProxy; +using spvutils::HexFloat; +using spvutils::ParseNormalFloat; + +// In this file "encode" means converting a number into a string, +// and "decode" means converting a string into a number. + +using HexFloatTest = + ::testing::TestWithParam, std::string>>; +using DecodeHexFloatTest = + ::testing::TestWithParam>>; +using HexDoubleTest = + ::testing::TestWithParam, std::string>>; +using DecodeHexDoubleTest = + ::testing::TestWithParam>>; + +// Hex-encodes a float value. +template +std::string EncodeViaHexFloat(const T& value) { + std::stringstream ss; + ss << spvutils::HexFloat(value); + return ss.str(); +} + +// The following two tests can't be DRY because they take different parameter +// types. + +TEST_P(HexFloatTest, EncodeCorrectly) { + EXPECT_THAT(EncodeViaHexFloat(GetParam().first), Eq(GetParam().second)); +} + +TEST_P(HexDoubleTest, EncodeCorrectly) { + EXPECT_THAT(EncodeViaHexFloat(GetParam().first), Eq(GetParam().second)); +} + +// Decodes a hex-float string. +template +FloatProxy Decode(const std::string& str) { + spvutils::HexFloat> decoded(0.f); + EXPECT_TRUE((std::stringstream(str) >> decoded).eof()); + return decoded.value(); +} + +TEST_P(HexFloatTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().second), Eq(GetParam().first)); +} + +TEST_P(HexDoubleTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().second), Eq(GetParam().first)); +} + +INSTANTIATE_TEST_CASE_P( + Float32Tests, HexFloatTest, + ::testing::ValuesIn(std::vector, std::string>>({ + {0.f, "0x0p+0"}, + {1.f, "0x1p+0"}, + {2.f, "0x1p+1"}, + {3.f, "0x1.8p+1"}, + {0.5f, "0x1p-1"}, + {0.25f, "0x1p-2"}, + {0.75f, "0x1.8p-1"}, + {-0.f, "-0x0p+0"}, + {-1.f, "-0x1p+0"}, + {-0.5f, "-0x1p-1"}, + {-0.25f, "-0x1p-2"}, + {-0.75f, "-0x1.8p-1"}, + + // Larger numbers + {512.f, "0x1p+9"}, + {-512.f, "-0x1p+9"}, + {1024.f, "0x1p+10"}, + {-1024.f, "-0x1p+10"}, + {1024.f + 8.f, "0x1.02p+10"}, + {-1024.f - 8.f, "-0x1.02p+10"}, + + // Small numbers + {1.0f / 512.f, "0x1p-9"}, + {1.0f / -512.f, "-0x1p-9"}, + {1.0f / 1024.f, "0x1p-10"}, + {1.0f / -1024.f, "-0x1p-10"}, + {1.0f / 1024.f + 1.0f / 8.f, "0x1.02p-3"}, + {1.0f / -1024.f - 1.0f / 8.f, "-0x1.02p-3"}, + + // lowest non-denorm + {float(ldexp(1.0f, -126)), "0x1p-126"}, + {float(ldexp(-1.0f, -126)), "-0x1p-126"}, + + // Denormalized values + {float(ldexp(1.0f, -127)), "0x1p-127"}, + {float(ldexp(1.0f, -127) / 2.0f), "0x1p-128"}, + {float(ldexp(1.0f, -127) / 4.0f), "0x1p-129"}, + {float(ldexp(1.0f, -127) / 8.0f), "0x1p-130"}, + {float(ldexp(-1.0f, -127)), "-0x1p-127"}, + {float(ldexp(-1.0f, -127) / 2.0f), "-0x1p-128"}, + {float(ldexp(-1.0f, -127) / 4.0f), "-0x1p-129"}, + {float(ldexp(-1.0f, -127) / 8.0f), "-0x1p-130"}, + + {float(ldexp(1.0, -127) + (ldexp(1.0, -127) / 2.0f)), "0x1.8p-127"}, + {float(ldexp(1.0, -127) / 2.0 + (ldexp(1.0, -127) / 4.0f)), + "0x1.8p-128"}, + + })),); + +INSTANTIATE_TEST_CASE_P( + Float32NanTests, HexFloatTest, + ::testing::ValuesIn(std::vector, std::string>>({ + // Various NAN and INF cases + {uint32_t(0xFF800000), "-0x1p+128"}, // -inf + {uint32_t(0x7F800000), "0x1p+128"}, // inf + {uint32_t(0xFFC00000), "-0x1.8p+128"}, // -nan + {uint32_t(0xFF800100), "-0x1.0002p+128"}, // -nan + {uint32_t(0xFF800c00), "-0x1.0018p+128"}, // -nan + {uint32_t(0xFF80F000), "-0x1.01ep+128"}, // -nan + {uint32_t(0xFFFFFFFF), "-0x1.fffffep+128"}, // -nan + {uint32_t(0x7FC00000), "0x1.8p+128"}, // +nan + {uint32_t(0x7F800100), "0x1.0002p+128"}, // +nan + {uint32_t(0x7f800c00), "0x1.0018p+128"}, // +nan + {uint32_t(0x7F80F000), "0x1.01ep+128"}, // +nan + {uint32_t(0x7FFFFFFF), "0x1.fffffep+128"}, // +nan + })),); + +INSTANTIATE_TEST_CASE_P( + Float64Tests, HexDoubleTest, + ::testing::ValuesIn( + std::vector, std::string>>({ + {0., "0x0p+0"}, + {1., "0x1p+0"}, + {2., "0x1p+1"}, + {3., "0x1.8p+1"}, + {0.5, "0x1p-1"}, + {0.25, "0x1p-2"}, + {0.75, "0x1.8p-1"}, + {-0., "-0x0p+0"}, + {-1., "-0x1p+0"}, + {-0.5, "-0x1p-1"}, + {-0.25, "-0x1p-2"}, + {-0.75, "-0x1.8p-1"}, + + // Larger numbers + {512., "0x1p+9"}, + {-512., "-0x1p+9"}, + {1024., "0x1p+10"}, + {-1024., "-0x1p+10"}, + {1024. + 8., "0x1.02p+10"}, + {-1024. - 8., "-0x1.02p+10"}, + + // Large outside the range of normal floats + {ldexp(1.0, 128), "0x1p+128"}, + {ldexp(1.0, 129), "0x1p+129"}, + {ldexp(-1.0, 128), "-0x1p+128"}, + {ldexp(-1.0, 129), "-0x1p+129"}, + {ldexp(1.0, 128) + ldexp(1.0, 90), "0x1.0000000004p+128"}, + {ldexp(1.0, 129) + ldexp(1.0, 120), "0x1.008p+129"}, + {ldexp(-1.0, 128) + ldexp(1.0, 90), "-0x1.fffffffff8p+127"}, + {ldexp(-1.0, 129) + ldexp(1.0, 120), "-0x1.ffp+128"}, + + // Small numbers + {1.0 / 512., "0x1p-9"}, + {1.0 / -512., "-0x1p-9"}, + {1.0 / 1024., "0x1p-10"}, + {1.0 / -1024., "-0x1p-10"}, + {1.0 / 1024. + 1.0 / 8., "0x1.02p-3"}, + {1.0 / -1024. - 1.0 / 8., "-0x1.02p-3"}, + + // Small outside the range of normal floats + {ldexp(1.0, -128), "0x1p-128"}, + {ldexp(1.0, -129), "0x1p-129"}, + {ldexp(-1.0, -128), "-0x1p-128"}, + {ldexp(-1.0, -129), "-0x1p-129"}, + {ldexp(1.0, -128) + ldexp(1.0, -90), "0x1.0000000004p-90"}, + {ldexp(1.0, -129) + ldexp(1.0, -120), "0x1.008p-120"}, + {ldexp(-1.0, -128) + ldexp(1.0, -90), "0x1.fffffffff8p-91"}, + {ldexp(-1.0, -129) + ldexp(1.0, -120), "0x1.ffp-121"}, + + // lowest non-denorm + {ldexp(1.0, -1022), "0x1p-1022"}, + {ldexp(-1.0, -1022), "-0x1p-1022"}, + + // Denormalized values + {ldexp(1.0, -1023), "0x1p-1023"}, + {ldexp(1.0, -1023) / 2.0, "0x1p-1024"}, + {ldexp(1.0, -1023) / 4.0, "0x1p-1025"}, + {ldexp(1.0, -1023) / 8.0, "0x1p-1026"}, + {ldexp(-1.0, -1024), "-0x1p-1024"}, + {ldexp(-1.0, -1024) / 2.0, "-0x1p-1025"}, + {ldexp(-1.0, -1024) / 4.0, "-0x1p-1026"}, + {ldexp(-1.0, -1024) / 8.0, "-0x1p-1027"}, + + {ldexp(1.0, -1023) + (ldexp(1.0, -1023) / 2.0), "0x1.8p-1023"}, + {ldexp(1.0, -1023) / 2.0 + (ldexp(1.0, -1023) / 4.0), + "0x1.8p-1024"}, + + })),); + +INSTANTIATE_TEST_CASE_P( + Float64NanTests, HexDoubleTest, + ::testing::ValuesIn(std::vector< + std::pair, std::string>>({ + // Various NAN and INF cases + {uint64_t(0xFFF0000000000000LL), "-0x1p+1024"}, //-inf + {uint64_t(0x7FF0000000000000LL), "0x1p+1024"}, //+inf + {uint64_t(0xFFF8000000000000LL), "-0x1.8p+1024"}, // -nan + {uint64_t(0xFFF0F00000000000LL), "-0x1.0fp+1024"}, // -nan + {uint64_t(0xFFF0000000000001LL), "-0x1.0000000000001p+1024"}, // -nan + {uint64_t(0xFFF0000300000000LL), "-0x1.00003p+1024"}, // -nan + {uint64_t(0xFFFFFFFFFFFFFFFFLL), "-0x1.fffffffffffffp+1024"}, // -nan + {uint64_t(0x7FF8000000000000LL), "0x1.8p+1024"}, // +nan + {uint64_t(0x7FF0F00000000000LL), "0x1.0fp+1024"}, // +nan + {uint64_t(0x7FF0000000000001LL), "0x1.0000000000001p+1024"}, // -nan + {uint64_t(0x7FF0000300000000LL), "0x1.00003p+1024"}, // -nan + {uint64_t(0x7FFFFFFFFFFFFFFFLL), "0x1.fffffffffffffp+1024"}, // -nan + })),); + +TEST(HexFloatStreamTest, OperatorLeftShiftPreservesFloatAndFill) { + std::stringstream s; + s << std::setw(4) << std::oct << std::setfill('x') << 8 << " " + << FloatProxy(uint32_t(0xFF800100)) << " " << std::setw(4) << 9; + EXPECT_THAT(s.str(), Eq(std::string("xx10 -0x1.0002p+128 xx11"))); +} + +TEST(HexDoubleStreamTest, OperatorLeftShiftPreservesFloatAndFill) { + std::stringstream s; + s << std::setw(4) << std::oct << std::setfill('x') << 8 << " " + << FloatProxy(uint64_t(0x7FF0F00000000000LL)) << " " << std::setw(4) + << 9; + EXPECT_THAT(s.str(), Eq(std::string("xx10 0x1.0fp+1024 xx11"))); +} + +TEST_P(DecodeHexFloatTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().first), Eq(GetParam().second)); +} + +TEST_P(DecodeHexDoubleTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().first), Eq(GetParam().second)); +} + +INSTANTIATE_TEST_CASE_P( + Float32DecodeTests, DecodeHexFloatTest, + ::testing::ValuesIn(std::vector>>({ + {"0x0p+000", 0.f}, + {"0x0p0", 0.f}, + {"0x0p-0", 0.f}, + + // flush to zero cases + {"0x1p-500", 0.f}, // Exponent underflows. + {"-0x1p-500", -0.f}, + {"0x0.00000000001p-126", 0.f}, // Fraction causes underflow. + {"-0x0.0000000001p-127", -0.f}, + {"-0x0.01p-142", -0.f}, // Fraction causes additional underflow. + {"0x0.01p-142", 0.f}, + + // Some floats that do not encode the same way as they decode. + {"0x2p+0", 2.f}, + {"0xFFp+0", 255.f}, + {"0x0.8p+0", 0.5f}, + {"0x0.4p+0", 0.25f}, + })),); + +INSTANTIATE_TEST_CASE_P( + Float32DecodeInfTests, DecodeHexFloatTest, + ::testing::ValuesIn(std::vector>>({ + // inf cases + {"-0x1p+128", uint32_t(0xFF800000)}, // -inf + {"0x32p+127", uint32_t(0x7F800000)}, // inf + {"0x32p+500", uint32_t(0x7F800000)}, // inf + {"-0x32p+127", uint32_t(0xFF800000)}, // -inf + })),); + +INSTANTIATE_TEST_CASE_P( + Float64DecodeTests, DecodeHexDoubleTest, + ::testing::ValuesIn( + std::vector>>({ + {"0x0p+000", 0.}, + {"0x0p0", 0.}, + {"0x0p-0", 0.}, + + // flush to zero cases + {"0x1p-5000", 0.}, // Exponent underflows. + {"-0x1p-5000", -0.}, + {"0x0.0000000000000001p-1023", 0.}, // Fraction causes underflow. + {"-0x0.000000000000001p-1024", -0.}, + {"-0x0.01p-1090", -0.f}, // Fraction causes additional underflow. + {"0x0.01p-1090", 0.}, + + // Some floats that do not encode the same way as they decode. + {"0x2p+0", 2.}, + {"0xFFp+0", 255.}, + {"0x0.8p+0", 0.5}, + {"0x0.4p+0", 0.25}, + })),); + +INSTANTIATE_TEST_CASE_P( + Float64DecodeInfTests, DecodeHexDoubleTest, + ::testing::ValuesIn( + std::vector>>({ + // inf cases + {"-0x1p+1024", uint64_t(0xFFF0000000000000)}, // -inf + {"0x32p+1023", uint64_t(0x7FF0000000000000)}, // inf + {"0x32p+5000", uint64_t(0x7FF0000000000000)}, // inf + {"-0x32p+1023", uint64_t(0xFFF0000000000000)}, // -inf + })),); + +TEST(FloatProxy, ValidConversion) { + EXPECT_THAT(FloatProxy(1.f).getAsFloat(), Eq(1.0f)); + EXPECT_THAT(FloatProxy(32.f).getAsFloat(), Eq(32.0f)); + EXPECT_THAT(FloatProxy(-1.f).getAsFloat(), Eq(-1.0f)); + EXPECT_THAT(FloatProxy(0.f).getAsFloat(), Eq(0.0f)); + EXPECT_THAT(FloatProxy(-0.f).getAsFloat(), Eq(-0.0f)); + EXPECT_THAT(FloatProxy(1.2e32f).getAsFloat(), Eq(1.2e32f)); + + EXPECT_TRUE(std::isinf(FloatProxy(uint32_t(0xFF800000)).getAsFloat())); + EXPECT_TRUE(std::isinf(FloatProxy(uint32_t(0x7F800000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFFC00000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF800100)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF800c00)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF80F000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFFFFFFFF)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7FC00000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7F800100)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7f800c00)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7F80F000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7FFFFFFF)).getAsFloat())); + + EXPECT_THAT(FloatProxy(uint32_t(0xFF800000)).data(), Eq(0xFF800000u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7F800000)).data(), Eq(0x7F800000u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFFC00000)).data(), Eq(0xFFC00000u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFF800100)).data(), Eq(0xFF800100u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFF800c00)).data(), Eq(0xFF800c00u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFF80F000)).data(), Eq(0xFF80F000u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFFFFFFFF)).data(), Eq(0xFFFFFFFFu)); + EXPECT_THAT(FloatProxy(uint32_t(0x7FC00000)).data(), Eq(0x7FC00000u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7F800100)).data(), Eq(0x7F800100u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7f800c00)).data(), Eq(0x7f800c00u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7F80F000)).data(), Eq(0x7F80F000u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7FFFFFFF)).data(), Eq(0x7FFFFFFFu)); +} + +TEST(FloatProxy, Nan) { + EXPECT_TRUE(FloatProxy(uint32_t(0xFFC00000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFF800100)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFF800c00)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFF80F000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFFFFFFFF)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7FC00000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7F800100)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7f800c00)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7F80F000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7FFFFFFF)).isNan()); +} + +TEST(FloatProxy, Negation) { + EXPECT_THAT((-FloatProxy(1.f)).getAsFloat(), Eq(-1.0f)); + EXPECT_THAT((-FloatProxy(0.f)).getAsFloat(), Eq(-0.0f)); + + EXPECT_THAT((-FloatProxy(-1.f)).getAsFloat(), Eq(1.0f)); + EXPECT_THAT((-FloatProxy(-0.f)).getAsFloat(), Eq(0.0f)); + + EXPECT_THAT((-FloatProxy(32.f)).getAsFloat(), Eq(-32.0f)); + EXPECT_THAT((-FloatProxy(-32.f)).getAsFloat(), Eq(32.0f)); + + EXPECT_THAT((-FloatProxy(1.2e32f)).getAsFloat(), Eq(-1.2e32f)); + EXPECT_THAT((-FloatProxy(-1.2e32f)).getAsFloat(), Eq(1.2e32f)); + + EXPECT_THAT( + (-FloatProxy(std::numeric_limits::infinity())).getAsFloat(), + Eq(-std::numeric_limits::infinity())); + EXPECT_THAT((-FloatProxy(-std::numeric_limits::infinity())) + .getAsFloat(), + Eq(std::numeric_limits::infinity())); +} + +// Test conversion of FloatProxy values to strings. +// +// In previous cases, we always wrapped the FloatProxy value in a HexFloat +// before conversion to a string. In the following cases, the FloatProxy +// decides for itself whether to print as a regular number or as a hex float. + +using FloatProxyFloatTest = + ::testing::TestWithParam, std::string>>; +using FloatProxyDoubleTest = + ::testing::TestWithParam, std::string>>; + +// Converts a float value to a string via a FloatProxy. +template +std::string EncodeViaFloatProxy(const T& value) { + std::stringstream ss; + ss << value; + return ss.str(); +} + +// Converts a floating point string so that the exponent prefix +// is 'e', and the exponent value does not have leading zeros. +// The Microsoft runtime library likes to write things like "2.5E+010". +// Convert that to "2.5e+10". +// We don't care what happens to strings that are not floating point +// strings. +std::string NormalizeExponentInFloatString(std::string in) { + std::string result; + // Reserve one spot for the terminating null, even when the sscanf fails. + std::vector prefix(in.size() + 1); + char e; + char plus_or_minus; + int exponent; // in base 10 + if ((4 == std::sscanf(in.c_str(), "%[-+.0123456789]%c%c%d", prefix.data(), &e, + &plus_or_minus, &exponent)) && + (e == 'e' || e == 'E') && + (plus_or_minus == '-' || plus_or_minus == '+')) { + // It looks like a floating point value with exponent. + std::stringstream out; + out << prefix.data() << 'e' << plus_or_minus << exponent; + result = out.str(); + } else { + result = in; + } + return result; +} + +TEST(NormalizeFloat, Sample) { + EXPECT_THAT(NormalizeExponentInFloatString(""), Eq("")); + EXPECT_THAT(NormalizeExponentInFloatString("1e-12"), Eq("1e-12")); + EXPECT_THAT(NormalizeExponentInFloatString("1E+14"), Eq("1e+14")); + EXPECT_THAT(NormalizeExponentInFloatString("1e-0012"), Eq("1e-12")); + EXPECT_THAT(NormalizeExponentInFloatString("1.263E+014"), Eq("1.263e+14")); +} + +// The following two tests can't be DRY because they take different parameter +// types. +TEST_P(FloatProxyFloatTest, EncodeCorrectly) { + EXPECT_THAT( + NormalizeExponentInFloatString(EncodeViaFloatProxy(GetParam().first)), + Eq(GetParam().second)); +} + +TEST_P(FloatProxyDoubleTest, EncodeCorrectly) { + EXPECT_THAT( + NormalizeExponentInFloatString(EncodeViaFloatProxy(GetParam().first)), + Eq(GetParam().second)); +} + +INSTANTIATE_TEST_CASE_P( + Float32Tests, FloatProxyFloatTest, + ::testing::ValuesIn(std::vector, std::string>>({ + // Zero + {0.f, "0"}, + // Normal numbers + {1.f, "1"}, + {-0.25f, "-0.25"}, + {1000.0f, "1000"}, + + // Still normal numbers, but with large magnitude exponents. + {float(ldexp(1.f, 126)), "8.50706e+37"}, + {float(ldexp(-1.f, -126)), "-1.17549e-38"}, + + // denormalized values are printed as hex floats. + {float(ldexp(1.0f, -127)), "0x1p-127"}, + {float(ldexp(1.5f, -128)), "0x1.8p-128"}, + {float(ldexp(1.25, -129)), "0x1.4p-129"}, + {float(ldexp(1.125, -130)), "0x1.2p-130"}, + {float(ldexp(-1.0f, -127)), "-0x1p-127"}, + {float(ldexp(-1.0f, -128)), "-0x1p-128"}, + {float(ldexp(-1.0f, -129)), "-0x1p-129"}, + {float(ldexp(-1.5f, -130)), "-0x1.8p-130"}, + + // NaNs + {FloatProxy(uint32_t(0xFFC00000)), "-0x1.8p+128"}, + {FloatProxy(uint32_t(0xFF800100)), "-0x1.0002p+128"}, + + {std::numeric_limits::infinity(), "0x1p+128"}, + {-std::numeric_limits::infinity(), "-0x1p+128"}, + })),); + +INSTANTIATE_TEST_CASE_P( + Float64Tests, FloatProxyDoubleTest, + ::testing::ValuesIn( + std::vector, std::string>>({ + {0., "0"}, + {1., "1"}, + {-0.25, "-0.25"}, + {1000.0, "1000"}, + + // Large outside the range of normal floats + {ldexp(1.0, 128), "3.40282366920938e+38"}, + {ldexp(1.5, 129), "1.02084710076282e+39"}, + {ldexp(-1.0, 128), "-3.40282366920938e+38"}, + {ldexp(-1.5, 129), "-1.02084710076282e+39"}, + + // Small outside the range of normal floats + {ldexp(1.5, -129), "2.20405190779179e-39"}, + {ldexp(-1.5, -129), "-2.20405190779179e-39"}, + + // lowest non-denorm + {ldexp(1.0, -1022), "2.2250738585072e-308"}, + {ldexp(-1.0, -1022), "-2.2250738585072e-308"}, + + // Denormalized values + {ldexp(1.125, -1023), "0x1.2p-1023"}, + {ldexp(-1.375, -1024), "-0x1.6p-1024"}, + + // NaNs + {uint64_t(0x7FF8000000000000LL), "0x1.8p+1024"}, + {uint64_t(0xFFF0F00000000000LL), "-0x1.0fp+1024"}, + + // Infinity + {std::numeric_limits::infinity(), "0x1p+1024"}, + {-std::numeric_limits::infinity(), "-0x1p+1024"}, + + })),); + +// double is used so that unbiased_exponent can be used with the output +// of ldexp directly. +int32_t unbiased_exponent(double f) { + return spvutils::HexFloat>( + static_cast(f)).getUnbiasedNormalizedExponent(); +} + +int16_t unbiased_half_exponent(uint16_t f) { + return spvutils::HexFloat>(f) + .getUnbiasedNormalizedExponent(); +} + +TEST(HexFloatOperationTest, UnbiasedExponent) { + // Float cases + EXPECT_EQ(0, unbiased_exponent(ldexp(1.0f, 0))); + EXPECT_EQ(-32, unbiased_exponent(ldexp(1.0f, -32))); + EXPECT_EQ(42, unbiased_exponent(ldexp(1.0f, 42))); + EXPECT_EQ(125, unbiased_exponent(ldexp(1.0f, 125))); + // Saturates to 128 + EXPECT_EQ(128, unbiased_exponent(ldexp(1.0f, 256))); + + EXPECT_EQ(-100, unbiased_exponent(ldexp(1.0f, -100))); + EXPECT_EQ(-127, unbiased_exponent(ldexp(1.0f, -127))); // First denorm + EXPECT_EQ(-128, unbiased_exponent(ldexp(1.0f, -128))); + EXPECT_EQ(-129, unbiased_exponent(ldexp(1.0f, -129))); + EXPECT_EQ(-140, unbiased_exponent(ldexp(1.0f, -140))); + // Smallest representable number + EXPECT_EQ(-126 - 23, unbiased_exponent(ldexp(1.0f, -126 - 23))); + // Should get rounded to 0 first. + EXPECT_EQ(0, unbiased_exponent(ldexp(1.0f, -127 - 23))); + + // Float16 cases + // The exponent is represented in the bits 0x7C00 + // The offset is -15 + EXPECT_EQ(0, unbiased_half_exponent(0x3C00)); + EXPECT_EQ(3, unbiased_half_exponent(0x4800)); + EXPECT_EQ(-1, unbiased_half_exponent(0x3800)); + EXPECT_EQ(-14, unbiased_half_exponent(0x0400)); + EXPECT_EQ(16, unbiased_half_exponent(0x7C00)); + EXPECT_EQ(10, unbiased_half_exponent(0x6400)); + + // Smallest representable number + EXPECT_EQ(-24, unbiased_half_exponent(0x0001)); +} + +// Creates a float that is the sum of 1/(2 ^ fractions[i]) for i in factions +float float_fractions(const std::vector& fractions) { + float f = 0; + for(int32_t i: fractions) { + f += std::ldexp(1.0f, -i); + } + return f; +} + +// Returns the normalized significand of a HexFloat> +// that was created by calling float_fractions with the input fractions, +// raised to the power of exp. +uint32_t normalized_significand(const std::vector& fractions, uint32_t exp) { + return spvutils::HexFloat>( + static_cast(ldexp(float_fractions(fractions), exp))) + .getNormalizedSignificand(); +} + +// Sets the bits from MSB to LSB of the significand part of a float. +// For example 0 would set the bit 23 (counting from LSB to MSB), +// and 1 would set the 22nd bit. +uint32_t bits_set(const std::vector& bits) { + const uint32_t top_bit = 1u << 22u; + uint32_t val= 0; + for(uint32_t i: bits) { + val |= top_bit >> i; + } + return val; +} + +// The same as bits_set but for a Float16 value instead of 32-bit floating +// point. +uint16_t half_bits_set(const std::vector& bits) { + const uint32_t top_bit = 1u << 9u; + uint32_t val= 0; + for(uint32_t i: bits) { + val |= top_bit >> i; + } + return static_cast(val); +} + +TEST(HexFloatOperationTest, NormalizedSignificand) { + // For normalized numbers (the following) it should be a simple matter + // of getting rid of the top implicit bit + EXPECT_EQ(bits_set({}), normalized_significand({0}, 0)); + EXPECT_EQ(bits_set({0}), normalized_significand({0, 1}, 0)); + EXPECT_EQ(bits_set({0, 1}), normalized_significand({0, 1, 2}, 0)); + EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 0)); + EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 32)); + EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 126)); + + // For denormalized numbers we expect the normalized significand to + // shift as if it were normalized. This means, in practice that the + // top_most set bit will be cut off. Looks very similar to above (on purpose) + EXPECT_EQ(bits_set({}), normalized_significand({0}, -127)); + EXPECT_EQ(bits_set({3}), normalized_significand({0, 4}, -128)); + EXPECT_EQ(bits_set({3}), normalized_significand({0, 4}, -127)); + EXPECT_EQ(bits_set({}), normalized_significand({22}, -127)); + EXPECT_EQ(bits_set({0}), normalized_significand({21, 22}, -127)); +} + +// Returns the 32-bit floating point value created by +// calling setFromSignUnbiasedExponentAndNormalizedSignificand +// on a HexFloat> +float set_from_sign(bool negative, int32_t unbiased_exponent, + uint32_t significand, bool round_denorm_up) { + spvutils::HexFloat> f(0.f); + f.setFromSignUnbiasedExponentAndNormalizedSignificand( + negative, unbiased_exponent, significand, round_denorm_up); + return f.value().getAsFloat(); +} + +TEST(HexFloatOperationTests, + SetFromSignUnbiasedExponentAndNormalizedSignificand) { + + EXPECT_EQ(1.f, set_from_sign(false, 0, 0, false)); + + // Tests insertion of various denormalized numbers with and without round up. + EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -149, 0, false)); + EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -149, 0, true)); + EXPECT_EQ(0.f, set_from_sign(false, -150, 1, false)); + EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -150, 1, true)); + + EXPECT_EQ(ldexp(1.0f, -127), set_from_sign(false, -127, 0, false)); + EXPECT_EQ(ldexp(1.0f, -128), set_from_sign(false, -128, 0, false)); + EXPECT_EQ(float_fractions({0, 1, 2, 5}), + set_from_sign(false, 0, bits_set({0, 1, 4}), false)); + EXPECT_EQ(ldexp(float_fractions({0, 1, 2, 5}), -32), + set_from_sign(false, -32, bits_set({0, 1, 4}), false)); + EXPECT_EQ(ldexp(float_fractions({0, 1, 2, 5}), -128), + set_from_sign(false, -128, bits_set({0, 1, 4}), false)); + + // The negative cases from above. + EXPECT_EQ(-1.f, set_from_sign(true, 0, 0, false)); + EXPECT_EQ(-ldexp(1.0, -127), set_from_sign(true, -127, 0, false)); + EXPECT_EQ(-ldexp(1.0, -128), set_from_sign(true, -128, 0, false)); + EXPECT_EQ(-float_fractions({0, 1, 2, 5}), + set_from_sign(true, 0, bits_set({0, 1, 4}), false)); + EXPECT_EQ(-ldexp(float_fractions({0, 1, 2, 5}), -32), + set_from_sign(true, -32, bits_set({0, 1, 4}), false)); + EXPECT_EQ(-ldexp(float_fractions({0, 1, 2, 5}), -128), + set_from_sign(true, -128, bits_set({0, 1, 4}), false)); +} + +TEST(HexFloatOperationTests, NonRounding) { + // Rounding from 32-bit hex-float to 32-bit hex-float should be trivial, + // except in the denorm case which is a bit more complex. + using HF = spvutils::HexFloat>; + bool carry_bit = false; + + spvutils::round_direction rounding[] = { + spvutils::round_direction::kToZero, + spvutils::round_direction::kToNearestEven, + spvutils::round_direction::kToPositiveInfinity, + spvutils::round_direction::kToNegativeInfinity}; + + // Everything fits, so this should be straight-forward + for (spvutils::round_direction round : rounding) { + EXPECT_EQ(bits_set({}), HF(0.f).getRoundedNormalizedSignificand( + round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ(bits_set({0}), + HF(float_fractions({0, 1})) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ(bits_set({1, 3}), + HF(float_fractions({0, 2, 4})) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ( + bits_set({0, 1, 4}), + HF(static_cast(-ldexp(float_fractions({0, 1, 2, 5}), -128))) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ( + bits_set({0, 1, 4, 22}), + HF(static_cast(float_fractions({0, 1, 2, 5, 23}))) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + } +} + +using RD = spvutils::round_direction; +struct RoundSignificandCase { + float source_float; + std::pair expected_results; + spvutils::round_direction round; +}; + +using HexFloatRoundTest = + ::testing::TestWithParam; + +TEST_P(HexFloatRoundTest, RoundDownToFP16) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + + HF input_value(GetParam().source_float); + bool carry_bit = false; + EXPECT_EQ(GetParam().expected_results.first, + input_value.getRoundedNormalizedSignificand( + GetParam().round, &carry_bit)); + EXPECT_EQ(carry_bit, GetParam().expected_results.second); +} + +// clang-format off +INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatRoundTest, + ::testing::ValuesIn(std::vector( + { + {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToZero}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToNearestEven}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToPositiveInfinity}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToNegativeInfinity}, + {float_fractions({0, 1}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, + + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToNearestEven}, + + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToZero}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), RD::kToPositiveInfinity}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNegativeInfinity}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), RD::kToNearestEven}, + + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToPositiveInfinity}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNegativeInfinity}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + + // Carries + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), RD::kToZero}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), RD::kToPositiveInfinity}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), RD::kToNegativeInfinity}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), RD::kToNearestEven}, + + // Cases where original number was denorm. Note: this should have no effect + // the number is pre-normalized. + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -128)), std::make_pair(half_bits_set({0}), false), RD::kToZero}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -129)), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -131)), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -130)), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + })),); +// clang-format on + +struct UpCastSignificandCase { + uint16_t source_half; + uint32_t expected_result; +}; + +using HexFloatRoundUpSignificandTest = + ::testing::TestWithParam; +TEST_P(HexFloatRoundUpSignificandTest, Widening) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + bool carry_bit = false; + + spvutils::round_direction rounding[] = { + spvutils::round_direction::kToZero, + spvutils::round_direction::kToNearestEven, + spvutils::round_direction::kToPositiveInfinity, + spvutils::round_direction::kToNegativeInfinity}; + + // Everything fits, so everything should just be bit-shifts. + for (spvutils::round_direction round : rounding) { + carry_bit = false; + HF16 input_value(GetParam().source_half); + EXPECT_EQ( + GetParam().expected_result, + input_value.getRoundedNormalizedSignificand(round, &carry_bit)) + << std::hex << "0x" + << input_value.getRoundedNormalizedSignificand(round, &carry_bit) + << " 0x" << GetParam().expected_result; + EXPECT_FALSE(carry_bit); + } +} + +INSTANTIATE_TEST_CASE_P(F16toF32, HexFloatRoundUpSignificandTest, + // 0xFC00 of the source 16-bit hex value cover the sign and the exponent. + // They are ignored for this test. + ::testing::ValuesIn(std::vector( + { + {0x3F00, 0x600000}, + {0x0F00, 0x600000}, + {0x0F01, 0x602000}, + {0x0FFF, 0x7FE000}, + })),); + +struct DownCastTest { + float source_float; + uint16_t expected_half; + std::vector directions; +}; + +std::string get_round_text(spvutils::round_direction direction) { +#define CASE(round_direction) \ + case round_direction: \ + return #round_direction + + switch (direction) { + CASE(spvutils::round_direction::kToZero); + CASE(spvutils::round_direction::kToPositiveInfinity); + CASE(spvutils::round_direction::kToNegativeInfinity); + CASE(spvutils::round_direction::kToNearestEven); + } +#undef CASE + return ""; +} + +using HexFloatFP32To16Tests = ::testing::TestWithParam; + +TEST_P(HexFloatFP32To16Tests, NarrowingCasts) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + HF f(GetParam().source_float); + for (auto round : GetParam().directions) { + HF16 half(0); + f.castTo(half, round); + EXPECT_EQ(GetParam().expected_half, half.value().getAsFloat().get_value()) + << get_round_text(round) << " " << std::hex + << spvutils::BitwiseCast(GetParam().source_float) + << " cast to: " << half.value().getAsFloat().get_value(); + } +} + +const uint16_t positive_infinity = 0x7C00; +const uint16_t negative_infinity = 0xFC00; + +INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatFP32To16Tests, + ::testing::ValuesIn(std::vector( + { + // Exactly representable as half. + {0.f, 0x0, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {-0.f, 0x8000, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {1.0f, 0x3C00, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {-1.0f, 0xBC00, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + + {float_fractions({0, 1, 10}) , 0x3E01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {-float_fractions({0, 1, 10}) , 0xBE01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(ldexp(float_fractions({0, 1, 10}), 3)), 0x4A01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(-ldexp(float_fractions({0, 1, 10}), 3)), 0xCA01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + + + // Underflow + {static_cast(ldexp(1.0f, -25)), 0x0, {RD::kToZero, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(ldexp(1.0f, -25)), 0x1, {RD::kToPositiveInfinity}}, + {static_cast(-ldexp(1.0f, -25)), 0x8000, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNearestEven}}, + {static_cast(-ldexp(1.0f, -25)), 0x8001, {RD::kToNegativeInfinity}}, + {static_cast(ldexp(1.0f, -24)), 0x1, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + + // Overflow + {static_cast(ldexp(1.0f, 16)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(ldexp(1.0f, 18)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(ldexp(1.3f, 16)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(-ldexp(1.0f, 16)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(-ldexp(1.0f, 18)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(-ldexp(1.3f, 16)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + + // Transfer of Infinities + {std::numeric_limits::infinity(), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {-std::numeric_limits::infinity(), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + + // Nans are below because we cannot test for equality. + })),); + +struct UpCastCase{ + uint16_t source_half; + float expected_float; +}; + +using HexFloatFP16To32Tests = ::testing::TestWithParam; +TEST_P(HexFloatFP16To32Tests, WideningCasts) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + HF16 f(GetParam().source_half); + + spvutils::round_direction rounding[] = { + spvutils::round_direction::kToZero, + spvutils::round_direction::kToNearestEven, + spvutils::round_direction::kToPositiveInfinity, + spvutils::round_direction::kToNegativeInfinity}; + + // Everything fits, so everything should just be bit-shifts. + for (spvutils::round_direction round : rounding) { + HF flt(0.f); + f.castTo(flt, round); + EXPECT_EQ(GetParam().expected_float, flt.value().getAsFloat()) + << get_round_text(round) << " " << std::hex + << spvutils::BitwiseCast(GetParam().source_half) + << " cast to: " << flt.value().getAsFloat(); + } +} + +INSTANTIATE_TEST_CASE_P(F16ToF32, HexFloatFP16To32Tests, + ::testing::ValuesIn(std::vector( + { + {0x0000, 0.f}, + {0x8000, -0.f}, + {0x3C00, 1.0f}, + {0xBC00, -1.0f}, + {0x3F00, float_fractions({0, 1, 2})}, + {0xBF00, -float_fractions({0, 1, 2})}, + {0x3F01, float_fractions({0, 1, 2, 10})}, + {0xBF01, -float_fractions({0, 1, 2, 10})}, + + // denorm + {0x0001, static_cast(ldexp(1.0, -24))}, + {0x0002, static_cast(ldexp(1.0, -23))}, + {0x8001, static_cast(-ldexp(1.0, -24))}, + {0x8011, static_cast(-ldexp(1.0, -20) + -ldexp(1.0, -24))}, + + // inf + {0x7C00, std::numeric_limits::infinity()}, + {0xFC00, -std::numeric_limits::infinity()}, + })),); + +TEST(HexFloatOperationTests, NanTests) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + spvutils::round_direction rounding[] = { + spvutils::round_direction::kToZero, + spvutils::round_direction::kToNearestEven, + spvutils::round_direction::kToPositiveInfinity, + spvutils::round_direction::kToNegativeInfinity}; + + // Everything fits, so everything should just be bit-shifts. + for (spvutils::round_direction round : rounding) { + HF16 f16(0); + HF f(0.f); + HF(std::numeric_limits::quiet_NaN()).castTo(f16, round); + EXPECT_TRUE(f16.value().isNan()); + HF(std::numeric_limits::signaling_NaN()).castTo(f16, round); + EXPECT_TRUE(f16.value().isNan()); + + HF16(0x7C01).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0x7C11).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0xFC01).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0x7C10).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0xFF00).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + } +} + +// A test case for parsing good and bad HexFloat> literals. +template +struct FloatParseCase { + std::string literal; + bool negate_value; + bool expect_success; + HexFloat> expected_value; +}; + +using ParseNormalFloatTest = ::testing::TestWithParam>; + +TEST_P(ParseNormalFloatTest, Samples) { + std::stringstream input(GetParam().literal); + HexFloat> parsed_value(0.0f); + ParseNormalFloat(input, GetParam().negate_value, parsed_value); + EXPECT_NE(GetParam().expect_success, input.fail()) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + if (GetParam().expect_success) { + EXPECT_THAT(parsed_value.value(), Eq(GetParam().expected_value.value())) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + } +} + +// Returns a FloatParseCase with expected failure. +template +FloatParseCase BadFloatParseCase(std::string literal, bool negate_value, + T expected_value) { + HexFloat> proxy_expected_value(expected_value); + return FloatParseCase{literal, negate_value, false, proxy_expected_value}; +} + +// Returns a FloatParseCase that should successfully parse to a given value. +template +FloatParseCase GoodFloatParseCase(std::string literal, bool negate_value, + T expected_value) { + HexFloat> proxy_expected_value(expected_value); + return FloatParseCase{literal, negate_value, true, proxy_expected_value}; +} + +INSTANTIATE_TEST_CASE_P( + FloatParse, ParseNormalFloatTest, + ::testing::ValuesIn(std::vector>{ + // Failing cases due to trivially incorrect syntax. + BadFloatParseCase("abc", false, 0.0f), + BadFloatParseCase("abc", true, 0.0f), + + // Valid cases. + GoodFloatParseCase("0", false, 0.0f), + GoodFloatParseCase("0.0", false, 0.0f), + GoodFloatParseCase("-0.0", false, -0.0f), + GoodFloatParseCase("2.0", false, 2.0f), + GoodFloatParseCase("-2.0", false, -2.0f), + GoodFloatParseCase("+2.0", false, 2.0f), + // Cases with negate_value being true. + GoodFloatParseCase("0.0", true, -0.0f), + GoodFloatParseCase("2.0", true, -2.0f), + + // When negate_value is true, we should not accept a + // leading minus or plus. + BadFloatParseCase("-0.0", true, 0.0f), + BadFloatParseCase("-2.0", true, 0.0f), + BadFloatParseCase("+0.0", true, 0.0f), + BadFloatParseCase("+2.0", true, 0.0f), + + // Overflow is an error for 32-bit float parsing. + BadFloatParseCase("1e40", false, FLT_MAX), + BadFloatParseCase("1e40", true, -FLT_MAX), + BadFloatParseCase("-1e40", false, -FLT_MAX), + // We can't have -1e40 and negate_value == true since + // that represents an original case of "--1e40" which + // is invalid. + }),); + +using ParseNormalFloat16Test = + ::testing::TestWithParam>; + +TEST_P(ParseNormalFloat16Test, Samples) { + std::stringstream input(GetParam().literal); + HexFloat> parsed_value(0); + ParseNormalFloat(input, GetParam().negate_value, parsed_value); + EXPECT_NE(GetParam().expect_success, input.fail()) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + if (GetParam().expect_success) { + EXPECT_THAT(parsed_value.value(), Eq(GetParam().expected_value.value())) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + } +} + +INSTANTIATE_TEST_CASE_P( + Float16Parse, ParseNormalFloat16Test, + ::testing::ValuesIn(std::vector>{ + // Failing cases due to trivially incorrect syntax. + BadFloatParseCase("abc", false, uint16_t{0}), + BadFloatParseCase("abc", true, uint16_t{0}), + + // Valid cases. + GoodFloatParseCase("0", false, uint16_t{0}), + GoodFloatParseCase("0.0", false, uint16_t{0}), + GoodFloatParseCase("-0.0", false, uint16_t{0x8000}), + GoodFloatParseCase("2.0", false, uint16_t{0x4000}), + GoodFloatParseCase("-2.0", false, uint16_t{0xc000}), + GoodFloatParseCase("+2.0", false, uint16_t{0x4000}), + // Cases with negate_value being true. + GoodFloatParseCase("0.0", true, uint16_t{0x8000}), + GoodFloatParseCase("2.0", true, uint16_t{0xc000}), + + // When negate_value is true, we should not accept a leading minus or + // plus. + BadFloatParseCase("-0.0", true, uint16_t{0}), + BadFloatParseCase("-2.0", true, uint16_t{0}), + BadFloatParseCase("+0.0", true, uint16_t{0}), + BadFloatParseCase("+2.0", true, uint16_t{0}), + }),); + +// A test case for detecting infinities. +template +struct OverflowParseCase { + std::string input; + bool expect_success; + T expected_value; +}; + +using FloatProxyParseOverflowFloatTest = + ::testing::TestWithParam>; + +TEST_P(FloatProxyParseOverflowFloatTest, Sample) { + std::istringstream input(GetParam().input); + HexFloat> value(0.0f); + input >> value; + EXPECT_NE(GetParam().expect_success, input.fail()); + if (GetParam().expect_success) { + EXPECT_THAT(value.value().getAsFloat(), GetParam().expected_value); + } +} + +INSTANTIATE_TEST_CASE_P( + FloatOverflow, FloatProxyParseOverflowFloatTest, + ::testing::ValuesIn(std::vector>({ + {"0", true, 0.0f}, + {"0.0", true, 0.0f}, + {"1.0", true, 1.0f}, + {"1e38", true, 1e38f}, + {"-1e38", true, -1e38f}, + {"1e40", false, FLT_MAX}, + {"-1e40", false, -FLT_MAX}, + {"1e400", false, FLT_MAX}, + {"-1e400", false, -FLT_MAX}, + })),); + +using FloatProxyParseOverflowDoubleTest = + ::testing::TestWithParam>; + +TEST_P(FloatProxyParseOverflowDoubleTest, Sample) { + std::istringstream input(GetParam().input); + HexFloat> value(0.0); + input >> value; + EXPECT_NE(GetParam().expect_success, input.fail()); + if (GetParam().expect_success) { + EXPECT_THAT(value.value().getAsFloat(), Eq(GetParam().expected_value)); + } +} + +INSTANTIATE_TEST_CASE_P( + DoubleOverflow, FloatProxyParseOverflowDoubleTest, + ::testing::ValuesIn(std::vector>({ + {"0", true, 0.0}, + {"0.0", true, 0.0}, + {"1.0", true, 1.0}, + {"1e38", true, 1e38}, + {"-1e38", true, -1e38}, + {"1e40", true, 1e40}, + {"-1e40", true, -1e40}, + {"1e400", false, DBL_MAX}, + {"-1e400", false, -DBL_MAX}, + })),); + +using FloatProxyParseOverflowFloat16Test = + ::testing::TestWithParam>; + +TEST_P(FloatProxyParseOverflowFloat16Test, Sample) { + std::istringstream input(GetParam().input); + HexFloat> value(0); + input >> value; + EXPECT_NE(GetParam().expect_success, input.fail()) << " literal: " + << GetParam().input; + if (GetParam().expect_success) { + EXPECT_THAT(value.value().data(), Eq(GetParam().expected_value)) + << " literal: " << GetParam().input; + } +} + +INSTANTIATE_TEST_CASE_P( + Float16Overflow, FloatProxyParseOverflowFloat16Test, + ::testing::ValuesIn(std::vector>({ + {"0", true, uint16_t{0}}, + {"0.0", true, uint16_t{0}}, + {"1.0", true, uint16_t{0x3c00}}, + // Overflow for 16-bit float is an error, and returns max or + // lowest value. + {"1e38", false, uint16_t{0x7bff}}, + {"1e40", false, uint16_t{0x7bff}}, + {"1e400", false, uint16_t{0x7bff}}, + {"-1e38", false, uint16_t{0xfbff}}, + {"-1e40", false, uint16_t{0xfbff}}, + {"-1e400", false, uint16_t{0xfbff}}, + })),); + +TEST(FloatProxy, Max) { + EXPECT_THAT(FloatProxy::max().getAsFloat().get_value(), + Eq(uint16_t{0x7bff})); + EXPECT_THAT(FloatProxy::max().getAsFloat(), + Eq(std::numeric_limits::max())); + EXPECT_THAT(FloatProxy::max().getAsFloat(), + Eq(std::numeric_limits::max())); +} + +TEST(FloatProxy, Lowest) { + EXPECT_THAT(FloatProxy::lowest().getAsFloat().get_value(), + Eq(uint16_t{0xfbff})); + EXPECT_THAT(FloatProxy::lowest().getAsFloat(), + Eq(std::numeric_limits::lowest())); + EXPECT_THAT(FloatProxy::lowest().getAsFloat(), + Eq(std::numeric_limits::lowest())); +} + +// TODO(awoloszyn): Add fp16 tests and HexFloatTraits. +} // anonymous namespace diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 749daa06..25caa7ed 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -67,6 +67,9 @@ using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; using VulkanAstSemantics = GlslangTest<::testing::TestWithParam>; using HlslIoMap = GlslangTest<::testing::TestWithParam>; using GlslIoMap = GlslangTest<::testing::TestWithParam>; +#ifdef AMD_EXTENSIONS +using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; +#endif // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate SPIR-V. @@ -138,6 +141,17 @@ TEST_P(GlslIoMap, FromFile) GetParam().flattenUniforms); } +#ifdef AMD_EXTENSIONS +// Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled). +// Expected to successfully generate SPIR-V. +TEST_P(CompileVulkanToSpirvTestAMD, FromFile) +{ + loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + Source::GLSL, Semantics::Vulkan, + Target::Spv); +} +#endif + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToSpirvTest, @@ -324,6 +338,16 @@ INSTANTIATE_TEST_CASE_P( })), FileNameAsCustomTestSuffix ); + +#ifdef AMD_EXTENSIONS +INSTANTIATE_TEST_CASE_P( + Glsl, CompileVulkanToSpirvTestAMD, + ::testing::ValuesIn(std::vector({ + "spv.float16.frag", + })), + FileNameAsCustomTestSuffix +); +#endif // clang-format on } // anonymous namespace From e4fe8b5c445ac3ed327f077b5b48aa452922747e Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 30 Sep 2016 14:26:34 -0600 Subject: [PATCH 021/130] Add a test for buffer auto-binding assignment. --- .../spv.buffer.autoassign.frag.out | 89 +++++++++++++++++++ Test/spv.buffer.autoassign.frag | 28 ++++++ gtests/Spv.FromFile.cpp | 1 + 3 files changed, 118 insertions(+) create mode 100644 Test/baseResults/spv.buffer.autoassign.frag.out create mode 100644 Test/spv.buffer.autoassign.frag diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out new file mode 100644 index 00000000..c5f91541 --- /dev/null +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -0,0 +1,89 @@ +spv.buffer.autoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 45 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 41 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "Color" + Name 10 "psout" + Name 13 "" + MemberName 13 0 "g_a" + MemberName 13 1 "g_b" + Name 15 "" + Name 25 "" + MemberName 25 0 "g_c" + Name 27 "" + Name 31 "" + MemberName 31 0 "g_d" + Name 33 "" + Name 41 "Color" + MemberDecorate 13 0 Offset 0 + MemberDecorate 13 1 Offset 4 + Decorate 13 Block + Decorate 15 DescriptorSet 0 + Decorate 15 Binding 20 + MemberDecorate 25 0 Offset 0 + Decorate 25 Block + Decorate 27 DescriptorSet 0 + Decorate 27 Binding 1 + MemberDecorate 31 0 Offset 0 + Decorate 31 Block + Decorate 33 DescriptorSet 0 + Decorate 33 Binding 2 + Decorate 41(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8(PS_OUTPUT): TypeStruct 7(fvec4) + 9: TypePointer Function 8(PS_OUTPUT) + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13: TypeStruct 6(float) 11(int) + 14: TypePointer Uniform 13(struct) + 15: 14(ptr) Variable Uniform + 16: TypePointer Uniform 6(float) + 19: 11(int) Constant 1 + 20: TypePointer Uniform 11(int) + 25: TypeStruct 6(float) + 26: TypePointer Uniform 25(struct) + 27: 26(ptr) Variable Uniform + 31: TypeStruct 6(float) + 32: TypePointer Uniform 31(struct) + 33: 32(ptr) Variable Uniform + 38: TypePointer Function 7(fvec4) + 40: TypePointer Output 7(fvec4) + 41(Color): 40(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(psout): 9(ptr) Variable Function + 17: 16(ptr) AccessChain 15 12 + 18: 6(float) Load 17 + 21: 20(ptr) AccessChain 15 19 + 22: 11(int) Load 21 + 23: 6(float) ConvertSToF 22 + 24: 6(float) FAdd 18 23 + 28: 16(ptr) AccessChain 27 12 + 29: 6(float) Load 28 + 30: 6(float) FAdd 24 29 + 34: 16(ptr) AccessChain 33 12 + 35: 6(float) Load 34 + 36: 6(float) FAdd 30 35 + 37: 7(fvec4) CompositeConstruct 36 36 36 36 + 39: 38(ptr) AccessChain 10(psout) 12 + Store 39 37 + 42: 38(ptr) AccessChain 10(psout) 12 + 43: 7(fvec4) Load 42 + Store 41(Color) 43 + Return + FunctionEnd diff --git a/Test/spv.buffer.autoassign.frag b/Test/spv.buffer.autoassign.frag new file mode 100644 index 00000000..46442609 --- /dev/null +++ b/Test/spv.buffer.autoassign.frag @@ -0,0 +1,28 @@ + +cbuffer MyUB1 : register(b5) // explicitly assigned & offsetted +{ + float g_a; + int g_b; +}; + +cbuffer MyUB2 // implicitly assigned +{ + float g_c; +}; + +cbuffer MyUB3 // implicitly assigned +{ + float g_d; +}; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + psout.Color = g_a + g_b + g_c + g_d; + return psout; +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 25caa7ed..2fe3c4da 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -284,6 +284,7 @@ INSTANTIATE_TEST_CASE_P( { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false }, { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true }, + { "spv.buffer.autoassign.frag", "main", 5, 10, 15, true, true }, }), FileNameAsCustomTestSuffixIoMap ); From 088c59d7ea43af1a07c3e9a5b798cb083b78d796 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Sat, 1 Oct 2016 11:27:43 -0600 Subject: [PATCH 022/130] Change binding auto-map to use provided offsets. Previously, the binding auto-mapping facility was free to use any unused binding. This change makes auto-bindings use the same offset value as explicit bindings. --- Test/baseResults/spv.buffer.autoassign.frag.out | 4 ++-- .../spv.glsl.register.autoassign.frag.out | 14 +++++++------- Test/baseResults/spv.register.autoassign.frag.out | 14 +++++++------- glslang/MachineIndependent/iomapper.cpp | 9 +++------ gtests/Spv.FromFile.cpp | 4 ++-- 5 files changed, 21 insertions(+), 24 deletions(-) diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out index c5f91541..4f5d5a60 100644 --- a/Test/baseResults/spv.buffer.autoassign.frag.out +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -35,11 +35,11 @@ Linked fragment stage: MemberDecorate 25 0 Offset 0 Decorate 25 Block Decorate 27 DescriptorSet 0 - Decorate 27 Binding 1 + Decorate 27 Binding 15 MemberDecorate 31 0 Offset 0 Decorate 31 Block Decorate 33 DescriptorSet 0 - Decorate 33 Binding 2 + Decorate 33 Binding 16 Decorate 41(Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out index a96b904b..a9c1bda9 100644 --- a/Test/baseResults/spv.glsl.register.autoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -51,21 +51,21 @@ Linked fragment stage: Decorate 21(g_sSamp1) DescriptorSet 0 Decorate 21(g_sSamp1) Binding 5 Decorate 27(g_tTex2) DescriptorSet 0 - Decorate 27(g_tTex2) Binding 1 + Decorate 27(g_tTex2) Binding 14 Decorate 29(g_sSamp2) DescriptorSet 0 - Decorate 29(g_sSamp2) Binding 2 + Decorate 29(g_sSamp2) Binding 6 Decorate 39(g_tTex3) DescriptorSet 0 Decorate 39(g_tTex3) Binding 13 Decorate 46(g_sSamp3) DescriptorSet 0 Decorate 46(g_sSamp3) Binding 7 Decorate 64(g_tTex4) DescriptorSet 0 - Decorate 64(g_tTex4) Binding 3 + Decorate 64(g_tTex4) Binding 15 Decorate 69(g_sSamp4) DescriptorSet 0 - Decorate 69(g_sSamp4) Binding 4 + Decorate 69(g_sSamp4) Binding 8 Decorate 84(g_tTex5) DescriptorSet 0 - Decorate 84(g_tTex5) Binding 6 + Decorate 84(g_tTex5) Binding 16 Decorate 86(g_sSamp5) DescriptorSet 0 - Decorate 86(g_sSamp5) Binding 8 + Decorate 86(g_sSamp5) Binding 9 MemberDecorate 93(MyStruct_t) 0 Offset 0 MemberDecorate 93(MyStruct_t) 1 Offset 4 MemberDecorate 93(MyStruct_t) 2 Offset 16 @@ -75,7 +75,7 @@ Linked fragment stage: MemberDecorate 95(myblock) 3 Offset 64 Decorate 95(myblock) Block Decorate 97 DescriptorSet 0 - Decorate 97 Binding 19 + Decorate 97 Binding 24 Decorate 119(g_tTex_unused1) DescriptorSet 0 Decorate 119(g_tTex_unused1) Binding 10 Decorate 121(g_sSamp_unused1) DescriptorSet 0 diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out index faf20cdd..708f4750 100644 --- a/Test/baseResults/spv.register.autoassign.frag.out +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -51,21 +51,21 @@ Linked fragment stage: Decorate 21(g_sSamp1) DescriptorSet 0 Decorate 21(g_sSamp1) Binding 5 Decorate 27(g_tTex2) DescriptorSet 0 - Decorate 27(g_tTex2) Binding 1 + Decorate 27(g_tTex2) Binding 14 Decorate 29(g_sSamp2) DescriptorSet 0 - Decorate 29(g_sSamp2) Binding 2 + Decorate 29(g_sSamp2) Binding 6 Decorate 39(g_tTex3) DescriptorSet 0 Decorate 39(g_tTex3) Binding 13 Decorate 46(g_sSamp3) DescriptorSet 0 Decorate 46(g_sSamp3) Binding 7 Decorate 64(g_tTex4) DescriptorSet 0 - Decorate 64(g_tTex4) Binding 3 + Decorate 64(g_tTex4) Binding 15 Decorate 69(g_sSamp4) DescriptorSet 0 - Decorate 69(g_sSamp4) Binding 4 + Decorate 69(g_sSamp4) Binding 8 Decorate 84(g_tTex5) DescriptorSet 0 - Decorate 84(g_tTex5) Binding 6 + Decorate 84(g_tTex5) Binding 16 Decorate 86(g_sSamp5) DescriptorSet 0 - Decorate 86(g_sSamp5) Binding 8 + Decorate 86(g_sSamp5) Binding 9 MemberDecorate 93(MyStruct_t) 0 Offset 0 MemberDecorate 93(MyStruct_t) 1 Offset 4 MemberDecorate 93(MyStruct_t) 2 Offset 16 @@ -75,7 +75,7 @@ Linked fragment stage: MemberDecorate 95($Global) 3 Offset 64 Decorate 95($Global) Block Decorate 97 DescriptorSet 0 - Decorate 97 Binding 9 + Decorate 97 Binding 20 Decorate 119(g_tTex_unused1) DescriptorSet 0 Decorate 119(g_tTex_unused1) Binding 10 Decorate 121(g_sSamp_unused1) DescriptorSet 0 diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 22d97c29..d69cc134 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -151,8 +151,7 @@ class TIoMappingTraverser : public TBindingTraverser { public: TIoMappingTraverser(TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings, bool traverseDeadCode) : - TBindingTraverser(i, bindingMap, usedBindings, traverseDeadCode), - nextBinding(1) + TBindingTraverser(i, bindingMap, usedBindings, traverseDeadCode) { } protected: @@ -172,7 +171,7 @@ protected: if (intermediate.getAutoMapBindings()) { // Otherwise, find a free spot for it. - const int freeBinding = getFreeBinding(base.getType()); + const int freeBinding = getFreeBinding(base.getType(), getBindingBase(base.getType())); markBinding(base, freeBinding); base.getWritableType().getQualifier().layoutBinding = freeBinding; @@ -190,14 +189,12 @@ protected: } // Find a free binding spot - int getFreeBinding(const TType&) { + int getFreeBinding(const TType&, int nextBinding) { while (!hasNFreeSlots(nextBinding, 1)) ++nextBinding; return nextBinding; } - - int nextBinding; }; // Map I/O variables to provided offsets, and make bindings for diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 2fe3c4da..ee27db2b 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -281,7 +281,7 @@ INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P( Hlsl, HlslIoMap, ::testing::ValuesIn(std::vector{ - { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false }, + { "spv.register.autoassign.frag", "main_ep", 5, 10, 20, true, false }, { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true }, { "spv.buffer.autoassign.frag", "main", 5, 10, 15, true, true }, @@ -293,7 +293,7 @@ INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P( Hlsl, GlslIoMap, ::testing::ValuesIn(std::vector{ - { "spv.glsl.register.autoassign.frag", "main", 5, 10, 15, true, false }, + { "spv.glsl.register.autoassign.frag", "main", 5, 10, 20, true, false }, { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 15, false, false }, }), FileNameAsCustomTestSuffixIoMap From f571d0c037d8f1168d6106739a5fe459e01353e8 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 12:35:01 -0600 Subject: [PATCH 023/130] Non-functional: Use isOpaque() instead of compare against EbtSampler. --- glslang/Include/revision.h | 4 ++-- hlsl/hlslGrammar.cpp | 2 +- hlsl/hlslParseHelper.cpp | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 2d79b424..44f6a14f 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1528" -#define GLSLANG_DATE "29-Sep-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1541" +#define GLSLANG_DATE "01-Oct-2016" diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 9652129c..b41618c2 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -366,7 +366,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) else if (variableType.getBasicType() == EbtBlock) parseContext.declareBlock(idToken.loc, variableType, idToken.string); else { - if (variableType.getQualifier().storage == EvqUniform && variableType.getBasicType() != EbtSampler) { + if (variableType.getQualifier().storage == EvqUniform && ! variableType.isOpaque()) { // this isn't really an individual variable, but a member of the $Global buffer parseContext.growGlobalUniformBlock(idToken.loc, variableType, *idToken.string); } else { diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 44a4230b..47c6fd67 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -737,8 +737,7 @@ bool HlslParseContext::shouldFlattenUniform(const TType& type) const return type.isArray() && intermediate.getFlattenUniformArrays() && qualifier == EvqUniform && - // Testing the EbtSampler basic type covers samplers and textures - type.getBasicType() == EbtSampler; + type.isOpaque(); } void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable) From ba56e23e8a13f2e61da75d9210bb945bb41be408 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 12:36:19 -0600 Subject: [PATCH 024/130] Fix typo in error message. --- Test/baseResults/300.frag.out | 2 +- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out index 2a3341ac..6ec58aa1 100644 --- a/Test/baseResults/300.frag.out +++ b/Test/baseResults/300.frag.out @@ -28,7 +28,7 @@ ERROR: 0:102: 'arrays of arrays' : not supported for this version or the enabled ERROR: 0:103: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:100: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:100: 'array-of-array of block' : not supported with this profile: es -ERROR: 0:111: 'variable indexing fragment shader ouput array' : not supported with this profile: es +ERROR: 0:111: 'variable indexing fragment shader output array' : not supported with this profile: es ERROR: 0:119: '==' : can't use with samplers or structs containing samplers ERROR: 0:120: '!=' : can't use with samplers or structs containing samplers ERROR: 0:121: '==' : can't use with samplers or structs containing samplers diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 44f6a14f..295d610a 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1541" +#define GLSLANG_REVISION "Overload400-PrecQual.1542" #define GLSLANG_DATE "01-Oct-2016" diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index a24a92d6..8e8e7da0 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -558,7 +558,7 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn // input/output blocks either don't exist or can be variable indexed } } else if (language == EShLangFragment && base->getQualifier().isPipeOutput()) - requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader ouput array"); + requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader output array"); else if (base->getBasicType() == EbtSampler && version >= 130) { const char* explanation = "variable indexing sampler array"; requireProfile(base->getLoc(), EEsProfile | ECoreProfile | ECompatibilityProfile, explanation); From c86d38bb2bbb6e66782e19796cdb0ea1bd5b55d8 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 13:30:37 -0600 Subject: [PATCH 025/130] Non-functional: Better use of .isParamOutput() and some other methods. --- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 10 +++++----- hlsl/hlslParseHelper.cpp | 17 +++++++++-------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 295d610a..589c8812 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1542" +#define GLSLANG_REVISION "Overload400-PrecQual.1543" #define GLSLANG_DATE "01-Oct-2016" diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 8e8e7da0..63140a00 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1168,7 +1168,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // means take 'arguments' itself as the one argument. TIntermNode* arg = fnCandidate->getParamCount() == 1 ? arguments : (aggregate ? aggregate->getSequence()[i] : arguments); TQualifier& formalQualifier = (*fnCandidate)[i].type->getQualifier(); - if (formalQualifier.storage == EvqOut || formalQualifier.storage == EvqInOut) { + if (formalQualifier.isParamOutput()) { if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped())) error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", ""); } @@ -1499,7 +1499,7 @@ TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& funct // Will there be any output conversions? bool outputConversions = false; for (int i = 0; i < function.getParamCount(); ++i) { - if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().storage == EvqOut) { + if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().isParamOutput()) { outputConversions = true; break; } @@ -3003,7 +3003,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.getBasicType() == EbtSampler || type.getBasicType() == EbtAtomicUint)) + if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque()) error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), ""); } @@ -3716,7 +3716,7 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali if (qualifier.invariant) error(loc, "cannot use invariant qualifier on a function parameter", "", ""); if (qualifier.noContraction) { - if (qualifier.storage == EvqOut || qualifier.storage == EvqInOut) + if (qualifier.isParamOutput()) type.getQualifier().noContraction = true; else warn(loc, "qualifier has no effect on non-output parameters", "precise", ""); @@ -4582,7 +4582,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.getBasicType() != EbtSampler && type.getBasicType() != EbtBlock && type.getBasicType() != EbtAtomicUint) + if (! type.isOpaque() && type.getBasicType() != EbtBlock) error(loc, "requires block, or sampler/image, or atomic-counter type", "binding", ""); if (type.getBasicType() == EbtSampler) { int lastBinding = qualifier.layoutBinding; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 47c6fd67..42b57b91 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -2384,18 +2384,19 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI // Process each argument's conversion for (int i = 0; i < function.getParamCount(); ++i) { + if (! function[i].type->getQualifier().isParamInput()) + continue; + // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped()); if (*function[i].type != arg->getType()) { - if (function[i].type->getQualifier().isParamInput()) { - // In-qualified arguments just need an extra node added above the argument to - // convert to the correct type. - arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg); - arg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, arg); - setArg(i, arg); - } + // In-qualified arguments just need an extra node added above the argument to + // convert to the correct type. + arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg); + arg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, arg); + setArg(i, arg); } else { if (shouldFlatten(arg->getType())) { // Will make a two-level subtree. @@ -2436,7 +2437,7 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu // Will there be any output conversions? bool outputConversions = false; for (int i = 0; i < function.getParamCount(); ++i) { - if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().storage == EvqOut) { + if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().isParamOutput()) { outputConversions = true; break; } From d8fe2ca8e584ff7170f3cbd9a08ca8f636815872 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 17:11:21 -0600 Subject: [PATCH 026/130] HLSL: Handle flattened I/O structs passed to function *out* parameters. --- Test/baseResults/hlsl.entry-out.frag.out | 397 +++++++++++++---------- Test/hlsl.entry-out.frag | 8 +- glslang/Include/revision.h | 2 +- hlsl/hlslParseHelper.cpp | 60 ++-- 4 files changed, 270 insertions(+), 197 deletions(-) diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out index d15741f7..ad7518e3 100755 --- a/Test/baseResults/hlsl.entry-out.frag.out +++ b/Test/baseResults/hlsl.entry-out.frag.out @@ -2,60 +2,83 @@ hlsl.entry-out.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) +0:7 Function Definition: fun(struct-OutParam-vf2-vi21; (temp void) 0:7 Function Parameters: -0:7 'input' (layout(location=0 ) in 4-component vector of float) -0:7 'out1' (layout(location=1 ) out 4-component vector of float) -0:7 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:7 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:7 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) 0:? Sequence -0:8 move second child to first child (temp 4-component vector of float) -0:8 'out1' (layout(location=1 ) out 4-component vector of float) -0:8 'input' (layout(location=0 ) in 4-component vector of float) -0:9 move second child to first child (temp 2-component vector of float) -0:? 'v' (layout(location=2 ) out 2-component vector of float) +0:8 move second child to first child (temp 2-component vector of float) +0:8 v: direct index for structure (temp 2-component vector of float) +0:8 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0.400000 +0:8 0.400000 +0:9 move second child to first child (temp 2-component vector of int) +0:9 i: direct index for structure (temp 2-component vector of int) +0:9 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:9 Constant: +0:9 1 (const int) 0:9 Constant: -0:9 2.000000 -0:9 2.000000 -0:10 move second child to first child (temp 2-component vector of int) +0:9 7 (const int) +0:9 7 (const int) +0:13 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) +0:13 Function Parameters: +0:13 'input' (layout(location=0 ) in 4-component vector of float) +0:13 'out1' (layout(location=1 ) out 4-component vector of float) +0:13 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:13 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 'out1' (layout(location=1 ) out 4-component vector of float) +0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:15 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=2 ) out 2-component vector of float) +0:15 Constant: +0:15 2.000000 +0:15 2.000000 +0:16 move second child to first child (temp 2-component vector of int) 0:? 'i' (layout(location=3 ) out 2-component vector of int) -0:10 Constant: -0:10 3 (const int) -0:10 3 (const int) -0:12 move second child to first child (temp 2-component vector of float) -0:12 v: direct index for structure (temp 2-component vector of float) -0:12 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:12 Constant: -0:12 0 (const int) -0:12 Constant: -0:12 12.000000 -0:12 12.000000 -0:13 move second child to first child (temp 2-component vector of int) -0:13 i: direct index for structure (temp 2-component vector of int) -0:13 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:13 Constant: -0:13 1 (const int) -0:13 Constant: -0:13 13 (const int) -0:13 13 (const int) -0:? Sequence -0:14 move second child to first child (temp 2-component vector of float) -0:? 'v' (layout(location=4 ) out 2-component vector of float) -0:14 v: direct index for structure (temp 2-component vector of float) -0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:14 Constant: -0:14 0 (const int) -0:14 move second child to first child (temp 2-component vector of int) -0:? 'i' (layout(location=5 ) out 2-component vector of int) -0:14 i: direct index for structure (temp 2-component vector of int) -0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:14 Constant: -0:14 1 (const int) -0:16 Sequence -0:16 move second child to first child (temp 4-component vector of float) +0:16 Constant: +0:16 3 (const int) +0:16 3 (const int) +0:18 move second child to first child (temp 2-component vector of float) +0:18 v: direct index for structure (temp 2-component vector of float) +0:18 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 12.000000 +0:18 12.000000 +0:19 move second child to first child (temp 2-component vector of int) +0:19 i: direct index for structure (temp 2-component vector of int) +0:19 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 13 (const int) +0:19 13 (const int) +0:20 Comma (temp void) +0:20 Function Call: fun(struct-OutParam-vf2-vi21; (temp void) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:? Sequence +0:20 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=4 ) out 2-component vector of float) +0:20 v: direct index for structure (temp 2-component vector of float) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child (temp 2-component vector of int) +0:? 'i' (layout(location=5 ) out 2-component vector of int) +0:20 i: direct index for structure (temp 2-component vector of int) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 1 (const int) +0:22 Sequence +0:22 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:16 'out1' (layout(location=1 ) out 4-component vector of float) -0:16 Branch: Return +0:22 'out1' (layout(location=1 ) out 4-component vector of float) +0:22 Branch: Return 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'input' (layout(location=0 ) in 4-component vector of float) @@ -72,60 +95,83 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) +0:7 Function Definition: fun(struct-OutParam-vf2-vi21; (temp void) 0:7 Function Parameters: -0:7 'input' (layout(location=0 ) in 4-component vector of float) -0:7 'out1' (layout(location=1 ) out 4-component vector of float) -0:7 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:7 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:7 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) 0:? Sequence -0:8 move second child to first child (temp 4-component vector of float) -0:8 'out1' (layout(location=1 ) out 4-component vector of float) -0:8 'input' (layout(location=0 ) in 4-component vector of float) -0:9 move second child to first child (temp 2-component vector of float) -0:? 'v' (layout(location=2 ) out 2-component vector of float) +0:8 move second child to first child (temp 2-component vector of float) +0:8 v: direct index for structure (temp 2-component vector of float) +0:8 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0.400000 +0:8 0.400000 +0:9 move second child to first child (temp 2-component vector of int) +0:9 i: direct index for structure (temp 2-component vector of int) +0:9 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:9 Constant: +0:9 1 (const int) 0:9 Constant: -0:9 2.000000 -0:9 2.000000 -0:10 move second child to first child (temp 2-component vector of int) +0:9 7 (const int) +0:9 7 (const int) +0:13 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) +0:13 Function Parameters: +0:13 'input' (layout(location=0 ) in 4-component vector of float) +0:13 'out1' (layout(location=1 ) out 4-component vector of float) +0:13 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:13 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 'out1' (layout(location=1 ) out 4-component vector of float) +0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:15 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=2 ) out 2-component vector of float) +0:15 Constant: +0:15 2.000000 +0:15 2.000000 +0:16 move second child to first child (temp 2-component vector of int) 0:? 'i' (layout(location=3 ) out 2-component vector of int) -0:10 Constant: -0:10 3 (const int) -0:10 3 (const int) -0:12 move second child to first child (temp 2-component vector of float) -0:12 v: direct index for structure (temp 2-component vector of float) -0:12 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:12 Constant: -0:12 0 (const int) -0:12 Constant: -0:12 12.000000 -0:12 12.000000 -0:13 move second child to first child (temp 2-component vector of int) -0:13 i: direct index for structure (temp 2-component vector of int) -0:13 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:13 Constant: -0:13 1 (const int) -0:13 Constant: -0:13 13 (const int) -0:13 13 (const int) -0:? Sequence -0:14 move second child to first child (temp 2-component vector of float) -0:? 'v' (layout(location=4 ) out 2-component vector of float) -0:14 v: direct index for structure (temp 2-component vector of float) -0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:14 Constant: -0:14 0 (const int) -0:14 move second child to first child (temp 2-component vector of int) -0:? 'i' (layout(location=5 ) out 2-component vector of int) -0:14 i: direct index for structure (temp 2-component vector of int) -0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:14 Constant: -0:14 1 (const int) -0:16 Sequence -0:16 move second child to first child (temp 4-component vector of float) +0:16 Constant: +0:16 3 (const int) +0:16 3 (const int) +0:18 move second child to first child (temp 2-component vector of float) +0:18 v: direct index for structure (temp 2-component vector of float) +0:18 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 12.000000 +0:18 12.000000 +0:19 move second child to first child (temp 2-component vector of int) +0:19 i: direct index for structure (temp 2-component vector of int) +0:19 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 13 (const int) +0:19 13 (const int) +0:20 Comma (temp void) +0:20 Function Call: fun(struct-OutParam-vf2-vi21; (temp void) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:? Sequence +0:20 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=4 ) out 2-component vector of float) +0:20 v: direct index for structure (temp 2-component vector of float) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child (temp 2-component vector of int) +0:? 'i' (layout(location=5 ) out 2-component vector of int) +0:20 i: direct index for structure (temp 2-component vector of int) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 1 (const int) +0:22 Sequence +0:22 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:16 'out1' (layout(location=1 ) out 4-component vector of float) -0:16 Branch: Return +0:22 'out1' (layout(location=1 ) out 4-component vector of float) +0:22 Branch: Return 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'input' (layout(location=0 ) in 4-component vector of float) @@ -137,82 +183,105 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 46 +// Id's are bound by 60 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 9 11 15 21 37 40 43 + EntryPoint Fragment 4 "PixelShaderFunction" 28 30 33 37 51 54 57 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" - Name 9 "out1" - Name 11 "input" - Name 15 "v" - Name 21 "i" - Name 24 "OutParam" - MemberName 24(OutParam) 0 "v" - MemberName 24(OutParam) 1 "i" - Name 26 "local" - Name 37 "v" - Name 40 "i" - Name 43 "@entryPointOutput" - Decorate 9(out1) Location 1 - Decorate 11(input) Location 0 - Decorate 15(v) Location 2 - Decorate 21(i) Location 3 - Decorate 37(v) Location 4 - Decorate 40(i) Location 5 - Decorate 43(@entryPointOutput) Location 0 + Name 10 "OutParam" + MemberName 10(OutParam) 0 "v" + MemberName 10(OutParam) 1 "i" + Name 14 "fun(struct-OutParam-vf2-vi21;" + Name 13 "op" + Name 28 "out1" + Name 30 "input" + Name 33 "v" + Name 37 "i" + Name 40 "local" + Name 47 "tempArg" + Name 48 "param" + Name 51 "v" + Name 54 "i" + Name 57 "@entryPointOutput" + Decorate 28(out1) Location 1 + Decorate 30(input) Location 0 + Decorate 33(v) Location 2 + Decorate 37(i) Location 3 + Decorate 51(v) Location 4 + Decorate 54(i) Location 5 + Decorate 57(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 - 7: TypeVector 6(float) 4 - 8: TypePointer Output 7(fvec4) - 9(out1): 8(ptr) Variable Output - 10: TypePointer Input 7(fvec4) - 11(input): 10(ptr) Variable Input - 13: TypeVector 6(float) 2 - 14: TypePointer Output 13(fvec2) - 15(v): 14(ptr) Variable Output - 16: 6(float) Constant 1073741824 - 17: 13(fvec2) ConstantComposite 16 16 - 18: TypeInt 32 1 - 19: TypeVector 18(int) 2 - 20: TypePointer Output 19(ivec2) - 21(i): 20(ptr) Variable Output - 22: 18(int) Constant 3 - 23: 19(ivec2) ConstantComposite 22 22 - 24(OutParam): TypeStruct 13(fvec2) 19(ivec2) - 25: TypePointer Function 24(OutParam) - 27: 18(int) Constant 0 - 28: 6(float) Constant 1094713344 - 29: 13(fvec2) ConstantComposite 28 28 - 30: TypePointer Function 13(fvec2) - 32: 18(int) Constant 1 - 33: 18(int) Constant 13 - 34: 19(ivec2) ConstantComposite 33 33 - 35: TypePointer Function 19(ivec2) - 37(v): 14(ptr) Variable Output - 40(i): 20(ptr) Variable Output -43(@entryPointOutput): 8(ptr) Variable Output + 7: TypeVector 6(float) 2 + 8: TypeInt 32 1 + 9: TypeVector 8(int) 2 + 10(OutParam): TypeStruct 7(fvec2) 9(ivec2) + 11: TypePointer Function 10(OutParam) + 12: TypeFunction 2 11(ptr) + 16: 8(int) Constant 0 + 17: 6(float) Constant 1053609165 + 18: 7(fvec2) ConstantComposite 17 17 + 19: TypePointer Function 7(fvec2) + 21: 8(int) Constant 1 + 22: 8(int) Constant 7 + 23: 9(ivec2) ConstantComposite 22 22 + 24: TypePointer Function 9(ivec2) + 26: TypeVector 6(float) 4 + 27: TypePointer Output 26(fvec4) + 28(out1): 27(ptr) Variable Output + 29: TypePointer Input 26(fvec4) + 30(input): 29(ptr) Variable Input + 32: TypePointer Output 7(fvec2) + 33(v): 32(ptr) Variable Output + 34: 6(float) Constant 1073741824 + 35: 7(fvec2) ConstantComposite 34 34 + 36: TypePointer Output 9(ivec2) + 37(i): 36(ptr) Variable Output + 38: 8(int) Constant 3 + 39: 9(ivec2) ConstantComposite 38 38 + 41: 6(float) Constant 1094713344 + 42: 7(fvec2) ConstantComposite 41 41 + 44: 8(int) Constant 13 + 45: 9(ivec2) ConstantComposite 44 44 + 51(v): 32(ptr) Variable Output + 54(i): 36(ptr) Variable Output +57(@entryPointOutput): 27(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 26(local): 25(ptr) Variable Function - 12: 7(fvec4) Load 11(input) - Store 9(out1) 12 - Store 15(v) 17 - Store 21(i) 23 - 31: 30(ptr) AccessChain 26(local) 27 - Store 31 29 - 36: 35(ptr) AccessChain 26(local) 32 - Store 36 34 - 38: 30(ptr) AccessChain 26(local) 27 - 39: 13(fvec2) Load 38 - Store 37(v) 39 - 41: 35(ptr) AccessChain 26(local) 32 - 42: 19(ivec2) Load 41 - Store 40(i) 42 - 44: 7(fvec4) Load 9(out1) - Store 43(@entryPointOutput) 44 + 40(local): 11(ptr) Variable Function + 47(tempArg): 11(ptr) Variable Function + 48(param): 11(ptr) Variable Function + 31: 26(fvec4) Load 30(input) + Store 28(out1) 31 + Store 33(v) 35 + Store 37(i) 39 + 43: 19(ptr) AccessChain 40(local) 16 + Store 43 42 + 46: 24(ptr) AccessChain 40(local) 21 + Store 46 45 + 49: 2 FunctionCall 14(fun(struct-OutParam-vf2-vi21;) 48(param) + 50:10(OutParam) Load 48(param) + Store 47(tempArg) 50 + 52: 19(ptr) AccessChain 47(tempArg) 16 + 53: 7(fvec2) Load 52 + Store 51(v) 53 + 55: 24(ptr) AccessChain 47(tempArg) 21 + 56: 9(ivec2) Load 55 + Store 54(i) 56 + 58: 26(fvec4) Load 28(out1) + Store 57(@entryPointOutput) 58 + Return + FunctionEnd +14(fun(struct-OutParam-vf2-vi21;): 2 Function None 12 + 13(op): 11(ptr) FunctionParameter + 15: Label + 20: 19(ptr) AccessChain 13(op) 16 + Store 20 18 + 25: 24(ptr) AccessChain 13(op) 21 + Store 25 23 Return FunctionEnd diff --git a/Test/hlsl.entry-out.frag b/Test/hlsl.entry-out.frag index 14f0e459..27b4dd64 100644 --- a/Test/hlsl.entry-out.frag +++ b/Test/hlsl.entry-out.frag @@ -3,6 +3,12 @@ struct OutParam { int2 i; }; +void fun(out OutParam op) +{ + op.v = float2(0.4); + op.i = int2(7); +} + float4 PixelShaderFunction(float4 input, out float4 out1, out OutParam out2, out OutParam out3) : COLOR0 { out1 = input; @@ -11,7 +17,7 @@ float4 PixelShaderFunction(float4 input, out float4 out1, out OutParam out2, out OutParam local; local.v = 12.0; local.i = 13; - out3 = local; + fun(out3); return out1; } diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 589c8812..0db44dca 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1543" +#define GLSLANG_REVISION "Overload400-PrecQual.1544" #define GLSLANG_DATE "01-Oct-2016" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 42b57b91..63d9c3d7 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -2246,21 +2246,9 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct if (builtIn && fnCandidate->getNumExtensions()) requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str()); - if (arguments) { - // Make sure qualifications work for these arguments. - //TIntermAggregate* aggregate = arguments->getAsAggregate(); - //for (int i = 0; i < fnCandidate->getParamCount(); ++i) { - // // At this early point there is a slight ambiguity between whether an aggregate 'arguments' - // // is the single argument itself or its children are the arguments. Only one argument - // // means take 'arguments' itself as the one argument. - // TIntermNode* arg = fnCandidate->getParamCount() == 1 ? arguments : (aggregate ? aggregate->getSequence()[i] : arguments); - // TQualifier& formalQualifier = (*fnCandidate)[i].type->getQualifier(); - // TQualifier& argQualifier = arg->getAsTyped()->getQualifier(); - //} - - // Convert 'in' arguments - addInputArgumentConversions(*fnCandidate, arguments); // arguments may be modified if it's just a single argument node - } + // Convert 'in' arguments + if (arguments) + addInputArgumentConversions(*fnCandidate, arguments); op = fnCandidate->getBuiltInOp(); if (builtIn && op != EOpNull) { @@ -2390,7 +2378,9 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. - TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped()); + TIntermTyped* arg = function.getParamCount() == 1 + ? arguments->getAsTyped() + : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped()); if (*function[i].type != arg->getType()) { // In-qualified arguments just need an extra node added above the argument to // convert to the correct type. @@ -2401,9 +2391,9 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI if (shouldFlatten(arg->getType())) { // Will make a two-level subtree. // The deepest will copy member-by-member to build the structure to pass. - // The level above that will be an two-operand EOpComma sequence that follows the copy by the + // The level above that will be a two-operand EOpComma sequence that follows the copy by the // object itself. - TSourceLoc dummyLoc; + TSourceLoc dummyLoc; // ?? fix these everywhere to be arguments[i]->getLoc()? dummyLoc.init(); TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[i].type); internalAggregate->getWritableType().getQualifier().makeTemporary(); @@ -2433,11 +2423,16 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const { TIntermSequence& arguments = intermNode.getSequence(); + const auto needsConversion = [&](int argNum) { + return function[argNum].type->getQualifier().isParamOutput() && + (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() || + shouldFlatten(arguments[argNum]->getAsTyped()->getType())); + }; // Will there be any output conversions? bool outputConversions = false; for (int i = 0; i < function.getParamCount(); ++i) { - if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().isParamOutput()) { + if (needsConversion(i)) { outputConversions = true; break; } @@ -2468,18 +2463,21 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu // Process each argument's conversion for (int i = 0; i < function.getParamCount(); ++i) { - if (*function[i].type != arguments[i]->getAsTyped()->getType()) { - if (function[i].type->getQualifier().isParamOutput()) { - // Out-qualified arguments need to use the topology set up above. - // do the " ...(tempArg, ...), arg = tempArg" bit from above - TVariable* tempArg = makeInternalVariable("tempArg", *function[i].type); - tempArg->getWritableType().getQualifier().makeTemporary(); - TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc()); - TIntermTyped* tempAssign = intermediate.addAssign(EOpAssign, arguments[i]->getAsTyped(), tempArgNode, arguments[i]->getLoc()); - conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); - // replace the argument with another node for the same tempArg variable - arguments[i] = intermediate.addSymbol(*tempArg, intermNode.getLoc()); - } + if (needsConversion(i)) { + // Out-qualified arguments needing conversion need to use the topology setup above. + // Do the " ...(tempArg, ...), arg = tempArg" bit from above. + + // Make a temporary for what the function expects the argument to look like. + TVariable* tempArg = makeInternalVariable("tempArg", *function[i].type); + tempArg->getWritableType().getQualifier().makeTemporary(); + TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc()); + + // This makes the deepest level, the member-wise copy + TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode)->getAsAggregate(); + conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); + + // replace the argument with another node for the same tempArg variable + arguments[i] = intermediate.addSymbol(*tempArg, intermNode.getLoc()); } } From a08c929d8e512c63edb86be4ee247a3ee92a23b0 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 17:17:55 -0600 Subject: [PATCH 027/130] HLSL: Line numbers only: Set locations (line numbers) on synthesized flattening code. --- Test/baseResults/hlsl.array.flatten.frag.out | 152 +++++++++--------- .../hlsl.calculatelod.dx10.frag.out | 8 +- .../hlsl.calculatelodunclamped.dx10.frag.out | 8 +- Test/baseResults/hlsl.constructexpr.frag.out | 8 +- Test/baseResults/hlsl.entry-in.frag.out | 76 ++++----- Test/baseResults/hlsl.entry-out.frag.out | 4 +- .../hlsl.gather.array.dx10.frag.out | 8 +- .../hlsl.gather.basic.dx10.frag.out | 8 +- .../hlsl.gather.basic.dx10.vert.out | 8 +- .../hlsl.gather.offset.dx10.frag.out | 8 +- .../hlsl.gather.offsetarray.dx10.frag.out | 8 +- .../hlsl.gatherRGBA.array.dx10.frag.out | 8 +- .../hlsl.gatherRGBA.basic.dx10.frag.out | 8 +- .../hlsl.gatherRGBA.offset.dx10.frag.out | 8 +- .../hlsl.gatherRGBA.offsetarray.dx10.frag.out | 8 +- .../hlsl.getdimensions.dx10.frag.out | 8 +- .../hlsl.getdimensions.dx10.vert.out | 8 +- .../hlsl.getsampleposition.dx10.frag.out | 8 +- Test/baseResults/hlsl.init2.frag.out | 8 +- Test/baseResults/hlsl.inoutquals.frag.out | 8 +- Test/baseResults/hlsl.intrinsics.frag.out | 8 +- Test/baseResults/hlsl.load.2dms.dx10.frag.out | 8 +- .../baseResults/hlsl.load.array.dx10.frag.out | 8 +- .../baseResults/hlsl.load.basic.dx10.frag.out | 8 +- .../baseResults/hlsl.load.basic.dx10.vert.out | 8 +- .../hlsl.load.buffer.dx10.frag.out | 8 +- .../hlsl.load.offset.dx10.frag.out | 8 +- .../hlsl.load.offsetarray.dx10.frag.out | 8 +- Test/baseResults/hlsl.matrixindex.frag.out | 8 +- .../baseResults/hlsl.numericsuffixes.frag.out | 8 +- Test/baseResults/hlsl.pp.line.frag.out | 8 +- Test/baseResults/hlsl.precise.frag.out | 8 +- Test/baseResults/hlsl.promotions.frag.out | 8 +- .../hlsl.sample.array.dx10.frag.out | 8 +- .../hlsl.sample.basic.dx10.frag.out | 8 +- .../hlsl.sample.offset.dx10.frag.out | 8 +- .../hlsl.sample.offsetarray.dx10.frag.out | 8 +- .../hlsl.samplebias.array.dx10.frag.out | 8 +- .../hlsl.samplebias.basic.dx10.frag.out | 8 +- .../hlsl.samplebias.offset.dx10.frag.out | 8 +- .../hlsl.samplebias.offsetarray.dx10.frag.out | 8 +- .../hlsl.samplecmp.array.dx10.frag.out | 8 +- .../hlsl.samplecmp.basic.dx10.frag.out | 8 +- .../hlsl.samplecmp.offset.dx10.frag.out | 8 +- .../hlsl.samplecmp.offsetarray.dx10.frag.out | 8 +- ...lsl.samplecmplevelzero.array.dx10.frag.out | 8 +- ...lsl.samplecmplevelzero.basic.dx10.frag.out | 8 +- ...sl.samplecmplevelzero.offset.dx10.frag.out | 8 +- ...mplecmplevelzero.offsetarray.dx10.frag.out | 8 +- .../hlsl.samplegrad.array.dx10.frag.out | 8 +- .../hlsl.samplegrad.basic.dx10.frag.out | 8 +- .../hlsl.samplegrad.basic.dx10.vert.out | 8 +- .../hlsl.samplegrad.offset.dx10.frag.out | 8 +- .../hlsl.samplegrad.offsetarray.dx10.frag.out | 8 +- .../hlsl.samplelevel.array.dx10.frag.out | 8 +- .../hlsl.samplelevel.basic.dx10.frag.out | 8 +- .../hlsl.samplelevel.basic.dx10.vert.out | 8 +- .../hlsl.samplelevel.offset.dx10.frag.out | 8 +- ...hlsl.samplelevel.offsetarray.dx10.frag.out | 8 +- Test/baseResults/hlsl.semicolons.frag.out | 8 +- Test/baseResults/hlsl.stringtoken.frag.out | 8 +- Test/baseResults/hlsl.structin.vert.out | 8 +- glslang/Include/revision.h | 2 +- hlsl/hlslParseHelper.cpp | 13 +- 64 files changed, 359 insertions(+), 360 deletions(-) diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index e7487598..185c2cc6 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:31 'ps_output' (out structure{temp 4-component vector of float color}) 0:? Sequence 0:33 Sequence -0:? Sequence +0:33 Sequence 0:33 move second child to first child (temp sampler) 0:33 direct index (temp sampler) 0:33 'local_sampler_array' (temp 3-element array of sampler) @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:33 2 (const int) 0:? 'g_samp[2]' (uniform sampler) 0:34 Sequence -0:? Sequence +0:34 Sequence 0:34 move second child to first child (temp texture1D) 0:34 direct index (temp texture1D) 0:34 'local_texture_array' (temp 3-element array of texture1D) @@ -95,48 +95,48 @@ gl_FragCoord origin is upper left 0:37 add (temp 4-component vector of float) 0:37 Function Call: TestFn1( (temp 4-component vector of float) 0:37 Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) -0:? Comma (temp 3-element array of texture1D) -0:? Sequence -0:? move second child to first child (temp texture1D) -0:? direct index (temp texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Constant: -0:? 0 (const int) +0:37 Comma (temp 3-element array of texture1D) +0:37 Sequence +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 0 (const int) 0:? 'g_tex[0]' (uniform texture1D) -0:? move second child to first child (temp texture1D) -0:? direct index (temp texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Constant: -0:? 1 (const int) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 1 (const int) 0:? 'g_tex[1]' (uniform texture1D) -0:? move second child to first child (temp texture1D) -0:? direct index (temp texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Constant: -0:? 2 (const int) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 2 (const int) 0:? 'g_tex[2]' (uniform texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Comma (temp 3-element array of sampler) -0:? Sequence -0:? move second child to first child (temp sampler) -0:? direct index (temp sampler) -0:? 'aggShadow' (temp 3-element array of sampler) -0:? Constant: -0:? 0 (const int) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Comma (temp 3-element array of sampler) +0:37 Sequence +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 0 (const int) 0:? 'g_samp[0]' (uniform sampler) -0:? move second child to first child (temp sampler) -0:? direct index (temp sampler) -0:? 'aggShadow' (temp 3-element array of sampler) -0:? Constant: -0:? 1 (const int) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 1 (const int) 0:? 'g_samp[1]' (uniform sampler) -0:? move second child to first child (temp sampler) -0:? direct index (temp sampler) -0:? 'aggShadow' (temp 3-element array of sampler) -0:? Constant: -0:? 2 (const int) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 2 (const int) 0:? 'g_samp[2]' (uniform sampler) -0:? 'aggShadow' (temp 3-element array of sampler) +0:37 'aggShadow' (temp 3-element array of sampler) 0:? Linker Objects 0:? 'g_tex[0]' (uniform texture1D) 0:? 'g_tex[1]' (uniform texture1D) @@ -203,7 +203,7 @@ gl_FragCoord origin is upper left 0:31 'ps_output' (out structure{temp 4-component vector of float color}) 0:? Sequence 0:33 Sequence -0:? Sequence +0:33 Sequence 0:33 move second child to first child (temp sampler) 0:33 direct index (temp sampler) 0:33 'local_sampler_array' (temp 3-element array of sampler) @@ -223,7 +223,7 @@ gl_FragCoord origin is upper left 0:33 2 (const int) 0:? 'g_samp[2]' (uniform sampler) 0:34 Sequence -0:? Sequence +0:34 Sequence 0:34 move second child to first child (temp texture1D) 0:34 direct index (temp texture1D) 0:34 'local_texture_array' (temp 3-element array of texture1D) @@ -254,48 +254,48 @@ gl_FragCoord origin is upper left 0:37 add (temp 4-component vector of float) 0:37 Function Call: TestFn1( (temp 4-component vector of float) 0:37 Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) -0:? Comma (temp 3-element array of texture1D) -0:? Sequence -0:? move second child to first child (temp texture1D) -0:? direct index (temp texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Constant: -0:? 0 (const int) +0:37 Comma (temp 3-element array of texture1D) +0:37 Sequence +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 0 (const int) 0:? 'g_tex[0]' (uniform texture1D) -0:? move second child to first child (temp texture1D) -0:? direct index (temp texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Constant: -0:? 1 (const int) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 1 (const int) 0:? 'g_tex[1]' (uniform texture1D) -0:? move second child to first child (temp texture1D) -0:? direct index (temp texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Constant: -0:? 2 (const int) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 2 (const int) 0:? 'g_tex[2]' (uniform texture1D) -0:? 'aggShadow' (temp 3-element array of texture1D) -0:? Comma (temp 3-element array of sampler) -0:? Sequence -0:? move second child to first child (temp sampler) -0:? direct index (temp sampler) -0:? 'aggShadow' (temp 3-element array of sampler) -0:? Constant: -0:? 0 (const int) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Comma (temp 3-element array of sampler) +0:37 Sequence +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 0 (const int) 0:? 'g_samp[0]' (uniform sampler) -0:? move second child to first child (temp sampler) -0:? direct index (temp sampler) -0:? 'aggShadow' (temp 3-element array of sampler) -0:? Constant: -0:? 1 (const int) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 1 (const int) 0:? 'g_samp[1]' (uniform sampler) -0:? move second child to first child (temp sampler) -0:? direct index (temp sampler) -0:? 'aggShadow' (temp 3-element array of sampler) -0:? Constant: -0:? 2 (const int) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 2 (const int) 0:? 'g_samp[2]' (uniform sampler) -0:? 'aggShadow' (temp 3-element array of sampler) +0:37 'aggShadow' (temp 3-element array of sampler) 0:? Linker Objects 0:? 'g_tex[0]' (uniform texture1D) 0:? 'g_tex[1]' (uniform texture1D) diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index 30af5920..9d061d29 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -139,8 +139,8 @@ gl_FragCoord origin is upper left 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 -0:? Sequence -0:? Sequence +0:43 Sequence +0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:43 Color: direct index for structure (temp 4-component vector of float) @@ -313,8 +313,8 @@ gl_FragCoord origin is upper left 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 -0:? Sequence -0:? Sequence +0:43 Sequence +0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:43 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out index 92d84f92..ecd1f0d1 100644 --- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out @@ -151,8 +151,8 @@ ERROR: node is still EOpNull! 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 -0:? Sequence -0:? Sequence +0:43 Sequence +0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:43 Color: direct index for structure (temp 4-component vector of float) @@ -325,8 +325,8 @@ ERROR: node is still EOpNull! 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 -0:? Sequence -0:? Sequence +0:43 Sequence +0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:43 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out index 1595a08d..e6ed6e13 100644 --- a/Test/baseResults/hlsl.constructexpr.frag.out +++ b/Test/baseResults/hlsl.constructexpr.frag.out @@ -34,8 +34,8 @@ gl_FragCoord origin is upper left 0:15 1.000000 0:15 1.000000 0:15 1.000000 -0:? Sequence -0:? Sequence +0:16 Sequence +0:16 Sequence 0:16 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:16 color: direct index for structure (temp 4-component vector of float) @@ -85,8 +85,8 @@ gl_FragCoord origin is upper left 0:15 1.000000 0:15 1.000000 0:15 1.000000 -0:? Sequence -0:? Sequence +0:16 Sequence +0:16 Sequence 0:16 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:16 color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out index b2ab8cbe..04e3935d 100755 --- a/Test/baseResults/hlsl.entry-in.frag.out +++ b/Test/baseResults/hlsl.entry-in.frag.out @@ -26,7 +26,7 @@ gl_FragCoord origin is upper left 0:13 Function Parameters: 0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence -0:? Sequence +0:15 Sequence 0:15 move second child to first child (temp 2-component vector of float) 0:15 v: direct index for structure (temp 2-component vector of float) 0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) @@ -54,27 +54,27 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) -0:? Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Sequence -0:? move second child to first child (temp 2-component vector of float) -0:? v: direct index for structure (temp 2-component vector of float) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Constant: -0:? 0 (const int) +0:17 Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Sequence +0:17 move second child to first child (temp 2-component vector of float) +0:17 v: direct index for structure (temp 2-component vector of float) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Constant: +0:17 0 (const int) 0:? 'v' (layout(location=0 ) in 2-component vector of float) -0:? move second child to first child (temp 4-component vector of float) -0:? fragCoord: direct index for structure (temp 4-component vector of float) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Constant: -0:? 1 (const int) +0:17 move second child to first child (temp 4-component vector of float) +0:17 fragCoord: direct index for structure (temp 4-component vector of float) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Constant: +0:17 1 (const int) 0:? 'fragCoord' (in 4-component vector of float FragCoord) -0:? move second child to first child (temp 2-component vector of int) -0:? i2: direct index for structure (temp 2-component vector of int) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Constant: -0:? 2 (const int) +0:17 move second child to first child (temp 2-component vector of int) +0:17 i2: direct index for structure (temp 2-component vector of int) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Constant: +0:17 2 (const int) 0:? 'i2' (layout(location=1 ) in 2-component vector of int) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:13 Function Parameters: 0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence -0:? Sequence +0:15 Sequence 0:15 move second child to first child (temp 2-component vector of float) 0:15 v: direct index for structure (temp 2-component vector of float) 0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) @@ -152,27 +152,27 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) -0:? Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Sequence -0:? move second child to first child (temp 2-component vector of float) -0:? v: direct index for structure (temp 2-component vector of float) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Constant: -0:? 0 (const int) +0:17 Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Sequence +0:17 move second child to first child (temp 2-component vector of float) +0:17 v: direct index for structure (temp 2-component vector of float) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Constant: +0:17 0 (const int) 0:? 'v' (layout(location=0 ) in 2-component vector of float) -0:? move second child to first child (temp 4-component vector of float) -0:? fragCoord: direct index for structure (temp 4-component vector of float) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Constant: -0:? 1 (const int) +0:17 move second child to first child (temp 4-component vector of float) +0:17 fragCoord: direct index for structure (temp 4-component vector of float) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Constant: +0:17 1 (const int) 0:? 'fragCoord' (in 4-component vector of float FragCoord) -0:? move second child to first child (temp 2-component vector of int) -0:? i2: direct index for structure (temp 2-component vector of int) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:? Constant: -0:? 2 (const int) +0:17 move second child to first child (temp 2-component vector of int) +0:17 i2: direct index for structure (temp 2-component vector of int) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 Constant: +0:17 2 (const int) 0:? 'i2' (layout(location=1 ) in 2-component vector of int) -0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) +0:17 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out index ad7518e3..86fde14c 100755 --- a/Test/baseResults/hlsl.entry-out.frag.out +++ b/Test/baseResults/hlsl.entry-out.frag.out @@ -61,7 +61,7 @@ gl_FragCoord origin is upper left 0:20 Comma (temp void) 0:20 Function Call: fun(struct-OutParam-vf2-vi21; (temp void) 0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:? Sequence +0:20 Sequence 0:20 move second child to first child (temp 2-component vector of float) 0:? 'v' (layout(location=4 ) out 2-component vector of float) 0:20 v: direct index for structure (temp 2-component vector of float) @@ -154,7 +154,7 @@ gl_FragCoord origin is upper left 0:20 Comma (temp void) 0:20 Function Call: fun(struct-OutParam-vf2-vi21; (temp void) 0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) -0:? Sequence +0:20 Sequence 0:20 move second child to first child (temp 2-component vector of float) 0:? 'v' (layout(location=4 ) out 2-component vector of float) 0:20 v: direct index for structure (temp 2-component vector of float) diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out index a686c11b..a09b87ce 100644 --- a/Test/baseResults/hlsl.gather.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -91,8 +91,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) @@ -217,8 +217,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out index e28ad34a..467ccf4c 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -85,8 +85,8 @@ gl_FragCoord origin is upper left 0:45 1 (const int) 0:45 Constant: 0:45 1.000000 -0:? Sequence -0:? Sequence +0:47 Sequence +0:47 Sequence 0:47 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:47 Color: direct index for structure (temp 4-component vector of float) @@ -209,8 +209,8 @@ gl_FragCoord origin is upper left 0:45 1 (const int) 0:45 Constant: 0:45 1.000000 -0:? Sequence -0:? Sequence +0:47 Sequence +0:47 Sequence 0:47 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:47 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index 92672356..d08a57e7 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -77,8 +77,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:45 Sequence +0:45 Sequence 0:45 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:45 Pos: direct index for structure (temp 4-component vector of float) @@ -186,8 +186,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:45 Sequence +0:45 Sequence 0:45 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:45 Pos: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out index 86a201cc..ff7eb398 100644 --- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -61,8 +61,8 @@ gl_FragCoord origin is upper left 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 -0:? Sequence -0:? Sequence +0:43 Sequence +0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:43 Color: direct index for structure (temp 4-component vector of float) @@ -160,8 +160,8 @@ gl_FragCoord origin is upper left 0:41 1 (const int) 0:41 Constant: 0:41 1.000000 -0:? Sequence -0:? Sequence +0:43 Sequence +0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:43 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out index 2bda352c..dc64a807 100644 --- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -64,8 +64,8 @@ gl_FragCoord origin is upper left 0:33 1 (const int) 0:33 Constant: 0:33 1.000000 -0:? Sequence -0:? Sequence +0:35 Sequence +0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:35 Color: direct index for structure (temp 4-component vector of float) @@ -160,8 +160,8 @@ gl_FragCoord origin is upper left 0:33 1 (const int) 0:33 Constant: 0:33 1.000000 -0:? Sequence -0:? Sequence +0:35 Sequence +0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:35 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out index c9f6bbd7..4e78cdaf 100644 --- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -334,8 +334,8 @@ gl_FragCoord origin is upper left 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 -0:? Sequence -0:? Sequence +0:70 Sequence +0:70 Sequence 0:70 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:70 Color: direct index for structure (temp 4-component vector of float) @@ -704,8 +704,8 @@ gl_FragCoord origin is upper left 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 -0:? Sequence -0:? Sequence +0:70 Sequence +0:70 Sequence 0:70 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:70 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out index 5cdf912e..ef1e7e05 100644 --- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -334,8 +334,8 @@ gl_FragCoord origin is upper left 0:74 1 (const int) 0:74 Constant: 0:74 1.000000 -0:? Sequence -0:? Sequence +0:76 Sequence +0:76 Sequence 0:76 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:76 Color: direct index for structure (temp 4-component vector of float) @@ -708,8 +708,8 @@ gl_FragCoord origin is upper left 0:74 1 (const int) 0:74 Constant: 0:74 1.000000 -0:? Sequence -0:? Sequence +0:76 Sequence +0:76 Sequence 0:76 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:76 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out index a04010f3..f178c3b3 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -586,8 +586,8 @@ gl_FragCoord origin is upper left 0:113 1 (const int) 0:113 Constant: 0:113 1.000000 -0:? Sequence -0:? Sequence +0:115 Sequence +0:115 Sequence 0:115 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:115 Color: direct index for structure (temp 4-component vector of float) @@ -1212,8 +1212,8 @@ gl_FragCoord origin is upper left 0:113 1 (const int) 0:113 Constant: 0:113 1.000000 -0:? Sequence -0:? Sequence +0:115 Sequence +0:115 Sequence 0:115 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:115 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out index 1a5df38e..f565379f 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -586,8 +586,8 @@ gl_FragCoord origin is upper left 0:107 1 (const int) 0:107 Constant: 0:107 1.000000 -0:? Sequence -0:? Sequence +0:109 Sequence +0:109 Sequence 0:109 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:109 Color: direct index for structure (temp 4-component vector of float) @@ -1208,8 +1208,8 @@ gl_FragCoord origin is upper left 0:107 1 (const int) 0:107 Constant: 0:107 1.000000 -0:? Sequence -0:? Sequence +0:109 Sequence +0:109 Sequence 0:109 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:109 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out index 8aba16ae..3a55d682 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out @@ -1060,8 +1060,8 @@ gl_FragCoord origin is upper left 0:277 1 (const int) 0:277 Constant: 0:277 1.000000 -0:? Sequence -0:? Sequence +0:279 Sequence +0:279 Sequence 0:279 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:279 Color: direct index for structure (temp 4-component vector of float) @@ -2172,8 +2172,8 @@ gl_FragCoord origin is upper left 0:277 1 (const int) 0:277 Constant: 0:277 1.000000 -0:? Sequence -0:? Sequence +0:279 Sequence +0:279 Sequence 0:279 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:279 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out index 1d72e873..3a05bca8 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -36,8 +36,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:26 Sequence +0:26 Sequence 0:26 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:26 Pos: direct index for structure (temp 4-component vector of float) @@ -91,8 +91,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:26 Sequence +0:26 Sequence 0:26 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:26 Pos: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out index 41f6ca2d..9465c62b 100644 --- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -43,8 +43,8 @@ ERROR: node is still EOpNull! 0:20 1 (const int) 0:20 Constant: 0:20 1.000000 -0:? Sequence -0:? Sequence +0:22 Sequence +0:22 Sequence 0:22 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:22 Color: direct index for structure (temp 4-component vector of float) @@ -108,8 +108,8 @@ ERROR: node is still EOpNull! 0:20 1 (const int) 0:20 Constant: 0:20 1.000000 -0:? Sequence -0:? Sequence +0:22 Sequence +0:22 Sequence 0:22 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:22 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out index 9ba8b118..9b53e304 100644 --- a/Test/baseResults/hlsl.init2.frag.out +++ b/Test/baseResults/hlsl.init2.frag.out @@ -43,8 +43,8 @@ gl_FragCoord origin is upper left 0:30 1.000000 0:30 1.000000 0:30 1.000000 -0:? Sequence -0:? Sequence +0:31 Sequence +0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:31 color: direct index for structure (temp 4-component vector of float) @@ -103,8 +103,8 @@ gl_FragCoord origin is upper left 0:30 1.000000 0:30 1.000000 0:30 1.000000 -0:? Sequence -0:? Sequence +0:31 Sequence +0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:31 color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out index b3b3d8fd..83fe24bd 100644 --- a/Test/baseResults/hlsl.inoutquals.frag.out +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -55,8 +55,8 @@ gl_FragCoord origin is upper left 0:22 'inpos' (noperspective in 4-component vector of float FragCoord) 0:22 Constant: 0:22 3 (const int) -0:? Sequence -0:? Sequence +0:24 Sequence +0:24 Sequence 0:24 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:24 Color: direct index for structure (temp 4-component vector of float) @@ -135,8 +135,8 @@ gl_FragCoord origin is upper left 0:22 'inpos' (noperspective in 4-component vector of float FragCoord) 0:22 Constant: 0:22 3 (const int) -0:? Sequence -0:? Sequence +0:24 Sequence +0:24 Sequence 0:24 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:24 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 09f88a86..4009d8da 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -2772,8 +2772,8 @@ gl_FragCoord origin is upper left 0:491 1.000000 0:491 1.000000 0:491 1.000000 -0:? Sequence -0:? Sequence +0:492 Sequence +0:492 Sequence 0:492 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:492 color: direct index for structure (temp 4-component vector of float) @@ -5573,8 +5573,8 @@ gl_FragCoord origin is upper left 0:491 1.000000 0:491 1.000000 0:491 1.000000 -0:? Sequence -0:? Sequence +0:492 Sequence +0:492 Sequence 0:492 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:492 color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index 0048d9ad..77f4fe84 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -142,8 +142,8 @@ gl_FragCoord origin is upper left 0:52 1 (const int) 0:52 Constant: 0:52 1.000000 -0:? Sequence -0:? Sequence +0:54 Sequence +0:54 Sequence 0:54 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:54 Color: direct index for structure (temp 4-component vector of float) @@ -316,8 +316,8 @@ gl_FragCoord origin is upper left 0:52 1 (const int) 0:52 Constant: 0:52 1.000000 -0:? Sequence -0:? Sequence +0:54 Sequence +0:54 Sequence 0:54 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:54 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out index fada58a9..57e479a0 100644 --- a/Test/baseResults/hlsl.load.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -142,8 +142,8 @@ gl_FragCoord origin is upper left 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 -0:? Sequence -0:? Sequence +0:70 Sequence +0:70 Sequence 0:70 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:70 Color: direct index for structure (temp 4-component vector of float) @@ -331,8 +331,8 @@ gl_FragCoord origin is upper left 0:68 1 (const int) 0:68 Constant: 0:68 1.000000 -0:? Sequence -0:? Sequence +0:70 Sequence +0:70 Sequence 0:70 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:70 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out index 20b7456d..90f7e496 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -193,8 +193,8 @@ gl_FragCoord origin is upper left 0:73 1 (const int) 0:73 Constant: 0:73 1.000000 -0:? Sequence -0:? Sequence +0:75 Sequence +0:75 Sequence 0:75 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:75 Color: direct index for structure (temp 4-component vector of float) @@ -433,8 +433,8 @@ gl_FragCoord origin is upper left 0:73 1 (const int) 0:73 Constant: 0:73 1.000000 -0:? Sequence -0:? Sequence +0:75 Sequence +0:75 Sequence 0:75 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:75 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index 4e1efadb..4649f291 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -185,8 +185,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:69 Sequence +0:69 Sequence 0:69 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:69 Pos: direct index for structure (temp 4-component vector of float) @@ -410,8 +410,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:69 Sequence +0:69 Sequence 0:69 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:69 Pos: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index ea1b5df3..ded93824 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -49,8 +49,8 @@ gl_FragCoord origin is upper left 0:35 1 (const int) 0:35 Constant: 0:35 1.000000 -0:? Sequence -0:? Sequence +0:37 Sequence +0:37 Sequence 0:37 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:37 Color: direct index for structure (temp 4-component vector of float) @@ -127,8 +127,8 @@ gl_FragCoord origin is upper left 0:35 1 (const int) 0:35 Constant: 0:35 1.000000 -0:? Sequence -0:? Sequence +0:37 Sequence +0:37 Sequence 0:37 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:37 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index 8d711296..6eaa6f7d 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -229,8 +229,8 @@ gl_FragCoord origin is upper left 0:73 1 (const int) 0:73 Constant: 0:73 1.000000 -0:? Sequence -0:? Sequence +0:75 Sequence +0:75 Sequence 0:75 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:75 Color: direct index for structure (temp 4-component vector of float) @@ -505,8 +505,8 @@ gl_FragCoord origin is upper left 0:73 1 (const int) 0:73 Constant: 0:73 1.000000 -0:? Sequence -0:? Sequence +0:75 Sequence +0:75 Sequence 0:75 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:75 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index 665fc47a..776cd835 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -166,8 +166,8 @@ gl_FragCoord origin is upper left 0:66 1 (const int) 0:66 Constant: 0:66 1.000000 -0:? Sequence -0:? Sequence +0:68 Sequence +0:68 Sequence 0:68 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:68 Color: direct index for structure (temp 4-component vector of float) @@ -379,8 +379,8 @@ gl_FragCoord origin is upper left 0:66 1 (const int) 0:66 Constant: 0:66 1.000000 -0:? Sequence -0:? Sequence +0:68 Sequence +0:68 Sequence 0:68 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:68 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out index 7d49629d..8c637c14 100644 --- a/Test/baseResults/hlsl.matrixindex.frag.out +++ b/Test/baseResults/hlsl.matrixindex.frag.out @@ -117,8 +117,8 @@ gl_FragCoord origin is upper left 0:47 0 (const int) 0:47 Construct vec4 (temp 4-component vector of float) 0:47 'e2_11' (temp float) -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) @@ -252,8 +252,8 @@ gl_FragCoord origin is upper left 0:47 0 (const int) 0:47 Construct vec4 (temp 4-component vector of float) 0:47 'e2_11' (temp float) -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out index 6d192c0a..e8d3630e 100644 --- a/Test/baseResults/hlsl.numericsuffixes.frag.out +++ b/Test/baseResults/hlsl.numericsuffixes.frag.out @@ -58,8 +58,8 @@ gl_FragCoord origin is upper left 0:18 Construct vec4 (temp 4-component vector of float) 0:18 Convert int to float (temp float) 0:18 'r07' (temp int) -0:? Sequence -0:? Sequence +0:19 Sequence +0:19 Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:19 color: direct index for structure (temp 4-component vector of float) @@ -133,8 +133,8 @@ gl_FragCoord origin is upper left 0:18 Construct vec4 (temp 4-component vector of float) 0:18 Convert int to float (temp float) 0:18 'r07' (temp int) -0:? Sequence -0:? Sequence +0:19 Sequence +0:19 Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:19 color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out index 281b680b..6bbbee64 100644 --- a/Test/baseResults/hlsl.pp.line.frag.out +++ b/Test/baseResults/hlsl.pp.line.frag.out @@ -31,8 +31,8 @@ gl_FragCoord origin is upper left 0:127 1 (const int) 0:127 Constant: 0:127 1.000000 -0:? Sequence -0:? Sequence +0:129 Sequence +0:129 Sequence 0:129 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:129 Color: direct index for structure (temp 4-component vector of float) @@ -86,8 +86,8 @@ gl_FragCoord origin is upper left 0:127 1 (const int) 0:127 Constant: 0:127 1.000000 -0:? Sequence -0:? Sequence +0:129 Sequence +0:129 Sequence 0:129 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:129 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out index 40b6c4d9..e9205cfe 100644 --- a/Test/baseResults/hlsl.precise.frag.out +++ b/Test/baseResults/hlsl.precise.frag.out @@ -19,8 +19,8 @@ gl_FragCoord origin is upper left 0:11 1.000000 0:11 1.000000 0:11 1.000000 -0:? Sequence -0:? Sequence +0:12 Sequence +0:12 Sequence 0:12 move second child to first child (noContraction temp 4-component vector of float) 0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float) 0:12 color: direct index for structure (noContraction temp 4-component vector of float) @@ -56,8 +56,8 @@ gl_FragCoord origin is upper left 0:11 1.000000 0:11 1.000000 0:11 1.000000 -0:? Sequence -0:? Sequence +0:12 Sequence +0:12 Sequence 0:12 move second child to first child (noContraction temp 4-component vector of float) 0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float) 0:12 color: direct index for structure (noContraction temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out index 25238beb..e3df54ff 100644 --- a/Test/baseResults/hlsl.promotions.frag.out +++ b/Test/baseResults/hlsl.promotions.frag.out @@ -772,8 +772,8 @@ gl_FragCoord origin is upper left 0:199 Constant: 0:199 0 (const int) 0:199 'outval' (temp 4-component vector of float) -0:? Sequence -0:? Sequence +0:200 Sequence +0:200 Sequence 0:200 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:200 Color: direct index for structure (temp 4-component vector of float) @@ -1562,8 +1562,8 @@ gl_FragCoord origin is upper left 0:199 Constant: 0:199 0 (const int) 0:199 'outval' (temp 4-component vector of float) -0:? Sequence -0:? Sequence +0:200 Sequence +0:200 Sequence 0:200 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:200 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out index 701229e0..bb2962d9 100644 --- a/Test/baseResults/hlsl.sample.array.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -121,8 +121,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) @@ -277,8 +277,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out index 2746f16f..b6cc8c6d 100644 --- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -231,8 +231,8 @@ gl_FragCoord origin is upper left 0:87 1 (const int) 0:87 Constant: 0:87 1.000000 -0:? Sequence -0:? Sequence +0:89 Sequence +0:89 Sequence 0:89 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:89 Color: direct index for structure (temp 4-component vector of float) @@ -500,8 +500,8 @@ gl_FragCoord origin is upper left 0:87 1 (const int) 0:87 Constant: 0:87 1.000000 -0:? Sequence -0:? Sequence +0:89 Sequence +0:89 Sequence 0:89 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:89 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out index 48e3d85c..9de5f49b 100644 --- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -139,8 +139,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) @@ -316,8 +316,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out index 4d64fa0b..f4646d44 100644 --- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -100,8 +100,8 @@ gl_FragCoord origin is upper left 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 -0:? Sequence -0:? Sequence +0:36 Sequence +0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:36 Color: direct index for structure (temp 4-component vector of float) @@ -232,8 +232,8 @@ gl_FragCoord origin is upper left 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 -0:? Sequence -0:? Sequence +0:36 Sequence +0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:36 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out index 236889ba..539855e0 100644 --- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -139,8 +139,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) @@ -313,8 +313,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out index 408c5ffa..9fb8b1a0 100644 --- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -169,8 +169,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 -0:? Sequence -0:? Sequence +0:50 Sequence +0:50 Sequence 0:50 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:50 Color: direct index for structure (temp 4-component vector of float) @@ -376,8 +376,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 -0:? Sequence -0:? Sequence +0:50 Sequence +0:50 Sequence 0:50 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:50 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index ce7c4d33..643e0039 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -157,8 +157,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) @@ -352,8 +352,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index 2bad0c31..3ab84b9a 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -112,8 +112,8 @@ gl_FragCoord origin is upper left 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 -0:? Sequence -0:? Sequence +0:36 Sequence +0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:36 Color: direct index for structure (temp 4-component vector of float) @@ -256,8 +256,8 @@ gl_FragCoord origin is upper left 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 -0:? Sequence -0:? Sequence +0:36 Sequence +0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:36 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index a968b749..05f53c70 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -148,8 +148,8 @@ gl_FragCoord origin is upper left 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 -0:? Sequence -0:? Sequence +0:59 Sequence +0:59 Sequence 0:59 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:59 Color: direct index for structure (temp 4-component vector of float) @@ -342,8 +342,8 @@ gl_FragCoord origin is upper left 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 -0:? Sequence -0:? Sequence +0:59 Sequence +0:59 Sequence 0:59 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:59 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index 94986cfd..d7a6b2f3 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -139,8 +139,8 @@ gl_FragCoord origin is upper left 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 -0:? Sequence -0:? Sequence +0:60 Sequence +0:60 Sequence 0:60 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:60 Color: direct index for structure (temp 4-component vector of float) @@ -324,8 +324,8 @@ gl_FragCoord origin is upper left 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 -0:? Sequence -0:? Sequence +0:60 Sequence +0:60 Sequence 0:60 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:60 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index 7e3d0de9..021e08f6 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -112,8 +112,8 @@ gl_FragCoord origin is upper left 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 -0:? Sequence -0:? Sequence +0:65 Sequence +0:65 Sequence 0:65 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:65 Color: direct index for structure (temp 4-component vector of float) @@ -270,8 +270,8 @@ gl_FragCoord origin is upper left 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 -0:? Sequence -0:? Sequence +0:65 Sequence +0:65 Sequence 0:65 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:65 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index fab86ff3..73a2a89b 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -118,8 +118,8 @@ gl_FragCoord origin is upper left 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 -0:? Sequence -0:? Sequence +0:66 Sequence +0:66 Sequence 0:66 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:66 Color: direct index for structure (temp 4-component vector of float) @@ -282,8 +282,8 @@ gl_FragCoord origin is upper left 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 -0:? Sequence -0:? Sequence +0:66 Sequence +0:66 Sequence 0:66 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:66 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index adeb3cbc..c5009ff3 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -166,8 +166,8 @@ gl_FragCoord origin is upper left 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 -0:? Sequence -0:? Sequence +0:59 Sequence +0:59 Sequence 0:59 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:59 Color: direct index for structure (temp 4-component vector of float) @@ -378,8 +378,8 @@ gl_FragCoord origin is upper left 0:57 1 (const int) 0:57 Constant: 0:57 1.000000 -0:? Sequence -0:? Sequence +0:59 Sequence +0:59 Sequence 0:59 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:59 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index 0492ae78..b8f55b8e 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -157,8 +157,8 @@ gl_FragCoord origin is upper left 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 -0:? Sequence -0:? Sequence +0:60 Sequence +0:60 Sequence 0:60 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:60 Color: direct index for structure (temp 4-component vector of float) @@ -360,8 +360,8 @@ gl_FragCoord origin is upper left 0:58 1 (const int) 0:58 Constant: 0:58 1.000000 -0:? Sequence -0:? Sequence +0:60 Sequence +0:60 Sequence 0:60 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:60 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index c50872f4..b30a252e 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -124,8 +124,8 @@ gl_FragCoord origin is upper left 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 -0:? Sequence -0:? Sequence +0:65 Sequence +0:65 Sequence 0:65 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:65 Color: direct index for structure (temp 4-component vector of float) @@ -294,8 +294,8 @@ gl_FragCoord origin is upper left 0:63 1 (const int) 0:63 Constant: 0:63 1.000000 -0:? Sequence -0:? Sequence +0:65 Sequence +0:65 Sequence 0:65 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:65 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index 88f8d347..19d262ad 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -130,8 +130,8 @@ gl_FragCoord origin is upper left 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 -0:? Sequence -0:? Sequence +0:66 Sequence +0:66 Sequence 0:66 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:66 Color: direct index for structure (temp 4-component vector of float) @@ -306,8 +306,8 @@ gl_FragCoord origin is upper left 0:64 1 (const int) 0:64 Constant: 0:64 1.000000 -0:? Sequence -0:? Sequence +0:66 Sequence +0:66 Sequence 0:66 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:66 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out index ca057fd7..1513492a 100644 --- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -175,8 +175,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) @@ -385,8 +385,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out index 326bd016..92c0c342 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -223,8 +223,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 -0:? Sequence -0:? Sequence +0:50 Sequence +0:50 Sequence 0:50 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:50 Color: direct index for structure (temp 4-component vector of float) @@ -484,8 +484,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Constant: 0:48 1.000000 -0:? Sequence -0:? Sequence +0:50 Sequence +0:50 Sequence 0:50 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:50 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index ba56951e..e8909345 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -215,8 +215,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:48 Pos: direct index for structure (temp 4-component vector of float) @@ -461,8 +461,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:48 Pos: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out index b000b538..9145aa4d 100644 --- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -193,8 +193,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) @@ -424,8 +424,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out index 8eee2b50..e964ff93 100644 --- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -130,8 +130,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Constant: 0:36 1.000000 -0:? Sequence -0:? Sequence +0:38 Sequence +0:38 Sequence 0:38 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:38 Color: direct index for structure (temp 4-component vector of float) @@ -295,8 +295,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Constant: 0:36 1.000000 -0:? Sequence -0:? Sequence +0:38 Sequence +0:38 Sequence 0:38 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:38 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out index 4254e04b..d031665f 100644 --- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -139,8 +139,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) @@ -313,8 +313,8 @@ gl_FragCoord origin is upper left 0:40 1 (const int) 0:40 Constant: 0:40 1.000000 -0:? Sequence -0:? Sequence +0:42 Sequence +0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:42 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out index 44802a98..4a937502 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -169,8 +169,8 @@ gl_FragCoord origin is upper left 0:49 1 (const int) 0:49 Constant: 0:49 1.000000 -0:? Sequence -0:? Sequence +0:51 Sequence +0:51 Sequence 0:51 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:51 Color: direct index for structure (temp 4-component vector of float) @@ -377,8 +377,8 @@ gl_FragCoord origin is upper left 0:49 1 (const int) 0:49 Constant: 0:49 1.000000 -0:? Sequence -0:? Sequence +0:51 Sequence +0:51 Sequence 0:51 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:51 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index e76a3955..c18fa89b 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -161,8 +161,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:48 Pos: direct index for structure (temp 4-component vector of float) @@ -353,8 +353,8 @@ Shader version: 450 0:? 0.000000 0:? 0.000000 0:? 0.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Pos' (out 4-component vector of float Position) 0:48 Pos: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out index 043a04ca..4d816499 100644 --- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -157,8 +157,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) @@ -352,8 +352,8 @@ gl_FragCoord origin is upper left 0:46 1 (const int) 0:46 Constant: 0:46 1.000000 -0:? Sequence -0:? Sequence +0:48 Sequence +0:48 Sequence 0:48 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:48 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out index bfc444da..ef3dcf19 100644 --- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -112,8 +112,8 @@ gl_FragCoord origin is upper left 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 -0:? Sequence -0:? Sequence +0:36 Sequence +0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:36 Color: direct index for structure (temp 4-component vector of float) @@ -256,8 +256,8 @@ gl_FragCoord origin is upper left 0:34 1 (const int) 0:34 Constant: 0:34 1.000000 -0:? Sequence -0:? Sequence +0:36 Sequence +0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:36 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out index 43232161..a9f92768 100644 --- a/Test/baseResults/hlsl.semicolons.frag.out +++ b/Test/baseResults/hlsl.semicolons.frag.out @@ -19,8 +19,8 @@ gl_FragCoord origin is upper left 0:16 1.000000 0:16 1.000000 0:16 1.000000 -0:? Sequence -0:? Sequence +0:17 Sequence +0:17 Sequence 0:17 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:17 color: direct index for structure (temp 4-component vector of float) @@ -55,8 +55,8 @@ gl_FragCoord origin is upper left 0:16 1.000000 0:16 1.000000 0:16 1.000000 -0:? Sequence -0:? Sequence +0:17 Sequence +0:17 Sequence 0:17 move second child to first child (temp 4-component vector of float) 0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:17 color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out index 4fdfecce..8593db62 100644 --- a/Test/baseResults/hlsl.stringtoken.frag.out +++ b/Test/baseResults/hlsl.stringtoken.frag.out @@ -15,8 +15,8 @@ gl_FragCoord origin is upper left 0:? 0.000000 0:? 0.000000 0:? 1.000000 -0:? Sequence -0:? Sequence +0:19 Sequence +0:19 Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:19 Color: direct index for structure (temp 4-component vector of float) @@ -49,8 +49,8 @@ gl_FragCoord origin is upper left 0:? 0.000000 0:? 0.000000 0:? 1.000000 -0:? Sequence -0:? Sequence +0:19 Sequence +0:19 Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:19 Color: direct index for structure (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out index 193ccc1c..f3e56b6a 100755 --- a/Test/baseResults/hlsl.structin.vert.out +++ b/Test/baseResults/hlsl.structin.vert.out @@ -32,8 +32,8 @@ Shader version: 450 0:11 0 (const int) 0:11 'd' (layout(location=0 ) in 4-component vector of float) 0:11 'e' (layout(location=5 ) in 4-component vector of float) -0:? Sequence -0:? Sequence +0:13 Sequence +0:13 Sequence 0:13 move second child to first child (temp 2-element array of 4-component vector of float) 0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float) 0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) @@ -100,8 +100,8 @@ Shader version: 450 0:11 0 (const int) 0:11 'd' (layout(location=0 ) in 4-component vector of float) 0:11 'e' (layout(location=5 ) in 4-component vector of float) -0:? Sequence -0:? Sequence +0:13 Sequence +0:13 Sequence 0:13 move second child to first child (temp 2-element array of 4-component vector of float) 0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float) 0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 0db44dca..c003acd9 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1544" +#define GLSLANG_REVISION "Overload400-PrecQual.1545" #define GLSLANG_DATE "01-Oct-2016" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 63d9c3d7..2fa892f4 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1115,7 +1115,7 @@ TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermT entryPointOutput->getType()); TIntermNode* returnSequence = handleAssign(loc, EOpAssign, left, converted); returnSequence = intermediate.makeAggregate(returnSequence); - returnSequence = intermediate.growAggregate(returnSequence, intermediate.addBranch(EOpReturn, loc)); + returnSequence = intermediate.growAggregate(returnSequence, intermediate.addBranch(EOpReturn, loc), loc); returnSequence->getAsAggregate()->setOperator(EOpSequence); return returnSequence; @@ -1183,7 +1183,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op EOpIndexDirectStruct, *members[member].type); TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member, EOpIndexDirectStruct, *members[member].type); - assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc)); + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); } } @@ -1201,7 +1201,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, element, EOpIndexDirect, dereferencedType); - assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc)); + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); } } @@ -2393,18 +2393,17 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI // The deepest will copy member-by-member to build the structure to pass. // The level above that will be a two-operand EOpComma sequence that follows the copy by the // object itself. - TSourceLoc dummyLoc; // ?? fix these everywhere to be arguments[i]->getLoc()? - dummyLoc.init(); TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[i].type); internalAggregate->getWritableType().getQualifier().makeTemporary(); TIntermSymbol* internalSymbolNode = new TIntermSymbol(internalAggregate->getUniqueId(), internalAggregate->getName(), internalAggregate->getType()); + internalSymbolNode->setLoc(arg->getLoc()); // This makes the deepest level, the member-wise copy - TIntermAggregate* assignAgg = handleAssign(dummyLoc, EOpAssign, internalSymbolNode, arg)->getAsAggregate(); + TIntermAggregate* assignAgg = handleAssign(arg->getLoc(), EOpAssign, internalSymbolNode, arg)->getAsAggregate(); // Now, pair that with the resulting aggregate. - assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode); + assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode, arg->getLoc()); assignAgg->setOperator(EOpComma); assignAgg->setType(internalAggregate->getType()); setArg(i, assignAgg); From 273060c2d3da1e4aeab4923306ffc5c80c462da4 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 17:47:40 -0600 Subject: [PATCH 028/130] Non-functional: Rationalizing parse helper hierarchy, step 1 (effected memory of HLSL keyword map). --- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/ShaderLang.cpp | 3 +++ hlsl/hlslParseHelper.cpp | 30 ----------------------- 3 files changed, 4 insertions(+), 31 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index c003acd9..797c2f2f 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1545" +#define GLSLANG_REVISION "Overload400-PrecQual.1546" #define GLSLANG_DATE "01-Oct-2016" diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index ffd6b00c..d6ff7825 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -51,6 +51,7 @@ #include "../../hlsl/hlslParseables.h" #include "Scan.h" #include "ScanContext.h" +#include "../../hlsl/hlslScanContext.h" #include "../Include/ShHandle.h" #include "../../OGLCompilersDLL/InitializeDll.h" @@ -1049,6 +1050,7 @@ int ShInitialize() PerProcessGPA = new TPoolAllocator(); glslang::TScanContext::fillInKeywordMap(); + glslang::HlslScanContext::fillInKeywordMap(); return 1; } @@ -1141,6 +1143,7 @@ int __fastcall ShFinalize() } glslang::TScanContext::deleteKeywordMap(); + glslang::HlslScanContext::deleteKeywordMap(); return 1; } diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 2fa892f4..f1294ef1 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -117,8 +117,6 @@ bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& currentScanner = &input; ppContext.setInput(input, versionWillBeError); - HlslScanContext::fillInKeywordMap(); // TODO: right place, and include the delete too - HlslScanContext scanContext(*this, ppContext); HlslGrammar grammar(scanContext, *this); if (!grammar.parse()) { @@ -4774,34 +4772,6 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS if (arraySizes) blockType.newArraySizes(*arraySizes); - // - // 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. - // - // "Block names have no other use within a shader - // beyond interface matching; it is a compile-time error to use a block name at global scope for anything - // other than as a block name (e.g., use of a block name for a global variable name or function name is - // currently reserved)." - // - // Use the symbol table to prevent normal reuse of the block's name, as a variable entry, - // whose type is EbtBlock, but without all the structure; that will come from the type - // the instances point to. - // - //??TType blockNameType(EbtBlock, blockType.getQualifier().storage); - //??TVariable* blockNameVar = new TVariable(blockName, blockNameType); - //if (! symbolTable.insert(*blockNameVar)) { - // TSymbol* existingName = symbolTable.find(*blockName); - // if (existingName->getType().getBasicType() == EbtBlock) { - // if (existingName->getType().getQualifier().storage == blockType.getQualifier().storage) { - // error(loc, "Cannot reuse block name within the same interface:", blockName->c_str(), blockType.getStorageQualifierString()); - // return; - // } - // } else { - // error(loc, "block name cannot redefine a non-block name", blockName->c_str(), ""); - // return; - // } - //} - // Add the variable, as anonymous or named instanceName. // Make an anonymous variable if no name was provided. if (! instanceName) From a2a5dd474e0cef73a28f73555a98efd7f80afffc Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 18:07:57 -0600 Subject: [PATCH 029/130] Non-functional: Rationalizing parse helper hierarchy, step 2 (effected error messaging and cascading errors). --- glslang/Include/revision.h | 2 +- .../MachineIndependent/ParseContextBase.cpp | 72 +++++++++++++++++- glslang/MachineIndependent/ParseHelper.cpp | 76 ------------------- glslang/MachineIndependent/ParseHelper.h | 26 +++---- gtests/TestFixture.cpp | 2 +- hlsl/hlslParseHelper.cpp | 64 ---------------- hlsl/hlslParseHelper.h | 9 --- 7 files changed, 86 insertions(+), 165 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 797c2f2f..72d7d687 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1546" +#define GLSLANG_REVISION "Overload400-PrecQual.1547" #define GLSLANG_DATE "01-Oct-2016" diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index a8e83d01..2d78714d 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -36,12 +36,83 @@ // Implement the TParseContextBase class. +#include + #include "ParseHelper.h" extern int yyparse(glslang::TParseContext*); namespace glslang { +// +// Used to output syntax, parsing, and semantic errors. +// + +void TParseContextBase::outputMessage(const TSourceLoc& loc, const char* szReason, + const char* szToken, + const char* szExtraInfoFormat, + TPrefixType prefix, va_list args) +{ + const int maxSize = MaxTokenLength + 200; + char szExtraInfo[maxSize]; + + safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); + + infoSink.info.prefix(prefix); + infoSink.info.location(loc); + infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; + + if (prefix == EPrefixError) { + ++numErrors; + } +} + +void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + if (messages & EShMsgOnlyPreprocessor) + return; + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); + va_end(args); + + if ((messages & EShMsgCascadingErrors) == 0) + currentScanner->setEndOfInput(); +} + +void C_DECL TParseContextBase::warn(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + if (suppressWarnings()) + return; + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); + va_end(args); +} + +void C_DECL TParseContextBase::ppError(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); + va_end(args); + + if ((messages & EShMsgCascadingErrors) == 0) + currentScanner->setEndOfInput(); +} + +void C_DECL TParseContextBase::ppWarn(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); + va_end(args); +} + // Select the best matching function for 'call' from 'candidateList'. // // Assumptions @@ -235,7 +306,6 @@ bool TParseContextBase::insertGlobalUniformBlock() } return inserted; - } } // end namespace glslang diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 63140a00..dd58ef14 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -39,7 +39,6 @@ #include "Scan.h" #include "../OSDependent/osinclude.h" -#include #include #include "preprocessor/PpContext.h" @@ -362,81 +361,6 @@ bool TParseContext::parseVectorFields(const TSourceLoc& loc, const TString& comp return true; } -/////////////////////////////////////////////////////////////////////// -// -// Errors -// -//////////////////////////////////////////////////////////////////////// - -// -// Used to output syntax, parsing, and semantic errors. -// - -void TParseContext::outputMessage(const TSourceLoc& loc, const char* szReason, - const char* szToken, - const char* szExtraInfoFormat, - TPrefixType prefix, va_list args) -{ - const int maxSize = MaxTokenLength + 200; - char szExtraInfo[maxSize]; - - safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); - - infoSink.info.prefix(prefix); - infoSink.info.location(loc); - infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; - - if (prefix == EPrefixError) { - ++numErrors; - } -} - -void C_DECL TParseContext::error(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (messages & EShMsgOnlyPreprocessor) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); - - if ((messages & EShMsgCascadingErrors) == 0) - currentScanner->setEndOfInput(); -} - -void C_DECL TParseContext::warn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (suppressWarnings()) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - -void C_DECL TParseContext::ppError(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); - - if ((messages & EShMsgCascadingErrors) == 0) - currentScanner->setEndOfInput(); -} - -void C_DECL TParseContext::ppWarn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - // // Handle seeing a variable identifier in the grammar. // diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index e377501d..fba09eeb 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -82,8 +82,17 @@ public: globalUniformBlock(nullptr) { } virtual ~TParseContextBase() { } + void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); + 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, ...); + void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); + virtual void setLimits(const TBuiltInResource&) = 0; - + EShLanguage getLanguage() const { return language; } TIntermAggregate*& getLinkage() { return linkage; } void setScanContext(TScanContext* c) { scanContext = c; } @@ -162,6 +171,9 @@ protected: // override this to set the language-specific name virtual const char* getGlobalUniformBlockName() { return ""; } virtual void finalizeGlobalUniformBlockLayout(TVariable&) { } + void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, TPrefixType prefix, + va_list args); }; // @@ -216,15 +228,6 @@ public: bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false); void parserError(const char* s); // for bison's yyerror - void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - 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, ...); - void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void reservedErrorCheck(const TSourceLoc&, const TString&); void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op); bool lineContinuationCheck(const TSourceLoc&, bool endOfComment); @@ -366,9 +369,6 @@ protected: TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); void finalErrorCheck(); - void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, TPrefixType prefix, - va_list args); public: // diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp index 1dff65ac..7d27b3b1 100644 --- a/gtests/TestFixture.cpp +++ b/gtests/TestFixture.cpp @@ -74,7 +74,7 @@ EShMessages DeriveOptions(Source source, Semantics semantics, Target target) case Source::GLSL: break; case Source::HLSL: - result = EShMsgReadHlsl; + result = static_cast(result | EShMsgReadHlsl); break; } diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index f1294ef1..be1e23c1 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -43,7 +43,6 @@ #include "../glslang/OSDependent/osinclude.h" -#include #include namespace glslang { @@ -234,69 +233,6 @@ bool HlslParseContext::parseVectorFields(const TSourceLoc& loc, const TString& c return true; } -// -// Used to output syntax, parsing, and semantic errors. -// - -void HlslParseContext::outputMessage(const TSourceLoc& loc, const char* szReason, - const char* szToken, - const char* szExtraInfoFormat, - TPrefixType prefix, va_list args) -{ - const int maxSize = MaxTokenLength + 200; - char szExtraInfo[maxSize]; - - safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); - - infoSink.info.prefix(prefix); - infoSink.info.location(loc); - infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; - - if (prefix == EPrefixError) { - ++numErrors; - } -} - -void C_DECL HlslParseContext::error(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (messages & EShMsgOnlyPreprocessor) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); -} - -void C_DECL HlslParseContext::warn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (suppressWarnings()) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - -void C_DECL HlslParseContext::ppError(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); -} - -void C_DECL HlslParseContext::ppWarn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - // // Handle seeing a variable identifier in the grammar. // diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 657858a6..c7568b2a 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -53,15 +53,6 @@ public: bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false); virtual const char* getGlobalUniformBlockName() { return "$Global"; } - void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - 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, ...); - void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void reservedPpErrorCheck(const TSourceLoc&, const char* /*name*/, const char* /*op*/) { } bool lineContinuationCheck(const TSourceLoc&, bool /*endOfComment*/) { return true; } bool lineDirectiveShouldSetNextLine() const { return true; } From de97fe0ad433d71f699834fcf45a329d6f41679a Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 1 Oct 2016 18:44:38 -0600 Subject: [PATCH 030/130] Non-functional: Rationalizing parse helper hierarchy, step 3 (effected editable symbols and IO resize). --- glslang/Include/revision.h | 2 +- .../MachineIndependent/ParseContextBase.cpp | 32 +++ glslang/MachineIndependent/ParseHelper.cpp | 32 +-- glslang/MachineIndependent/ParseHelper.h | 25 +-- hlsl/hlslParseHelper.cpp | 185 ------------------ hlsl/hlslParseHelper.h | 12 -- 6 files changed, 51 insertions(+), 237 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 72d7d687..21914247 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1547" +#define GLSLANG_REVISION "Overload400-PrecQual.1548" #define GLSLANG_DATE "01-Oct-2016" diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 2d78714d..b92effce 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -113,6 +113,38 @@ void C_DECL TParseContextBase::ppWarn(const TSourceLoc& loc, const char* szReaso va_end(args); } +// Make a shared symbol have a non-shared version that can be edited by the current +// compile, such that editing its type will not change the shared version and will +// effect all nodes sharing it. +void TParseContextBase::makeEditable(TSymbol*& symbol) +{ + // copyUp() does a deep copy of the type. + symbol = symbolTable.copyUp(symbol); + + // Save it in the AST for linker use. + intermediate.addSymbolLinkageNode(linkage, *symbol); +} + +// Return a writable version of the variable 'name'. +// +// Return nullptr if 'name' is not found. This should mean +// something is seriously wrong (e.g., compiler asking self for +// built-in that doesn't exist). +TVariable* TParseContextBase::getEditableVariable(const char* name) +{ + bool builtIn; + TSymbol* symbol = symbolTable.find(name, &builtIn); + + assert(symbol != nullptr); + if (symbol == nullptr) + return nullptr; + + if (builtIn) + makeEditable(symbol); + + return symbol->getAsVariable(); +} + // Select the best matching function for 'call' from 'candidateList'. // // Assumptions diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index dd58ef14..13f277d7 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -381,7 +381,9 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb // If this is a variable or a block, check it and all it contains, but if this // is a member of an anonymous block, check the whole block, as the whole block // will need to be copied up if it contains an implicitly-sized array. - if (symbol->getType().containsImplicitlySizedArray() || (symbol->getAsAnonMember() && symbol->getAsAnonMember()->getAnonContainer().getType().containsImplicitlySizedArray())) + if (symbol->getType().containsImplicitlySizedArray() || + (symbol->getAsAnonMember() && + symbol->getAsAnonMember()->getAnonContainer().getType().containsImplicitlySizedArray())) makeEditable(symbol); } @@ -564,35 +566,11 @@ void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* b // effect all nodes sharing it. void TParseContext::makeEditable(TSymbol*& symbol) { - // copyUp() does a deep copy of the type. - symbol = symbolTable.copyUp(symbol); + TParseContextBase::makeEditable(symbol); - // Also, see if it's tied to IO resizing + // See if it's tied to IO resizing if (isIoResizeArray(symbol->getType())) ioArraySymbolResizeList.push_back(symbol); - - // Also, save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, *symbol); -} - -// Return a writable version of the variable 'name'. -// -// Return nullptr if 'name' is not found. This should mean -// something is seriously wrong (e.g., compiler asking self for -// built-in that doesn't exist). -TVariable* TParseContext::getEditableVariable(const char* name) -{ - bool builtIn; - TSymbol* symbol = symbolTable.find(name, &builtIn); - - assert(symbol != nullptr); - if (symbol == nullptr) - return nullptr; - - if (builtIn) - makeEditable(symbol); - - return symbol->getAsVariable(); } // Return true if this is a geometry shader input array or tessellation control output array. diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index fba09eeb..eab78359 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -82,14 +82,14 @@ public: globalUniformBlock(nullptr) { } virtual ~TParseContextBase() { } - void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - 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, ...); - void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); + 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, + const char* szExtraInfoFormat, ...); + virtual void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); + virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); virtual void setLimits(const TBuiltInResource&) = 0; @@ -171,9 +171,11 @@ protected: // override this to set the language-specific name virtual const char* getGlobalUniformBlockName() { return ""; } virtual void finalizeGlobalUniformBlockLayout(TVariable&) { } - void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, TPrefixType prefix, - va_list args); + virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, TPrefixType prefix, + va_list args); + virtual void makeEditable(TSymbol*&); + virtual TVariable* getEditableVariable(const char* name); }; // @@ -241,7 +243,6 @@ public: void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void makeEditable(TSymbol*&); - TVariable* getEditableVariable(const char* name); bool isIoResizeArray(const TType&) const; void fixIoArraySize(const TSourceLoc&, TType&); void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index be1e23c1..b462e92f 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -249,19 +249,6 @@ TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, TSymbol* s if (symbol && symbol->getNumExtensions()) requireExtensions(loc, symbol->getNumExtensions(), symbol->getExtensions(), symbol->getName().c_str()); - if (symbol && symbol->isReadOnly()) { - // All shared things containing an implicitly sized array must be copied up - // on first use, so that all future references will share its array structure, - // so that editing the implicit size will effect all nodes consuming it, - // and so that editing the implicit size won't change the shared one. - // - // If this is a variable or a block, check it and all it contains, but if this - // is a member of an anonymous block, check the whole block, as the whole block - // will need to be copied up if it contains an implicitly-sized array. - if (symbol->getType().containsImplicitlySizedArray() || (symbol->getAsAnonMember() && symbol->getAsAnonMember()->getAnonContainer().getType().containsImplicitlySizedArray())) - makeEditable(symbol); - } - const TVariable* variable; const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr; TIntermTyped* node = nullptr; @@ -335,9 +322,6 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, else { // at least one of base and index is variable... - if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) - handleIoResizeArrayAccess(loc, base); - if (base->getAsSymbolNode() && shouldFlatten(base->getType())) { if (index->getQualifier().storage != EvqConst) error(loc, "Invalid variable index to flattened uniform array", base->getAsSymbolNode()->getName().c_str(), ""); @@ -381,125 +365,6 @@ void HlslParseContext::checkIndex(const TSourceLoc& /*loc*/, const TType& /*type // HLSL todo: any rules for index fixups? } -// Make a shared symbol have a non-shared version that can be edited by the current -// compile, such that editing its type will not change the shared version and will -// effect all nodes sharing it. -void HlslParseContext::makeEditable(TSymbol*& symbol) -{ - // copyUp() does a deep copy of the type. - symbol = symbolTable.copyUp(symbol); - - // Also, see if it's tied to IO resizing - if (isIoResizeArray(symbol->getType())) - ioArraySymbolResizeList.push_back(symbol); - - // Also, save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, *symbol); -} - -TVariable* HlslParseContext::getEditableVariable(const char* name) -{ - bool builtIn; - TSymbol* symbol = symbolTable.find(name, &builtIn); - if (builtIn) - makeEditable(symbol); - - return symbol->getAsVariable(); -} - -// Return true if this is a geometry shader input array or tessellation control output array. -bool HlslParseContext::isIoResizeArray(const TType& type) const -{ - return type.isArray() && - ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || - (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch)); -} - -// If an array is not isIoResizeArray() but is an io array, make sure it has the right size -void HlslParseContext::fixIoArraySize(const TSourceLoc& loc, TType& type) -{ - if (! type.isArray() || type.getQualifier().patch || symbolTable.atBuiltInLevel()) - return; - - assert(! isIoResizeArray(type)); - - if (type.getQualifier().storage != EvqVaryingIn || type.getQualifier().patch) - return; - - if (language == EShLangTessControl || language == EShLangTessEvaluation) { - if (type.getOuterArraySize() != resources.maxPatchVertices) { - if (type.isExplicitlySizedArray()) - error(loc, "tessellation input array size must be gl_MaxPatchVertices or implicitly sized", "[]", ""); - type.changeOuterArraySize(resources.maxPatchVertices); - } - } -} - -// Handle a dereference of a geometry shader input array or tessellation control output array. -// See ioArraySymbolResizeList comment in ParseHelper.h. -// -void HlslParseContext::handleIoResizeArrayAccess(const TSourceLoc& /*loc*/, TIntermTyped* base) -{ - TIntermSymbol* symbolNode = base->getAsSymbolNode(); - assert(symbolNode); - if (! symbolNode) - return; - - // fix array size, if it can be fixed and needs to be fixed (will allow variable indexing) - if (symbolNode->getType().isImplicitlySizedArray()) { - int newSize = getIoArrayImplicitSize(); - if (newSize > 0) - symbolNode->getWritableType().changeOuterArraySize(newSize); - } -} - -// If there has been an input primitive declaration (geometry shader) or an output -// number of vertices declaration(tessellation shader), make sure all input array types -// match it in size. Types come either from nodes in the AST or symbols in the -// symbol table. -// -// Types without an array size will be given one. -// Types already having a size that is wrong will get an error. -// -void HlslParseContext::checkIoArraysConsistency(const TSourceLoc& loc, bool tailOnly) -{ - int requiredSize = getIoArrayImplicitSize(); - if (requiredSize == 0) - return; - - const char* feature; - if (language == EShLangGeometry) - feature = TQualifier::getGeometryString(intermediate.getInputPrimitive()); - else if (language == EShLangTessControl) - feature = "vertices"; - else - feature = "unknown"; - - if (tailOnly) { - checkIoArrayConsistency(loc, requiredSize, feature, ioArraySymbolResizeList.back()->getWritableType(), ioArraySymbolResizeList.back()->getName()); - return; - } - - for (size_t i = 0; i < ioArraySymbolResizeList.size(); ++i) - checkIoArrayConsistency(loc, requiredSize, feature, ioArraySymbolResizeList[i]->getWritableType(), ioArraySymbolResizeList[i]->getName()); -} - -int HlslParseContext::getIoArrayImplicitSize() const -{ - if (language == EShLangGeometry) - return TQualifier::mapGeometryToSize(intermediate.getInputPrimitive()); - else if (language == EShLangTessControl) - return intermediate.getVertices() != TQualifier::layoutNotSet ? intermediate.getVertices() : 0; - else - return 0; -} - -void HlslParseContext::checkIoArrayConsistency(const TSourceLoc& /*loc*/, int requiredSize, const char* /*feature*/, TType& type, const TString& /*name*/) -{ - if (type.isImplicitlySizedArray()) - type.changeOuterArraySize(requiredSize); -} - // Handle seeing a binary node with a math operation. TIntermTyped* HlslParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right) { @@ -2253,22 +2118,6 @@ TIntermTyped* HlslParseContext::handleLengthMethod(const TSourceLoc& loc, TFunct if (type.isRuntimeSizedArray()) { // Create a unary op and let the back end handle it return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt)); - } else if (type.isImplicitlySizedArray()) { - 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 - // without actually redeclaring the array. (It is an error to use a member before the - // redeclaration, but not an error to use the array name itself.) - const TString& name = intermNode->getAsSymbolNode()->getName(); - if (name == "gl_in" || name == "gl_out") - length = getIoArrayImplicitSize(); - } - if (length == 0) { - if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) - error(loc, "", function->getName().c_str(), "array must first be sized by a redeclaration or layout qualifier"); - else - error(loc, "", function->getName().c_str(), "array must be declared with a size before using this method"); - } } else length = type.getOuterArraySize(); } else if (type.isMatrix()) @@ -3294,14 +3143,6 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, symbolTable.insert(*symbol); newDeclaration = true; - if (! symbolTable.atBuiltInLevel()) { - if (isIoResizeArray(type)) { - ioArraySymbolResizeList.push_back(symbol); - checkIoArraysConsistency(loc, true); - } else - fixIoArraySize(loc, symbol->getWritableType()); - } - return; } if (symbol->getAsAnonMember()) { @@ -3326,15 +3167,10 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, if (existingType.isExplicitlySizedArray()) { // be more lenient for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size - if (! (isIoResizeArray(type) && existingType.getOuterArraySize() == type.getOuterArraySize())) - error(loc, "redeclaration of array with size", identifier.c_str(), ""); return; } existingType.updateArraySizes(type); - - if (isIoResizeArray(type)) - checkIoArraysConsistency(loc); } void HlslParseContext::updateImplicitArraySize(const TSourceLoc& loc, TIntermNode *node, int index) @@ -3519,13 +3355,6 @@ void HlslParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& n symbolTable.insert(*block); - // Tracking for implicit sizing of array - if (isIoResizeArray(block->getType())) { - ioArraySymbolResizeList.push_back(block); - checkIoArraysConsistency(loc, true); - } else if (block->getType().isArray()) - fixIoArraySize(loc, block->getWritableType()); - // Save it in the AST for linker use. intermediate.addSymbolLinkageNode(linkage, *block); } @@ -4723,12 +4552,6 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS return; } - if (isIoResizeArray(blockType)) { - ioArraySymbolResizeList.push_back(&variable); - checkIoArraysConsistency(loc, true); - } else - fixIoArraySize(loc, variable.getWritableType()); - // Save it in the AST for linker use. intermediate.addSymbolLinkageNode(linkage, variable); } @@ -4933,9 +4756,6 @@ void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { assert(language == EShLangTessControl || language == EShLangGeometry); // const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; - - if (language == EShLangTessControl) - checkIoArraysConsistency(loc); } if (publicType.shaderQualifiers.invocations != TQualifier::layoutNotSet) { if (! intermediate.setInvocations(publicType.shaderQualifiers.invocations)) @@ -4951,11 +4771,6 @@ void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: - if (intermediate.setInputPrimitive(publicType.shaderQualifiers.geometry)) { - if (language == EShLangGeometry) - checkIoArraysConsistency(loc); - } else - error(loc, "cannot change previously set input primitive", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; default: error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index c7568b2a..c8ebdbe8 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -63,15 +63,6 @@ public: TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void checkIndex(const TSourceLoc&, const TType&, int& index); - void makeEditable(TSymbol*&); - TVariable* getEditableVariable(const char* name); - bool isIoResizeArray(const TType&) const; - void fixIoArraySize(const TSourceLoc&, TType&); - void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base); - void checkIoArraysConsistency(const TSourceLoc&, bool tailOnly = false); - int getIoArrayImplicitSize() const; - void checkIoArrayConsistency(const TSourceLoc&, int requiredSize, const char* feature, TType&, const TString&); - TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right); TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode); TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field); @@ -168,9 +159,6 @@ protected: TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); - void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, TPrefixType prefix, - va_list args); // Array and struct flattening bool shouldFlatten(const TType& type) const { return shouldFlattenIO(type) || shouldFlattenUniform(type); } From 8ffc36aecc3e8eb5d97bdef904c7f1d2644d0096 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 21 Sep 2016 14:19:40 -0600 Subject: [PATCH 031/130] add reflection queries to return a TType. Fix minor issue with interface names. - Add new queries: TProgram::getUniformTType and getUniformBlockTType, which return a const TType*, or nullptr on a bad index. These are valid for any source language. - Interface name for HLSL cbuffers is taken from the (only) available declaration name, whereas before it was always an empty string, which caused some troubles with reflection mapping them all to the same index slot. This also makes it appear in the SPIR-V binary instead of an empty string. - Print the binding as part of the reflection textual dump. - TType::clone becomes const. Needed to call it from a const method, and anyway it doesn't change the object it's called on. - Because the TObjectReflection constructor is called with a TType *reference* (not pointer) so that it's guaranteed to pass in a type, and the "badReflection" value should use a nullptr there, that now has a dedicated static method to obtain the bad value. It uses a private constructor, so external users can't create one with a nullptr type. --- .gitignore | 2 + Test/baseResults/hlsl.buffer.frag.out | 88 ++++----- Test/baseResults/hlsl.layout.frag.out | 36 ++-- .../hlsl.reflection.binding.frag.out | 23 +++ .../hlsl.reflection.binding.vert.out | 15 ++ Test/baseResults/hlsl.reflection.vert.out | 147 +++++++------- Test/baseResults/reflection.vert.out | 182 +++++++++--------- .../spv.buffer.autoassign.frag.out | 40 ++-- Test/hlsl.reflection.binding.frag | 34 ++++ Test/runtests | 3 + glslang/Include/Types.h | 2 +- glslang/MachineIndependent/ShaderLang.cpp | 28 +-- glslang/MachineIndependent/reflection.cpp | 19 +- glslang/MachineIndependent/reflection.h | 32 ++- glslang/Public/ShaderLang.h | 33 ++-- hlsl/hlslParseHelper.cpp | 6 +- 16 files changed, 407 insertions(+), 283 deletions(-) create mode 100644 Test/baseResults/hlsl.reflection.binding.frag.out create mode 100644 Test/baseResults/hlsl.reflection.binding.vert.out create mode 100644 Test/hlsl.reflection.binding.frag diff --git a/.gitignore b/.gitignore index 0faf59c0..30889ac7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,6 @@ build/ Test/localResults/ Test/multiThread.out Test/singleThread.out +Test/vert.spv +Test/frag.spv External/googletest diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 97ea9a5b..2eb1f9ce 100755 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -101,23 +101,23 @@ gl_FragCoord origin is upper left Name 22 "" MemberName 22 0 "v2" Name 24 "" - Name 28 "" - MemberName 28 0 "v3" - MemberName 28 1 "i3" + Name 28 "cbufName" + MemberName 28(cbufName) 0 "v3" + MemberName 28(cbufName) 1 "i3" Name 30 "" - Name 35 "" - MemberName 35 0 "v4" - MemberName 35 1 "i4" - MemberName 35 2 "f1" - MemberName 35 3 "f3" - MemberName 35 4 "f4" - MemberName 35 5 "f5" - MemberName 35 6 "f6" - MemberName 35 7 "f7" - MemberName 35 8 "m1" - MemberName 35 9 "m2" - MemberName 35 10 "m3" - MemberName 35 11 "m4" + Name 35 "tbufName" + MemberName 35(tbufName) 0 "v4" + MemberName 35(tbufName) 1 "i4" + MemberName 35(tbufName) 2 "f1" + MemberName 35(tbufName) 3 "f3" + MemberName 35(tbufName) 4 "f4" + MemberName 35(tbufName) 5 "f5" + MemberName 35(tbufName) 6 "f6" + MemberName 35(tbufName) 7 "f7" + MemberName 35(tbufName) 8 "m1" + MemberName 35(tbufName) 9 "m2" + MemberName 35(tbufName) 10 "m3" + MemberName 35(tbufName) 11 "m4" Name 37 "" Decorate 9(@entryPointOutput) Location 0 Decorate 11(input) Location 0 @@ -127,32 +127,32 @@ gl_FragCoord origin is upper left MemberDecorate 22 0 Offset 0 Decorate 22 BufferBlock Decorate 24 DescriptorSet 0 - MemberDecorate 28 0 Offset 0 - MemberDecorate 28 1 Offset 20 - Decorate 28 Block + MemberDecorate 28(cbufName) 0 Offset 0 + MemberDecorate 28(cbufName) 1 Offset 20 + Decorate 28(cbufName) Block Decorate 30 DescriptorSet 10 Decorate 30 Binding 2 - MemberDecorate 35 0 Offset 16 - MemberDecorate 35 1 Offset 48 - MemberDecorate 35 2 Offset 60 - MemberDecorate 35 3 Offset 64 - MemberDecorate 35 4 Offset 68 - MemberDecorate 35 5 Offset 72 - MemberDecorate 35 6 Offset 76 - MemberDecorate 35 7 Offset 80 - MemberDecorate 35 8 RowMajor - MemberDecorate 35 8 Offset 96 - MemberDecorate 35 8 MatrixStride 16 - MemberDecorate 35 9 ColMajor - MemberDecorate 35 9 Offset 160 - MemberDecorate 35 9 MatrixStride 16 - MemberDecorate 35 10 RowMajor - MemberDecorate 35 10 Offset 208 - MemberDecorate 35 10 MatrixStride 16 - MemberDecorate 35 11 RowMajor - MemberDecorate 35 11 Offset 272 - MemberDecorate 35 11 MatrixStride 16 - Decorate 35 BufferBlock + MemberDecorate 35(tbufName) 0 Offset 16 + MemberDecorate 35(tbufName) 1 Offset 48 + MemberDecorate 35(tbufName) 2 Offset 60 + MemberDecorate 35(tbufName) 3 Offset 64 + MemberDecorate 35(tbufName) 4 Offset 68 + MemberDecorate 35(tbufName) 5 Offset 72 + MemberDecorate 35(tbufName) 6 Offset 76 + MemberDecorate 35(tbufName) 7 Offset 80 + MemberDecorate 35(tbufName) 8 RowMajor + MemberDecorate 35(tbufName) 8 Offset 96 + MemberDecorate 35(tbufName) 8 MatrixStride 16 + MemberDecorate 35(tbufName) 9 ColMajor + MemberDecorate 35(tbufName) 9 Offset 160 + MemberDecorate 35(tbufName) 9 MatrixStride 16 + MemberDecorate 35(tbufName) 10 RowMajor + MemberDecorate 35(tbufName) 10 Offset 208 + MemberDecorate 35(tbufName) 10 MatrixStride 16 + MemberDecorate 35(tbufName) 11 RowMajor + MemberDecorate 35(tbufName) 11 Offset 272 + MemberDecorate 35(tbufName) 11 MatrixStride 16 + Decorate 35(tbufName) BufferBlock Decorate 37 DescriptorSet 0 Decorate 37 Binding 8 2: TypeVoid @@ -172,12 +172,12 @@ gl_FragCoord origin is upper left 22: TypeStruct 7(fvec4) 23: TypePointer Uniform 22(struct) 24: 23(ptr) Variable Uniform - 28: TypeStruct 7(fvec4) 16(int) - 29: TypePointer Uniform 28(struct) + 28(cbufName): TypeStruct 7(fvec4) 16(int) + 29: TypePointer Uniform 28(cbufName) 30: 29(ptr) Variable Uniform 34: TypeMatrix 7(fvec4) 3 - 35: TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 34 34 34 34 - 36: TypePointer Uniform 35(struct) + 35(tbufName): TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 34 34 34 34 + 36: TypePointer Uniform 35(tbufName) 37: 36(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index ef096f35..e8fab995 100755 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -77,23 +77,23 @@ gl_FragCoord origin is upper left Name 4 "main" Name 11 "PixelShaderFunction(vf4;" Name 10 "input" - Name 14 "" - MemberName 14 0 "v1" + Name 14 "tbufName" + MemberName 14(tbufName) 0 "v1" Name 16 "" - Name 23 "" - MemberName 23 0 "v5" + Name 23 "tbufName2" + MemberName 23(tbufName2) 0 "v5" Name 25 "" - Name 30 "" - MemberName 30 0 "v1PostLayout" + Name 30 "tbufName2" + MemberName 30(tbufName2) 0 "v1PostLayout" Name 32 "" - MemberDecorate 14 0 Offset 16 - Decorate 14 BufferBlock + MemberDecorate 14(tbufName) 0 Offset 16 + Decorate 14(tbufName) BufferBlock Decorate 16 DescriptorSet 3 Decorate 16 Binding 5 - MemberDecorate 23 0 Offset 0 - Decorate 23 BufferBlock - MemberDecorate 30 0 Offset 16 - Decorate 30 BufferBlock + MemberDecorate 23(tbufName2) 0 Offset 0 + Decorate 23(tbufName2) BufferBlock + MemberDecorate 30(tbufName2) 0 Offset 16 + Decorate 30(tbufName2) BufferBlock Decorate 32 DescriptorSet 4 Decorate 32 Binding 7 Decorate 38 SpecId 17 @@ -103,18 +103,18 @@ gl_FragCoord origin is upper left 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) - 14: TypeStruct 7(fvec4) - 15: TypePointer Uniform 14(struct) + 14(tbufName): TypeStruct 7(fvec4) + 15: TypePointer Uniform 14(tbufName) 16: 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypePointer Uniform 7(fvec4) - 23: TypeStruct 7(fvec4) - 24: TypePointer PushConstant 23(struct) + 23(tbufName2): TypeStruct 7(fvec4) + 24: TypePointer PushConstant 23(tbufName2) 25: 24(ptr) Variable PushConstant 26: TypePointer PushConstant 7(fvec4) - 30: TypeStruct 7(fvec4) - 31: TypePointer Uniform 30(struct) + 30(tbufName2): TypeStruct 7(fvec4) + 31: TypePointer Uniform 30(tbufName2) 32: 31(ptr) Variable Uniform 38: 17(int) SpecConstant 10 4(main): 2 Function None 3 diff --git a/Test/baseResults/hlsl.reflection.binding.frag.out b/Test/baseResults/hlsl.reflection.binding.frag.out new file mode 100644 index 00000000..e26e0f6c --- /dev/null +++ b/Test/baseResults/hlsl.reflection.binding.frag.out @@ -0,0 +1,23 @@ +hlsl.reflection.binding.frag + +Linked fragment stage: + + +Uniform reflection: +t1: offset -1, type 8b5d, size 1, index -1, binding 15 +s1: offset -1, type 0, size 1, index -1, binding 5 +t1a: offset -1, type 8b5d, size 1, index -1, binding 16 +s1a: offset -1, type 0, size 1, index -1, binding 6 +c1_a: offset 0, type 8b52, size 1, index 0, binding -1 +c1_b: offset 16, type 1404, size 1, index 0, binding -1 +c1_c: offset 20, type 1406, size 1, index 0, binding -1 +c2_a: offset 0, type 8b52, size 1, index 1, binding -1 +c2_b: offset 16, type 1404, size 1, index 1, binding -1 +c2_c: offset 20, type 1406, size 1, index 1, binding -1 + +Uniform block reflection: +cbuff1: offset -1, type ffffffff, size 24, index -1, binding 2 +cbuff2: offset -1, type ffffffff, size 24, index -1, binding 3 + +Vertex attribute reflection: + diff --git a/Test/baseResults/hlsl.reflection.binding.vert.out b/Test/baseResults/hlsl.reflection.binding.vert.out new file mode 100644 index 00000000..f1368df9 --- /dev/null +++ b/Test/baseResults/hlsl.reflection.binding.vert.out @@ -0,0 +1,15 @@ +hlsl.reflection.binding.vert + +Linked vertex stage: + + +Uniform reflection: +t1: offset -1, type 8b5d, size 1, index -1, binding 15 +s1: offset -1, type 0, size 1, index -1, binding 5 +t1a: offset -1, type 8b5d, size 1, index -1, binding 16 +s1a: offset -1, type 0, size 1, index -1, binding 6 + +Uniform block reflection: + +Vertex attribute reflection: + diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out index 4ed4ddf6..cbce25ea 100644 --- a/Test/baseResults/hlsl.reflection.vert.out +++ b/Test/baseResults/hlsl.reflection.vert.out @@ -4,78 +4,85 @@ Linked vertex stage: Uniform reflection: -anonMember3: offset 80, type 8b52, size 1, index 0 -s.a: offset 0, type 1404, size 1, index 1 -scalar: offset 12, type 1404, size 1, index 0 -m23: offset 16, type 8b67, size 1, index 0 -scalarAfterm23: offset 48, type 1404, size 1, index 0 -c_m23: offset 16, type 8b67, size 1, index 0 -c_scalarAfterm23: offset 48, type 1404, size 1, index 0 -scalarBeforeArray: offset 96, type 1404, size 1, index 0 -floatArray: offset 112, type 1406, size 5, index 0 -scalarAfterArray: offset 192, type 1404, size 1, index 0 -memfloat2: offset 48, type 8b50, size 1, index 0 -memf1: offset 56, type 1406, size 1, index 0 -memf2: offset 60, type 8b56, size 1, index 0 -memf3: offset 64, type 1404, size 1, index 0 -memfloat2a: offset 72, type 8b50, size 1, index 0 -m22: offset 80, type 8b5a, size 7, index 0 -dm22: offset 32, type 8b5a, size 4, index 1 -foo.n1.a: offset 0, type 1406, size 1, index 0 -foo.n2.b: offset 16, type 1406, size 1, index 0 -foo.n2.c: offset 20, type 1406, size 1, index 0 -foo.n2.d: offset 24, type 1406, size 1, index 0 -deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1 -deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1 -deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1 -deepB.d2.d1[1].va: offset 984, type 8b50, size 2, index 1 -deepB.d2.d1[2].va: offset 984, type 8b50, size 2, index 1 -deepB.d2.d1[3].va: offset 984, type 8b50, size 2, index 1 -deepC.iv4: offset 1568, type 8b52, size 1, index 1 -deepC.d2.i: offset 1568, type 1404, size 1, index 1 -deepC.d2.d1[0].va: offset 1568, type 8b50, size 3, index 1 -deepC.d2.d1[0].b: offset 1568, type 8b56, size 1, index 1 -deepC.d2.d1[1].va: offset 1568, type 8b50, size 3, index 1 -deepC.d2.d1[1].b: offset 1568, type 8b56, size 1, index 1 -deepC.d2.d1[2].va: offset 1568, type 8b50, size 3, index 1 -deepC.d2.d1[2].b: offset 1568, type 8b56, size 1, index 1 -deepC.d2.d1[3].va: offset 1568, type 8b50, size 3, index 1 -deepC.d2.d1[3].b: offset 1568, type 8b56, size 1, index 1 -deepC.v3: offset 1568, type 8b54, size 1, index 1 -deepD[0].iv4: offset 2480, type 8b52, size 1, index 1 -deepD[0].d2.i: offset 2480, type 1404, size 1, index 1 -deepD[0].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1 -deepD[0].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1 -deepD[0].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1 -deepD[0].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1 -deepD[0].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1 -deepD[0].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1 -deepD[0].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1 -deepD[0].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1 -deepD[0].v3: offset 2480, type 8b54, size 1, index 1 -deepD[1].iv4: offset 2480, type 8b52, size 1, index 1 -deepD[1].d2.i: offset 2480, type 1404, size 1, index 1 -deepD[1].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1 -deepD[1].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1 -deepD[1].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1 -deepD[1].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1 -deepD[1].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1 -deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1 -deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1 -deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1 -deepD[1].v3: offset 2480, type 8b54, size 1, index 1 -foo: offset 0, type 1406, size 1, index 0 -anonMember1: offset 0, type 8b51, size 1, index 0 -uf1: offset 16, type 1406, size 1, index 1 +anonMember3: offset 80, type 8b52, size 1, index 0, binding -1 +s.a: offset 0, type 1404, size 1, index 1, binding -1 +ablock.scalar: offset 12, type 1404, size 1, index 2, binding -1 +m23: offset 16, type 8b67, size 1, index 0, binding -1 +scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1 +c_m23: offset 16, type 8b67, size 1, index 3, binding -1 +c_scalarAfterm23: offset 48, type 1404, size 1, index 3, binding -1 +scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1 +floatArray: offset 112, type 1406, size 5, index 0, binding -1 +scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1 +ablock.memfloat2: offset 48, type 8b50, size 1, index 2, binding -1 +ablock.memf1: offset 56, type 1406, size 1, index 2, binding -1 +ablock.memf2: offset 60, type 8b56, size 1, index 2, binding -1 +ablock.memf3: offset 64, type 1404, size 1, index 2, binding -1 +ablock.memfloat2a: offset 72, type 8b50, size 1, index 2, binding -1 +ablock.m22: offset 80, type 8b5a, size 7, index 2, binding -1 +dm22: offset 32, type 8b5a, size 4, index 1, binding -1 +m22: offset 208, type 8b5a, size 3, index 0, binding -1 +nest.foo.n1.a: offset 0, type 1406, size 1, index 4, binding -1 +nest.foo.n2.b: offset 16, type 1406, size 1, index 4, binding -1 +nest.foo.n2.c: offset 20, type 1406, size 1, index 4, binding -1 +nest.foo.n2.d: offset 24, type 1406, size 1, index 4, binding -1 +deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[1].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[2].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[3].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepC.iv4: offset 1568, type 8b52, size 1, index 1, binding -1 +deepC.d2.i: offset 1568, type 1404, size 1, index 1, binding -1 +deepC.d2.d1[0].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[0].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.d2.d1[1].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[1].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.d2.d1[2].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[2].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.d2.d1[3].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[3].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.v3: offset 1568, type 8b54, size 1, index 1, binding -1 +deepD[0].iv4: offset 2480, type 8b52, size 1, index 1, binding -1 +deepD[0].d2.i: offset 2480, type 1404, size 1, index 1, binding -1 +deepD[0].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].v3: offset 2480, type 8b54, size 1, index 1, binding -1 +deepD[1].iv4: offset 2480, type 8b52, size 1, index 1, binding -1 +deepD[1].d2.i: offset 2480, type 1404, size 1, index 1, binding -1 +deepD[1].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].v3: offset 2480, type 8b54, size 1, index 1, binding -1 +arrBl.foo: offset 0, type 1406, size 1, index 5, binding -1 +arrBl2.foo: offset 0, type 1406, size 1, index 6, binding -1 +anonMember1: offset 0, type 8b51, size 1, index 0, binding -1 +uf1: offset 16, type 1406, size 1, index 1, binding -1 Uniform block reflection: -: offset -1, type ffffffff, size 496, index -1 -$Global: offset -1, type ffffffff, size 3088, index -1 +nameless: offset -1, type ffffffff, size 496, index -1, binding -1 +$Global: offset -1, type ffffffff, size 3088, index -1, binding -1 +ablock: offset -1, type ffffffff, size 304, index -1, binding -1 +c_nameless: offset -1, type ffffffff, size 96, index -1, binding -1 +nest: offset -1, type ffffffff, size 32, index -1, binding -1 +arrBl: offset -1, type ffffffff, size 4, index -1, binding -1 +arrBl2: offset -1, type ffffffff, size 4, index -1, binding -1 Vertex attribute reflection: -attributeFloat: offset 0, type 1406, size 0, index 0 -attributeFloat2: offset 0, type 8b50, size 0, index 0 -attributeFloat3: offset 0, type 8b51, size 0, index 0 -attributeFloat4: offset 0, type 8b52, size 0, index 0 -attributeMat4: offset 0, type 8b5c, size 0, index 0 +attributeFloat: offset 0, type 1406, size 0, index 0, binding -1 +attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1 +attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1 +attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1 +attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1 diff --git a/Test/baseResults/reflection.vert.out b/Test/baseResults/reflection.vert.out index 24ee7809..1e4c24fa 100644 --- a/Test/baseResults/reflection.vert.out +++ b/Test/baseResults/reflection.vert.out @@ -6,99 +6,99 @@ Linked vertex stage: Uniform reflection: -image_ui2D: offset -1, type 9063, size 1, index -1 -sampler_2D: offset -1, type 8b5e, size 1, index -1 -sampler_2DMSArray: offset -1, type 910b, size 1, index -1 -anonMember3: offset 80, type 8b52, size 1, index 0 -s.a: offset -1, type 1404, size 1, index -1 -named.scalar: offset 12, type 1404, size 1, index 1 -m23: offset 16, type 8b67, size 1, index 0 -scalarAfterm23: offset 48, type 1404, size 1, index 0 -c_m23: offset 16, type 8b67, size 1, index 2 -c_scalarAfterm23: offset 64, type 1404, size 1, index 2 -scalarBeforeArray: offset 96, type 1404, size 1, index 0 -floatArray: offset 112, type 1406, size 5, index 0 -scalarAfterArray: offset 192, type 1404, size 1, index 0 -named.memvec2: offset 48, type 8b50, size 1, index 1 -named.memf1: offset 56, type 1406, size 1, index 1 -named.memf2: offset 60, type 8b56, size 1, index 1 -named.memf3: offset 64, type 1404, size 1, index 1 -named.memvec2a: offset 72, type 8b50, size 1, index 1 -named.m22: offset 80, type 8b5a, size 7, index 1 -dm22: offset -1, type 8b5a, size 4, index -1 -m22: offset 208, type 8b5a, size 3, index 0 -nested.foo.n1.a: offset 0, type 1406, size 1, index 3 -nested.foo.n2.b: offset 16, type 1406, size 1, index 3 -nested.foo.n2.c: offset 20, type 1406, size 1, index 3 -nested.foo.n2.d: offset 24, type 1406, size 1, index 3 -deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1 -deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1 -deepC[1].iv4: offset -1, type 8b52, size 1, index -1 -deepC[1].d2.i: offset -1, type 1404, size 1, index -1 -deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1 -deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1 -deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1 -deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1 -deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1 -deepC[1].v3: offset -1, type 8b54, size 1, index -1 -deepD[0].iv4: offset -1, type 8b52, size 1, index -1 -deepD[0].d2.i: offset -1, type 1404, size 1, index -1 -deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1 -deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1 -deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1 -deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1 -deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1 -deepD[0].v3: offset -1, type 8b54, size 1, index -1 -deepD[1].iv4: offset -1, type 8b52, size 1, index -1 -deepD[1].d2.i: offset -1, type 1404, size 1, index -1 -deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1 -deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1 -deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1 -deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1 -deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1 -deepD[1].v3: offset -1, type 8b54, size 1, index -1 -abl.foo: offset 0, type 1406, size 1, index 7 -abl2.foo: offset 0, type 1406, size 1, index 11 -anonMember1: offset 0, type 8b51, size 1, index 0 -uf1: offset -1, type 1406, size 1, index -1 -uf2: offset -1, type 1406, size 1, index -1 -named.member3: offset 32, type 8b52, size 1, index 1 +image_ui2D: offset -1, type 9063, size 1, index -1, binding -1 +sampler_2D: offset -1, type 8b5e, size 1, index -1, binding -1 +sampler_2DMSArray: offset -1, type 910b, size 1, index -1, binding -1 +anonMember3: offset 80, type 8b52, size 1, index 0, binding -1 +s.a: offset -1, type 1404, size 1, index -1, binding -1 +named.scalar: offset 12, type 1404, size 1, index 1, binding -1 +m23: offset 16, type 8b67, size 1, index 0, binding -1 +scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1 +c_m23: offset 16, type 8b67, size 1, index 2, binding -1 +c_scalarAfterm23: offset 64, type 1404, size 1, index 2, binding -1 +scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1 +floatArray: offset 112, type 1406, size 5, index 0, binding -1 +scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1 +named.memvec2: offset 48, type 8b50, size 1, index 1, binding -1 +named.memf1: offset 56, type 1406, size 1, index 1, binding -1 +named.memf2: offset 60, type 8b56, size 1, index 1, binding -1 +named.memf3: offset 64, type 1404, size 1, index 1, binding -1 +named.memvec2a: offset 72, type 8b50, size 1, index 1, binding -1 +named.m22: offset 80, type 8b5a, size 7, index 1, binding -1 +dm22: offset -1, type 8b5a, size 4, index -1, binding -1 +m22: offset 208, type 8b5a, size 3, index 0, binding -1 +nested.foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1 +nested.foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1 +nested.foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1 +nested.foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1 +deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepC[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1 +deepC[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1 +deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].v3: offset -1, type 8b54, size 1, index -1, binding -1 +deepD[0].iv4: offset -1, type 8b52, size 1, index -1, binding -1 +deepD[0].d2.i: offset -1, type 1404, size 1, index -1, binding -1 +deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].v3: offset -1, type 8b54, size 1, index -1, binding -1 +deepD[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1 +deepD[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1 +deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].v3: offset -1, type 8b54, size 1, index -1, binding -1 +abl.foo: offset 0, type 1406, size 1, index 7, binding -1 +abl2.foo: offset 0, type 1406, size 1, index 11, binding -1 +anonMember1: offset 0, type 8b51, size 1, index 0, binding -1 +uf1: offset -1, type 1406, size 1, index -1, binding -1 +uf2: offset -1, type 1406, size 1, index -1, binding -1 +named.member3: offset 32, type 8b52, size 1, index 1, binding -1 Uniform block reflection: -nameless: offset -1, type ffffffff, size 496, index -1 -named: offset -1, type ffffffff, size 304, index -1 -c_nameless: offset -1, type ffffffff, size 112, index -1 -nested: offset -1, type ffffffff, size 32, index -1 -abl[0]: offset -1, type ffffffff, size 4, index -1 -abl[1]: offset -1, type ffffffff, size 4, index -1 -abl[2]: offset -1, type ffffffff, size 4, index -1 -abl[3]: offset -1, type ffffffff, size 4, index -1 -abl2[0]: offset -1, type ffffffff, size 4, index -1 -abl2[1]: offset -1, type ffffffff, size 4, index -1 -abl2[2]: offset -1, type ffffffff, size 4, index -1 -abl2[3]: offset -1, type ffffffff, size 4, index -1 +nameless: offset -1, type ffffffff, size 496, index -1, binding -1 +named: offset -1, type ffffffff, size 304, index -1, binding -1 +c_nameless: offset -1, type ffffffff, size 112, index -1, binding -1 +nested: offset -1, type ffffffff, size 32, index -1, binding -1 +abl[0]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl[1]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl[2]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl[3]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[0]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[1]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[2]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[3]: offset -1, type ffffffff, size 4, index -1, binding -1 Vertex attribute reflection: -attributeFloat: offset 0, type 1406, size 0, index 0 -attributeFloat2: offset 0, type 8b50, size 0, index 0 -attributeFloat3: offset 0, type 8b51, size 0, index 0 -attributeFloat4: offset 0, type 8b52, size 0, index 0 -attributeMat4: offset 0, type 8b5c, size 0, index 0 +attributeFloat: offset 0, type 1406, size 0, index 0, binding -1 +attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1 +attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1 +attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1 +attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1 diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out index 4f5d5a60..1d94707c 100644 --- a/Test/baseResults/spv.buffer.autoassign.frag.out +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -16,28 +16,28 @@ Linked fragment stage: Name 8 "PS_OUTPUT" MemberName 8(PS_OUTPUT) 0 "Color" Name 10 "psout" - Name 13 "" - MemberName 13 0 "g_a" - MemberName 13 1 "g_b" + Name 13 "MyUB1" + MemberName 13(MyUB1) 0 "g_a" + MemberName 13(MyUB1) 1 "g_b" Name 15 "" - Name 25 "" - MemberName 25 0 "g_c" + Name 25 "MyUB2" + MemberName 25(MyUB2) 0 "g_c" Name 27 "" - Name 31 "" - MemberName 31 0 "g_d" + Name 31 "MyUB3" + MemberName 31(MyUB3) 0 "g_d" Name 33 "" Name 41 "Color" - MemberDecorate 13 0 Offset 0 - MemberDecorate 13 1 Offset 4 - Decorate 13 Block + MemberDecorate 13(MyUB1) 0 Offset 0 + MemberDecorate 13(MyUB1) 1 Offset 4 + Decorate 13(MyUB1) Block Decorate 15 DescriptorSet 0 Decorate 15 Binding 20 - MemberDecorate 25 0 Offset 0 - Decorate 25 Block + MemberDecorate 25(MyUB2) 0 Offset 0 + Decorate 25(MyUB2) Block Decorate 27 DescriptorSet 0 Decorate 27 Binding 15 - MemberDecorate 31 0 Offset 0 - Decorate 31 Block + MemberDecorate 31(MyUB3) 0 Offset 0 + Decorate 31(MyUB3) Block Decorate 33 DescriptorSet 0 Decorate 33 Binding 16 Decorate 41(Color) Location 0 @@ -49,17 +49,17 @@ Linked fragment stage: 9: TypePointer Function 8(PS_OUTPUT) 11: TypeInt 32 1 12: 11(int) Constant 0 - 13: TypeStruct 6(float) 11(int) - 14: TypePointer Uniform 13(struct) + 13(MyUB1): TypeStruct 6(float) 11(int) + 14: TypePointer Uniform 13(MyUB1) 15: 14(ptr) Variable Uniform 16: TypePointer Uniform 6(float) 19: 11(int) Constant 1 20: TypePointer Uniform 11(int) - 25: TypeStruct 6(float) - 26: TypePointer Uniform 25(struct) + 25(MyUB2): TypeStruct 6(float) + 26: TypePointer Uniform 25(MyUB2) 27: 26(ptr) Variable Uniform - 31: TypeStruct 6(float) - 32: TypePointer Uniform 31(struct) + 31(MyUB3): TypeStruct 6(float) + 32: TypePointer Uniform 31(MyUB3) 33: 32(ptr) Variable Uniform 38: TypePointer Function 7(fvec4) 40: TypePointer Output 7(fvec4) diff --git a/Test/hlsl.reflection.binding.frag b/Test/hlsl.reflection.binding.frag new file mode 100644 index 00000000..25b22c97 --- /dev/null +++ b/Test/hlsl.reflection.binding.frag @@ -0,0 +1,34 @@ + +uniform float u1 : register(b2); + +uniform SamplerState s1 : register(s5); +uniform SamplerState s1a[3] : register(s6); + +uniform Texture1D t1 : register(t15); +uniform Texture1D t1a[3] : register(t16); + +cbuffer cbuff1 : register(b2) { + float4 c1_a; + int c1_b; + float c1_c; +}; + +cbuffer cbuff2 : register(b3) { + float4 c2_a; + int c2_b; + float c2_c; +}; + +struct PS_OUTPUT +{ + float4 Color : Sv_Target0; +}; + +void main(out PS_OUTPUT psout) +{ + psout.Color = + t1.Sample(s1, 0.3) + + t1a[0].Sample(s1a[0], 0.3) + + c1_a + c1_b + c1_c + + c2_a + c2_b + c2_c; +} diff --git a/Test/runtests b/Test/runtests index 18513380..06403912 100755 --- a/Test/runtests +++ b/Test/runtests @@ -33,6 +33,9 @@ $EXE -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1 $EXE -D -e flizv -l -q -C -V hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out diff -b $BASEDIR/hlsl.reflection.vert.out $TARGETDIR/hlsl.reflection.vert.out || HASERROR=1 +$EXE -D -e main -l -q -C -V 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 + # # multi-threaded test diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 5aa59c67..85a37df2 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1202,7 +1202,7 @@ public: typeName = NewPoolTString(copyOf.typeName->c_str()); } - TType* clone() + TType* clone() const { TType *newType = new TType(); newType->deepCopy(*this); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index d6ff7825..e00638b6 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1694,19 +1694,21 @@ bool TProgram::buildReflection() return true; } -int TProgram::getNumLiveUniformVariables() { return reflection->getNumUniforms(); } -int TProgram::getNumLiveUniformBlocks() { return reflection->getNumUniformBlocks(); } -const char* TProgram::getUniformName(int index) { return reflection->getUniform(index).name.c_str(); } -const char* TProgram::getUniformBlockName(int index) { return reflection->getUniformBlock(index).name.c_str(); } -int TProgram::getUniformBlockSize(int index) { return reflection->getUniformBlock(index).size; } -int TProgram::getUniformIndex(const char* name) { return reflection->getIndex(name); } -int TProgram::getUniformBlockIndex(int index) { return reflection->getUniform(index).index; } -int TProgram::getUniformType(int index) { return reflection->getUniform(index).glDefineType; } -int TProgram::getUniformBufferOffset(int index) { return reflection->getUniform(index).offset; } -int TProgram::getUniformArraySize(int index) { return reflection->getUniform(index).size; } -int TProgram::getNumLiveAttributes() { return reflection->getNumAttributes(); } -const char* TProgram::getAttributeName(int index) { return reflection->getAttribute(index).name.c_str(); } -int TProgram::getAttributeType(int index) { return reflection->getAttribute(index).glDefineType; } +int TProgram::getNumLiveUniformVariables() const { return reflection->getNumUniforms(); } +int TProgram::getNumLiveUniformBlocks() const { return reflection->getNumUniformBlocks(); } +const char* TProgram::getUniformName(int index) const { return reflection->getUniform(index).name.c_str(); } +const char* TProgram::getUniformBlockName(int index) const { return reflection->getUniformBlock(index).name.c_str(); } +int TProgram::getUniformBlockSize(int index) const { return reflection->getUniformBlock(index).size; } +int TProgram::getUniformIndex(const char* name) const { return reflection->getIndex(name); } +int TProgram::getUniformBlockIndex(int index) const { return reflection->getUniform(index).index; } +int TProgram::getUniformType(int index) const { return reflection->getUniform(index).glDefineType; } +int TProgram::getUniformBufferOffset(int index) const { return reflection->getUniform(index).offset; } +int TProgram::getUniformArraySize(int index) const { return reflection->getUniform(index).size; } +int TProgram::getNumLiveAttributes() const { return reflection->getNumAttributes(); } +const char* TProgram::getAttributeName(int index) const { return reflection->getAttribute(index).name.c_str(); } +int TProgram::getAttributeType(int index) const { return reflection->getAttribute(index).glDefineType; } +const TType* TProgram::getUniformTType(int index) const { return reflection->getUniform(index).getType(); } +const TType* TProgram::getUniformBlockTType(int index) const { return reflection->getUniformBlock(index).getType(); } void TProgram::dumpReflection() { reflection->dump(); } diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index ca81458b..31bd1725 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -109,7 +109,7 @@ public: TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name); if (it == reflection.nameToIndex.end()) { reflection.nameToIndex[name] = (int)reflection.indexToAttribute.size(); - reflection.indexToAttribute.push_back(TObjectReflection(name, 0, mapToGlType(type), 0, 0)); + reflection.indexToAttribute.push_back(TObjectReflection(name, type, 0, mapToGlType(type), 0, 0)); } } } @@ -245,7 +245,8 @@ public: TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name); if (it == reflection.nameToIndex.end()) { reflection.nameToIndex[name] = (int)reflection.indexToUniform.size(); - reflection.indexToUniform.push_back(TObjectReflection(name, offset, mapToGlType(*terminalType), arraySize, blockIndex)); + reflection.indexToUniform.push_back(TObjectReflection(name, *terminalType, offset, mapToGlType(*terminalType), + arraySize, blockIndex)); } else if (arraySize > 1) { int& reflectedArraySize = reflection.indexToUniform[it->second].size; reflectedArraySize = std::max(arraySize, reflectedArraySize); @@ -296,12 +297,18 @@ public: if (block) { offset = 0; anonymous = IsAnonymous(base->getName()); + + const TString& blockName = base->getType().getTypeName(); + if (base->getType().isArray()) { + TType derefType(base->getType(), 0); + assert(! anonymous); for (int e = 0; e < base->getType().getCumulativeArraySize(); ++e) - blockIndex = addBlockName(base->getType().getTypeName() + "[" + String(e) + "]", getBlockSize(base->getType())); + blockIndex = addBlockName(blockName + "[" + String(e) + "]", derefType, + getBlockSize(base->getType())); } else - blockIndex = addBlockName(base->getType().getTypeName(), getBlockSize(base->getType())); + blockIndex = addBlockName(blockName, base->getType(), getBlockSize(base->getType())); } // Process the dereference chain, backward, accumulating the pieces for later forward traversal. @@ -334,14 +341,14 @@ public: blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.begin(), offset, blockIndex, arraySize); } - int addBlockName(const TString& name, int size) + int addBlockName(const TString& name, const TType& type, int size) { int blockIndex; TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name); if (reflection.nameToIndex.find(name) == reflection.nameToIndex.end()) { blockIndex = (int)reflection.indexToUniformBlock.size(); reflection.nameToIndex[name] = blockIndex; - reflection.indexToUniformBlock.push_back(TObjectReflection(name, -1, -1, size, -1)); + reflection.indexToUniformBlock.push_back(TObjectReflection(name, type, -1, -1, size, -1)); } else blockIndex = it->second; diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h index 8880602c..13f5177c 100644 --- a/glslang/MachineIndependent/reflection.h +++ b/glslang/MachineIndependent/reflection.h @@ -1,5 +1,5 @@ // -//Copyright (C) 2013 LunarG, Inc. +//Copyright (C) 2013-2016 LunarG, Inc. // //All rights reserved. // @@ -37,6 +37,7 @@ #define _REFLECTION_INCLUDED #include "../Public/ShaderLang.h" +#include "../Include/Types.h" #include #include @@ -54,20 +55,41 @@ class TReflectionTraverser; // Data needed for just a single object at the granularity exchanged by the reflection API class TObjectReflection { public: - TObjectReflection(const TString& pName, int pOffset, int pGLDefineType, int pSize, int pIndex) : - name(pName), offset(pOffset), glDefineType(pGLDefineType), size(pSize), index(pIndex) { } - void dump() const { printf("%s: offset %d, type %x, size %d, index %d\n", name.c_str(), offset, glDefineType, size, index); } + TObjectReflection(const TString& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex) : + name(pName), type(pType.clone()), + offset(pOffset), glDefineType(pGLDefineType), size(pSize), index(pIndex) { } + + void dump() const { + printf("%s: offset %d, type %x, size %d, index %d, binding %d\n", + name.c_str(), offset, glDefineType, size, index, getBinding() ); + } + + const TType* const getType() const { return type; } + TString name; int offset; int glDefineType; int size; // data size in bytes for a block, array size for a (non-block) object that's an array int index; + + static TObjectReflection badReflection() { return TObjectReflection(); } + +protected: + int getBinding() const { + if (type == nullptr || type->getQualifier().layoutBinding == TQualifier::layoutBindingEnd) + return -1; + return type->getQualifier().layoutBinding; + } + + TObjectReflection() : type(nullptr), offset(-1), glDefineType(-1), size(-1), index(-1) { } + + const TType* type; }; // The full reflection database class TReflection { public: - TReflection() : badReflection("__bad__", -1, -1, -1, -1) {} + TReflection() : badReflection(TObjectReflection::badReflection()) { } virtual ~TReflection() {} // grow the reflection stage by stage diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 496e6d4d..6b894c19 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -1,5 +1,7 @@ // //Copyright (C) 2002-2005 3Dlabs Inc. Ltd. +//Copyright (C) 2013-2016 LunarG, Inc. +// //All rights reserved. // //Redistribution and use in source and binary forms, with or without @@ -101,6 +103,8 @@ typedef enum { namespace glslang { +class TType; + typedef enum { EShSourceNone, EShSourceGlsl, @@ -461,19 +465,22 @@ public: // Reflection Interface bool buildReflection(); // call first, to do liveness analysis, index mapping, etc.; returns false on failure - int getNumLiveUniformVariables(); // can be used for glGetProgramiv(GL_ACTIVE_UNIFORMS) - int getNumLiveUniformBlocks(); // can be used for glGetProgramiv(GL_ACTIVE_UNIFORM_BLOCKS) - const char* getUniformName(int index); // can be used for "name" part of glGetActiveUniform() - const char* getUniformBlockName(int blockIndex); // can be used for glGetActiveUniformBlockName() - int getUniformBlockSize(int blockIndex); // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE) - int getUniformIndex(const char* name); // can be used for glGetUniformIndices() - int getUniformBlockIndex(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX) - int getUniformType(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE) - int getUniformBufferOffset(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_OFFSET) - int getUniformArraySize(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_SIZE) - int getNumLiveAttributes(); // can be used for glGetProgramiv(GL_ACTIVE_ATTRIBUTES) - const char *getAttributeName(int index); // can be used for glGetActiveAttrib() - int getAttributeType(int index); // can be used for glGetActiveAttrib() + int getNumLiveUniformVariables() const; // can be used for glGetProgramiv(GL_ACTIVE_UNIFORMS) + int getNumLiveUniformBlocks() const; // can be used for glGetProgramiv(GL_ACTIVE_UNIFORM_BLOCKS) + const char* getUniformName(int index) const; // can be used for "name" part of glGetActiveUniform() + const char* getUniformBlockName(int blockIndex) const; // can be used for glGetActiveUniformBlockName() + int getUniformBlockSize(int blockIndex) const; // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE) + int getUniformIndex(const char* name) const; // can be used for glGetUniformIndices() + int getUniformBlockIndex(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX) + int getUniformType(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE) + int getUniformBufferOffset(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_OFFSET) + int getUniformArraySize(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_SIZE) + int getNumLiveAttributes() const; // can be used for glGetProgramiv(GL_ACTIVE_ATTRIBUTES) + const char *getAttributeName(int index) const; // can be used for glGetActiveAttrib() + int getAttributeType(int index) const; // can be used for glGetActiveAttrib() + const TType* getUniformTType(int index) const; // returns a TType* + const TType* getUniformBlockTType(int index) const; // returns a TType* + void dumpReflection(); // I/O mapping: apply base offsets and map live unbound variables diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index b462e92f..082a4960 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4532,8 +4532,10 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS // Build and add the interface block as a new type named 'blockName' // - //?? need the block name to be a typename? - TType blockType(&typeList, "" /* *blockName */, type.getQualifier()); + // Use the instance name as the interface name if one exists, else the block name. + const TString& interfaceName = (instanceName && !instanceName->empty()) ? *instanceName : type.getTypeName(); + + TType blockType(&typeList, interfaceName, type.getQualifier()); if (arraySizes) blockType.newArraySizes(*arraySizes); From 2199c2404ba37816ad664a0b9d460602052f686a Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Sun, 2 Oct 2016 22:13:22 -0600 Subject: [PATCH 032/130] HLSL: fix for flattening assignments from non-symbol R-values. If a member-wise assignment from a non-flattened struct to a flattened struct sees a complex R-value (not a symbol), it now creates a temporary to hold that value, to avoid repeating the R-value. This avoids, e.g, duplicating a whole function call. Also, it avoids re-using the AST node, making a new one for each member inside the member loop. The latter (re-use of AST node) was also an issue in the GetDimensions intrinsic decomposition, so this PR fixes that one too. --- Test/baseResults/hlsl.flatten.return.frag.out | 187 ++++++++++++++++++ Test/hlsl.flatten.return.frag | 18 ++ glslang/MachineIndependent/Intermediate.cpp | 10 + .../MachineIndependent/localintermediate.h | 1 + gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 68 ++++++- 6 files changed, 277 insertions(+), 8 deletions(-) create mode 100644 Test/baseResults/hlsl.flatten.return.frag.out create mode 100644 Test/hlsl.flatten.return.frag diff --git a/Test/baseResults/hlsl.flatten.return.frag.out b/Test/baseResults/hlsl.flatten.return.frag.out new file mode 100644 index 00000000..39fbf0ef --- /dev/null +++ b/Test/baseResults/hlsl.flatten.return.frag.out @@ -0,0 +1,187 @@ +hlsl.flatten.return.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:11 Function Definition: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:11 Function Parameters: +0:? Sequence +0:12 Branch: Return with expression +0:? Constant: +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:16 Function Definition: main( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:16 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 Sequence +0:17 move second child to first child (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Function Call: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:17 color: direct index for structure (temp 4-component vector of float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 0 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:17 other_struct_member1: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 1 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:17 other_struct_member2: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 2 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member3' (layout(location=3 ) out float) +0:17 other_struct_member3: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 3 (const int) +0:17 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:? 'other_struct_member3' (layout(location=3 ) out float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:11 Function Definition: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:11 Function Parameters: +0:? Sequence +0:12 Branch: Return with expression +0:? Constant: +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:16 Function Definition: main( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:16 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 Sequence +0:17 move second child to first child (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Function Call: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:17 color: direct index for structure (temp 4-component vector of float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 0 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:17 other_struct_member1: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 1 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:17 other_struct_member2: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 2 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member3' (layout(location=3 ) out float) +0:17 other_struct_member3: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 3 (const int) +0:17 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:? 'other_struct_member3' (layout(location=3 ) out float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 45 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 24 31 36 40 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "color" + MemberName 8(PS_OUTPUT) 1 "other_struct_member1" + MemberName 8(PS_OUTPUT) 2 "other_struct_member2" + MemberName 8(PS_OUTPUT) 3 "other_struct_member3" + Name 10 "Func1(" + Name 21 "flattenTemp" + Name 24 "color" + Name 31 "other_struct_member1" + Name 36 "other_struct_member2" + Name 40 "other_struct_member3" + Decorate 24(color) Location 0 + Decorate 31(other_struct_member1) Location 1 + Decorate 36(other_struct_member2) Location 2 + Decorate 40(other_struct_member3) Location 3 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 6(float) 6(float) + 9: TypeFunction 8(PS_OUTPUT) + 12: 6(float) Constant 1065353216 + 13: 7(fvec4) ConstantComposite 12 12 12 12 + 14: 6(float) Constant 1073741824 + 15: 6(float) Constant 1077936128 + 16: 6(float) Constant 1082130432 + 17:8(PS_OUTPUT) ConstantComposite 13 14 15 16 + 20: TypePointer Function 8(PS_OUTPUT) + 23: TypePointer Output 7(fvec4) + 24(color): 23(ptr) Variable Output + 25: TypeInt 32 1 + 26: 25(int) Constant 0 + 27: TypePointer Function 7(fvec4) + 30: TypePointer Output 6(float) +31(other_struct_member1): 30(ptr) Variable Output + 32: 25(int) Constant 1 + 33: TypePointer Function 6(float) +36(other_struct_member2): 30(ptr) Variable Output + 37: 25(int) Constant 2 +40(other_struct_member3): 30(ptr) Variable Output + 41: 25(int) Constant 3 + 4(main): 2 Function None 3 + 5: Label + 21(flattenTemp): 20(ptr) Variable Function + 22:8(PS_OUTPUT) FunctionCall 10(Func1() + Store 21(flattenTemp) 22 + 28: 27(ptr) AccessChain 21(flattenTemp) 26 + 29: 7(fvec4) Load 28 + Store 24(color) 29 + 34: 33(ptr) AccessChain 21(flattenTemp) 32 + 35: 6(float) Load 34 + Store 31(other_struct_member1) 35 + 38: 33(ptr) AccessChain 21(flattenTemp) 37 + 39: 6(float) Load 38 + Store 36(other_struct_member2) 39 + 42: 33(ptr) AccessChain 21(flattenTemp) 41 + 43: 6(float) Load 42 + Store 40(other_struct_member3) 43 + Return + FunctionEnd + 10(Func1():8(PS_OUTPUT) Function None 9 + 11: Label + ReturnValue 17 + FunctionEnd diff --git a/Test/hlsl.flatten.return.frag b/Test/hlsl.flatten.return.frag new file mode 100644 index 00000000..c633e679 --- /dev/null +++ b/Test/hlsl.flatten.return.frag @@ -0,0 +1,18 @@ + +struct PS_OUTPUT +{ + float4 color : SV_Target0; + float other_struct_member1; + float other_struct_member2; + float other_struct_member3; +}; + +PS_OUTPUT Func1() +{ + return PS_OUTPUT(float4(1), 2, 3, 4); +} + +PS_OUTPUT main() +{ + return Func1(); +} diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index cababc35..97556202 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -73,6 +73,16 @@ TIntermSymbol* TIntermediate::addSymbol(int id, const TString& name, const TType return node; } +TIntermSymbol* TIntermediate::addSymbol(const TIntermSymbol& intermSymbol) +{ + return addSymbol(intermSymbol.getId(), + intermSymbol.getName(), + intermSymbol.getType(), + intermSymbol.getConstArray(), + intermSymbol.getConstSubtree(), + intermSymbol.getLoc()); +} + TIntermSymbol* TIntermediate::addSymbol(const TVariable& variable) { glslang::TSourceLoc loc; // just a null location diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 14b8a00a..acfafb1e 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -201,6 +201,7 @@ public: TIntermSymbol* addSymbol(const TVariable&); TIntermSymbol* addSymbol(const TVariable&, const TSourceLoc&); TIntermSymbol* addSymbol(const TType&, const TSourceLoc&); + TIntermSymbol* addSymbol(const TIntermSymbol&); TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*) const; TIntermTyped* addShapeConversion(TOperator, const TType&, TIntermTyped*); TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, TSourceLoc); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 7467eb79..51be19dd 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -99,6 +99,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.entry-out.frag", "PixelShaderFunction"}, {"hlsl.float1.frag", "PixelShaderFunction"}, {"hlsl.float4.frag", "PixelShaderFunction"}, + {"hlsl.flatten.return.frag", "main"}, {"hlsl.forLoop.frag", "PixelShaderFunction"}, {"hlsl.gather.array.dx10.frag", "main"}, {"hlsl.gather.basic.dx10.frag", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 082a4960..08ffd580 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -952,10 +952,53 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op const TVector* leftVariables = nullptr; const TVector* rightVariables = nullptr; + // A temporary to store the right node's value, so we don't keep indirecting into it + // if it's not a simple symbol. + TVariable* rhsTempVar = nullptr; + + // If the RHS is a simple symbol node, we'll copy it for each member. + TIntermSymbol* cloneSymNode = nullptr; + + // Array structs are not yet handled in flattening. (Compilation error upstream, so + // this should never fire). + assert(!(left->getType().isStruct() && left->getType().isArray())); + + int memberCount = 0; + + // Track how many items there are to copy. + if (left->getType().isStruct()) + memberCount = left->getType().getStruct()->size(); + if (left->getType().isArray()) + memberCount = left->getType().getCumulativeArraySize(); + if (flattenLeft) leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second; - if (flattenRight) + + if (flattenRight) { rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second; + } else { + // The RHS is not flattened. There are several cases: + // 1. 1 item to copy: Use the RHS directly. + // 2. >1 item, simple symbol RHS: we'll create a new TIntermSymbol node for each, but no assign to temp. + // 3. >1 item, complex RHS: assign it to a new temp variable, and create a TIntermSymbol for each member. + + if (memberCount <= 1) { + // case 1: we'll use the symbol directly below. Nothing to do. + } else { + if (right->getAsSymbolNode() != nullptr) { + // case 2: we'll copy the symbol per iteration below. + cloneSymNode = right->getAsSymbolNode(); + } else { + // case 3: assign to a temp, and indirect into that. + rhsTempVar = makeInternalVariable("flattenTemp", right->getType()); + rhsTempVar->getWritableType().getQualifier().makeTemporary(); + TIntermTyped* noFlattenRHS = intermediate.addSymbol(*rhsTempVar, loc); + + // Add this to the aggregate being built. + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, noFlattenRHS, right, loc), loc); + } + } + } const auto getMember = [&](bool flatten, TIntermTyped* node, const TVector& memberVariables, int member, @@ -971,6 +1014,14 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op return subTree; }; + // Return the proper RHS node: a new symbol from a TVariable, copy + // of an TIntermSymbol node, or sometimes the right node directly. + const auto getRHS = [&]() { + return rhsTempVar ? intermediate.addSymbol(*rhsTempVar, loc) : + cloneSymNode ? intermediate.addSymbol(*cloneSymNode) : + right; + }; + // Handle struct assignment if (left->getType().isStruct()) { // If we get here, we are assigning to or from a whole struct that must be @@ -978,7 +1029,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op const auto& members = *left->getType().getStruct(); for (int member = 0; member < (int)members.size(); ++member) { - TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member, + TIntermTyped* subRight = getMember(flattenRight, getRHS(), *rightVariables, member, EOpIndexDirectStruct, *members[member].type); TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member, EOpIndexDirectStruct, *members[member].type); @@ -992,10 +1043,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op // flattened, so have to do member-by-member assignment: const TType dereferencedType(left->getType(), 0); - const int size = left->getType().getCumulativeArraySize(); - for (int element=0; element < size; ++element) { - TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, element, + for (int element=0; element < memberCount; ++element) { + // Add a new AST symbol node if we have a temp variable holding a complex RHS. + TIntermTyped* subRight = getMember(flattenRight, getRHS(), *rightVariables, element, EOpIndexDirect, dereferencedType); TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, element, EOpIndexDirect, dereferencedType); @@ -1235,9 +1286,9 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType // Return value from size query TVariable* tempArg = makeInternalVariable("sizeQueryTemp", sizeQuery->getType()); tempArg->getWritableType().getQualifier().makeTemporary(); - TIntermSymbol* sizeQueryReturn = intermediate.addSymbol(*tempArg, loc); - - TIntermTyped* sizeQueryAssign = intermediate.addAssign(EOpAssign, sizeQueryReturn, sizeQuery, loc); + TIntermTyped* sizeQueryAssign = intermediate.addAssign(EOpAssign, + intermediate.addSymbol(*tempArg, loc), + sizeQuery, loc); // Compound statement for assigning outputs TIntermAggregate* compoundStatement = intermediate.makeAggregate(sizeQueryAssign, loc); @@ -1246,6 +1297,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType for (int compNum = 0; compNum < numDims; ++compNum) { TIntermTyped* indexedOut = nullptr; + TIntermSymbol* sizeQueryReturn = intermediate.addSymbol(*tempArg, loc); if (numDims > 1) { TIntermTyped* component = intermediate.addConstantUnion(compNum, loc, true); From 1d3a966106bf7d4077cab88b7421f902bc357c85 Mon Sep 17 00:00:00 2001 From: David Neto Date: Wed, 5 Oct 2016 10:25:09 -0400 Subject: [PATCH 033/130] Gtests can be run on another source tree The gtest executable accepts a --test-root option to specify a root directory for test files. It defaults to the Test directory in the source tree from which the executable is built. For example, this lets us run test exectuables built with MinGW on Linux on a Windows machine with its own copy of the source tree. --- gtests/AST.FromFile.cpp | 2 +- gtests/BuiltInResource.FromFile.cpp | 2 +- gtests/CMakeLists.txt | 9 +++++++-- gtests/Config.FromFile.cpp | 6 +++--- gtests/Hlsl.FromFile.cpp | 4 ++-- gtests/Link.FromFile.cpp | 4 ++-- gtests/Pp.FromFile.cpp | 2 +- gtests/Remap.FromFile.cpp | 6 +++--- gtests/Settings.cpp | 12 +++++++++++- gtests/Settings.h | 4 ++++ gtests/Spv.FromFile.cpp | 16 ++++++++-------- gtests/TestFixture.h | 8 -------- gtests/main.cpp | 15 +++++++++++++-- 13 files changed, 56 insertions(+), 34 deletions(-) diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 7c31df01..a2e961e8 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -43,7 +43,7 @@ using CompileToAstTest = GlslangTest<::testing::TestWithParam>; TEST_P(CompileToAstTest, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, Target::AST); } diff --git a/gtests/BuiltInResource.FromFile.cpp b/gtests/BuiltInResource.FromFile.cpp index 4d68d873..da81fe98 100644 --- a/gtests/BuiltInResource.FromFile.cpp +++ b/gtests/BuiltInResource.FromFile.cpp @@ -46,7 +46,7 @@ using DefaultResourceTest = GlslangTest<::testing::Test>; TEST_F(DefaultResourceTest, FromFile) { - const std::string path = GLSLANG_TEST_DIRECTORY "/baseResults/test.conf"; + const std::string path = GlobalTestSettings.testRoot + "/baseResults/test.conf"; std::string expectedConfig; tryLoadFile(path, "expected resource limit", &expectedConfig); const std::string realConfig = glslang::GetDefaultTBuiltInResourceString(); diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index a7cba22b..268caff7 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -29,8 +29,12 @@ if (TARGET gmock) install(TARGETS glslangtests RUNTIME DESTINATION bin) + set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") + # Supply a default test root directory, so that manual testing + # doesn't have to specify the --test-root option in the normal + # case that you want to use the tests from the same source tree. target_compile_definitions(glslangtests - PRIVATE GLSLANG_TEST_DIRECTORY="${CMAKE_CURRENT_SOURCE_DIR}/../Test") + PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}") target_include_directories(glslangtests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR} @@ -39,5 +43,6 @@ if (TARGET gmock) target_link_libraries(glslangtests PRIVATE SPVRemapper glslang OSDependent OGLCompiler HLSL glslang SPIRV glslang-default-resource-limits gmock) - add_test(NAME glslang-gtests COMMAND glslangtests) + add_test(NAME glslang-gtests + COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}") endif() diff --git a/gtests/Config.FromFile.cpp b/gtests/Config.FromFile.cpp index 7bc6a70e..a6e93dcf 100644 --- a/gtests/Config.FromFile.cpp +++ b/gtests/Config.FromFile.cpp @@ -54,8 +54,8 @@ TEST_P(ConfigTest, FromFile) // Get the contents for input shader and limit configurations. std::string shaderContents, configContents; - tryLoadFile(GLSLANG_TEST_DIRECTORY "/" + testCase.input, "input", &shaderContents); - tryLoadFile(GLSLANG_TEST_DIRECTORY "/" + testCase.config, "limits config", &configContents); + tryLoadFile(GlobalTestSettings.testRoot + "/" + testCase.input, "input", &shaderContents); + tryLoadFile(GlobalTestSettings.testRoot + "/" + testCase.config, "limits config", &configContents); // Decode limit configurations. TBuiltInResource resources = {}; @@ -86,7 +86,7 @@ TEST_P(ConfigTest, FromFile) // Check with expected results. const std::string expectedOutputFname = - GLSLANG_TEST_DIRECTORY "/baseResults/" + testCase.output; + GlobalTestSettings.testRoot + "/baseResults/" + testCase.output; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 51be19dd..b587b0d6 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -64,14 +64,14 @@ using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam> shaders; for (size_t i = 0; i < fileCount; ++i) { std::string contents; - tryLoadFile(GLSLANG_TEST_DIRECTORY "/" + fileNames[i], + tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], "input", &contents); shaders.emplace_back( new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); @@ -77,7 +77,7 @@ TEST_P(LinkTest, FromFile) // Check with expected results. const std::string expectedOutputFname = - GLSLANG_TEST_DIRECTORY "/baseResults/" + fileNames.front() + ".out"; + GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); diff --git a/gtests/Pp.FromFile.cpp b/gtests/Pp.FromFile.cpp index 04ac3f75..13daac0d 100644 --- a/gtests/Pp.FromFile.cpp +++ b/gtests/Pp.FromFile.cpp @@ -43,7 +43,7 @@ using PreprocessingTest = GlslangTest<::testing::TestWithParam>; TEST_P(PreprocessingTest, FromFile) { - loadFilePreprocessAndCheck(GLSLANG_TEST_DIRECTORY, GetParam()); + loadFilePreprocessAndCheck(GlobalTestSettings.testRoot, GetParam()); } // clang-format off diff --git a/gtests/Remap.FromFile.cpp b/gtests/Remap.FromFile.cpp index cd246ea2..9f25a6f2 100644 --- a/gtests/Remap.FromFile.cpp +++ b/gtests/Remap.FromFile.cpp @@ -60,17 +60,17 @@ std::string FileNameAsCustomTestSuffix( using RemapTest = GlslangTest<::testing::TestWithParam>; -// Remapping SPIR-V modules. +// Remapping SPIR-V modules. TEST_P(RemapTest, FromFile) { if (GetSuffix(GetParam().fileName) == "spv") { - loadFileRemapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, + loadFileRemapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, GetParam().sourceLanguage, Semantics::Vulkan, Target::Spv, GetParam().remapOpts); } else { - loadFileCompileRemapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, + loadFileCompileRemapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, GetParam().sourceLanguage, Semantics::Vulkan, Target::Spv, diff --git a/gtests/Settings.cpp b/gtests/Settings.cpp index 4ba7989b..0ac58449 100644 --- a/gtests/Settings.cpp +++ b/gtests/Settings.cpp @@ -36,6 +36,16 @@ namespace glslangtest { -GTestSettings GlobalTestSettings = {nullptr, false}; +// We need CMake to provide us the absolute path to the directory containing +// test files, so we are certain to find those files no matter where the test +// harness binary is generated. This provides out-of-source build capability. +// This will be used as the default test root, but can be overridden with +// the --test-root argument. +#ifndef GLSLANG_TEST_DIRECTORY +#error \ + "GLSLANG_TEST_DIRECTORY needs to be defined for gtest to locate test files." +#endif + +GTestSettings GlobalTestSettings = {nullptr, false, GLSLANG_TEST_DIRECTORY}; } // namespace glslangtest diff --git a/gtests/Settings.h b/gtests/Settings.h index 30056a7b..c38474cc 100644 --- a/gtests/Settings.h +++ b/gtests/Settings.h @@ -35,6 +35,8 @@ #ifndef GLSLANG_GTESTS_SETTINGS_H #define GLSLANG_GTESTS_SETTINGS_H +#include + namespace glslangtest { class GlslangInitializer; @@ -45,6 +47,8 @@ struct GTestSettings { // An indicator of whether GTest should write real output to the file for // the expected output. bool updateMode; + // The root directory for test files. + std::string testRoot; }; extern GTestSettings GlobalTestSettings; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ee27db2b..533733df 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -75,7 +75,7 @@ using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam +#include #include @@ -49,9 +50,19 @@ int main(int argc, char** argv) glslangtest::GlobalTestSettings.initializer = initializer.get(); for (int i = 1; i < argc; ++i) { - if (!strncmp("--update-mode", argv[i], 13)) { + if (std::string("--update-mode") == argv[i]) { glslangtest::GlobalTestSettings.updateMode = true; - break; + } + if (std::string("--test-root") == argv[i]) { + // Allow the user set the tets root directory. This is useful + // for testing with files from another source tree. + if (i + 1 < argc) { + glslangtest::GlobalTestSettings.testRoot = argv[i + 1]; + i++; + } else { + printf("error: --test-root requires an argument\n"); + return 1; + } } } From c056adcddddfea0a903a0b6f2af2d8e53d1d2186 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 5 Oct 2016 12:31:24 -0600 Subject: [PATCH 034/130] Allow for larger binding numbers. 65K instead of 255. --- glslang/Include/Types.h | 4 ++-- glslang/Include/revision.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 85a37df2..35b48312 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -621,8 +621,8 @@ public: unsigned int layoutSet : 7; static const unsigned int layoutSetEnd = 0x3F; - unsigned int layoutBinding : 8; - static const unsigned int layoutBindingEnd = 0xFF; + unsigned int layoutBinding : 16; + static const unsigned int layoutBindingEnd = 0xFFFF; unsigned int layoutIndex : 8; static const unsigned int layoutIndexEnd = 0xFF; diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 21914247..304acc34 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1548" -#define GLSLANG_DATE "01-Oct-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1553" +#define GLSLANG_DATE "05-Oct-2016" From 9ae34742cf70231241f05f1e4cec8fee9d7dfb59 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 5 Oct 2016 13:40:13 -0600 Subject: [PATCH 035/130] Check for out-of-range bindings during IO mapping. --- StandAlone/StandAlone.cpp | 10 +++-- ...spv.register.autoassign.rangetest.frag.out | 12 ++++++ Test/spv.register.autoassign.rangetest.frag | 15 ++++++++ glslang/MachineIndependent/ShaderLang.cpp | 2 +- glslang/MachineIndependent/iomapper.cpp | 38 +++++++++++++++---- glslang/MachineIndependent/iomapper.h | 4 +- gtests/Spv.FromFile.cpp | 4 ++ 7 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 Test/baseResults/spv.register.autoassign.rangetest.frag.out create mode 100644 Test/spv.register.autoassign.rangetest.frag diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 5d30ac2b..f0a4f93c 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -584,6 +584,12 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages)) LinkFailed = true; + // Map IO + if (Options & EOptionSpv) { + if (!program.mapIO()) + LinkFailed = true; + } + // Report if (! (Options & EOptionSuppressInfolog) && ! (Options & EOptionMemoryLeakMode)) { @@ -591,10 +597,6 @@ void CompileAndLinkShaderUnits(std::vector compUnits) PutsIfNonEmpty(program.getInfoDebugLog()); } - // Map IO - if (Options & EOptionSpv) - program.mapIO(); - // Reflect if (Options & EOptionDumpReflection) { program.buildReflection(); diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out new file mode 100644 index 00000000..a521a13b --- /dev/null +++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out @@ -0,0 +1,12 @@ +spv.register.autoassign.rangetest.frag + +Linked fragment stage: + +INTERNAL ERROR: mapped binding out of range: g_tScene +INTERNAL ERROR: mapped binding out of range: g_tSamp +INTERNAL ERROR: mapped binding out of range: g_tScene +INTERNAL ERROR: mapped binding out of range: g_tSamp +INTERNAL ERROR: mapped binding out of range: g_tSamp +INTERNAL ERROR: mapped binding out of range: g_tScene + +SPIR-V is not generated for failed compile or link diff --git a/Test/spv.register.autoassign.rangetest.frag b/Test/spv.register.autoassign.rangetest.frag new file mode 100644 index 00000000..c81c3959 --- /dev/null +++ b/Test/spv.register.autoassign.rangetest.frag @@ -0,0 +1,15 @@ + +SamplerState g_tSamp : register(s5); + +Texture2D g_tScene[2] : register(t5); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +void main(out PS_OUTPUT psout) +{ + psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) + + g_tScene[1].Sample(g_tSamp, 0.3); +} diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index e00638b6..5333af45 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1724,7 +1724,7 @@ bool TProgram::mapIO() for (int s = 0; s < EShLangCount; ++s) { if (intermediate[s]) { - if (! ioMapper->addStage((EShLanguage)s, *intermediate[s])) + if (! ioMapper->addStage((EShLanguage)s, *intermediate[s], *infoSink)) return false; } } diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index d69cc134..15847ddb 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -34,6 +34,7 @@ // #include "../Include/Common.h" +#include "../Include/InfoSink.h" #include "iomapper.h" #include "LiveTraverser.h" #include "localintermediate.h" @@ -150,11 +151,30 @@ protected: class TIoMappingTraverser : public TBindingTraverser { public: TIoMappingTraverser(TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings, - bool traverseDeadCode) : - TBindingTraverser(i, bindingMap, usedBindings, traverseDeadCode) + TInfoSink& infoSink, bool traverseDeadCode) : + TBindingTraverser(i, bindingMap, usedBindings, traverseDeadCode), + infoSink(infoSink), + assignError(false) { } + bool success() const { return !assignError; } + protected: + unsigned checkBindingRange(const TIntermSymbol& base, unsigned binding) + { + if (binding >= TQualifier::layoutBindingEnd) { + TString err = "mapped binding out of range: "; + err += base.getName(); + + infoSink.info.message(EPrefixInternalError, err.c_str()); + assignError = true; + + return 0; + } + + return binding; + } + void addUniform(TIntermSymbol& base) override { // Skip things we don't intend to bind. @@ -165,7 +185,7 @@ protected: // Apply existing binding, if we were given one or already made one up. if (existingBinding != -1) { - base.getWritableType().getQualifier().layoutBinding = existingBinding; + base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, existingBinding); return; } @@ -174,7 +194,7 @@ protected: const int freeBinding = getFreeBinding(base.getType(), getBindingBase(base.getType())); markBinding(base, freeBinding); - base.getWritableType().getQualifier().layoutBinding = freeBinding; + base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, freeBinding); } } @@ -195,13 +215,17 @@ protected: return nextBinding; } + +private: + bool assignError; // true if there was an error assigning the bindings + TInfoSink& infoSink; }; // Map I/O variables to provided offsets, and make bindings for // unbound but live variables. // // Returns false if the input is too malformed to do this. -bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate) +bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate, TInfoSink& infoSink) { // Trivial return if there is nothing to do. if (intermediate.getShiftSamplerBinding() == 0 && @@ -223,7 +247,7 @@ bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate) TBindingTraverser it_binding_all(intermediate, bindingMap, usedBindings, true); TBindingTraverser it_binding_live(intermediate, bindingMap, usedBindings, false); - TIoMappingTraverser it_iomap(intermediate, bindingMap, usedBindings, true); + TIoMappingTraverser it_iomap(intermediate, bindingMap, usedBindings, infoSink, true); // Traverse all (live+dead) code to find explicit bindings, so we can avoid those. root->traverse(&it_binding_all); @@ -240,7 +264,7 @@ bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate) // Bind everything that needs a binding and doesn't have one. root->traverse(&it_iomap); - return true; + return it_iomap.success(); } } // end namespace glslang diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 69ed4c5b..68dec776 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -42,6 +42,8 @@ // A reflection database and its interface, consistent with the OpenGL API reflection queries. // +class TInfoSink; + namespace glslang { class TIntermediate; @@ -53,7 +55,7 @@ public: virtual ~TIoMapper() {} // grow the reflection stage by stage - bool addStage(EShLanguage, TIntermediate&); + bool addStage(EShLanguage, TIntermediate&, TInfoSink&); }; } // end namespace glslang diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ee27db2b..d0296f85 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -285,6 +285,10 @@ INSTANTIATE_TEST_CASE_P( { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true }, { "spv.buffer.autoassign.frag", "main", 5, 10, 15, true, true }, + { "spv.register.autoassign.rangetest.frag", "main", + glslang::TQualifier::layoutBindingEnd-2, + glslang::TQualifier::layoutBindingEnd+5, + 20, true, false }, }), FileNameAsCustomTestSuffixIoMap ); From 87a83d684142b14086be25c074eaf7395645ca21 Mon Sep 17 00:00:00 2001 From: Josh Gargus Date: Wed, 5 Oct 2016 18:32:51 -0700 Subject: [PATCH 036/130] Use pthread_mutex for global lock on Linux. --- glslang/OSDependent/Unix/ossource.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index 8e583ea7..0e6d7307 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -165,11 +165,12 @@ bool OS_FreeTLSIndex(OS_TLSIndex nIndex) return false; } -// TODO: non-windows: if we need these on linux, flesh them out -void InitGlobalLock() { } -void GetGlobalLock() { } -void ReleaseGlobalLock() { } +static pthread_mutex_t gMutex; +void InitGlobalLock() { pthread_mutex_init(&gMutex, NULL); } +void GetGlobalLock() { pthread_mutex_lock(&gMutex); } +void ReleaseGlobalLock() { pthread_mutex_unlock(&gMutex); } +// TODO: non-windows: if we need these on linux, flesh them out void* OS_CreateThread(TThreadEntrypoint /*entry*/) { return 0; From bb0183f8178689876d33188428e909ee91563120 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Tue, 4 Oct 2016 16:58:14 -0600 Subject: [PATCH 037/130] HLSL: phase 1: add RWTexture and RWBuffer There's a lot to do for RWTexture and RWBuffer, so it will be broken up into several PRs. This is #1. This adds RWTexture and RWBuffer support, with the following limitations: * Only 4 component formats supported * No operator[] yet Those will be added in other PRs. This PR supports declarations and the Load & GetDimensions methods. New tests are added. --- .../hlsl.getdimensions.rw.dx10.frag.out | 1082 +++++++++++++++++ .../hlsl.load.rwbuffer.dx10.frag.out | 200 +++ .../hlsl.load.rwtexture.array.dx10.frag.out | 383 ++++++ .../hlsl.load.rwtexture.dx10.frag.out | 432 +++++++ Test/hlsl.getdimensions.rw.dx10.frag | 96 ++ Test/hlsl.load.rwbuffer.dx10.frag | 32 + Test/hlsl.load.rwtexture.array.dx10.frag | 57 + Test/hlsl.load.rwtexture.dx10.frag | 62 + gtests/Hlsl.FromFile.cpp | 4 + hlsl/hlslGrammar.cpp | 61 +- hlsl/hlslParseHelper.cpp | 23 +- hlsl/hlslParseables.cpp | 70 +- hlsl/hlslScanContext.cpp | 13 + hlsl/hlslTokens.h | 7 + 14 files changed, 2483 insertions(+), 39 deletions(-) create mode 100644 Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out create mode 100644 Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out create mode 100644 Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out create mode 100644 Test/baseResults/hlsl.load.rwtexture.dx10.frag.out create mode 100644 Test/hlsl.getdimensions.rw.dx10.frag create mode 100644 Test/hlsl.load.rwbuffer.dx10.frag create mode 100644 Test/hlsl.load.rwtexture.array.dx10.frag create mode 100644 Test/hlsl.load.rwtexture.dx10.frag diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out new file mode 100644 index 00000000..717c376a --- /dev/null +++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out @@ -0,0 +1,1082 @@ +hlsl.getdimensions.rw.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:44 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:44 Function Parameters: +0:? Sequence +0:63 Sequence +0:63 move second child to first child (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:63 imageQuerySize (temp uint) +0:63 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:63 move second child to first child (temp uint) +0:63 'WidthU' (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:64 Sequence +0:64 move second child to first child (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:64 imageQuerySize (temp uint) +0:64 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:64 move second child to first child (temp uint) +0:64 'WidthU' (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:65 Sequence +0:65 move second child to first child (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:65 imageQuerySize (temp uint) +0:65 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:65 move second child to first child (temp uint) +0:65 'WidthU' (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:68 Sequence +0:68 move second child to first child (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:68 imageQuerySize (temp uint) +0:68 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:68 move second child to first child (temp uint) +0:68 'WidthU' (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:69 Sequence +0:69 move second child to first child (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:69 imageQuerySize (temp uint) +0:69 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:69 move second child to first child (temp uint) +0:69 'WidthU' (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 imageQuerySize (temp uint) +0:70 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:70 move second child to first child (temp uint) +0:70 'WidthU' (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 imageQuerySize (temp 2-component vector of uint) +0:73 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:73 move second child to first child (temp uint) +0:73 'WidthU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 0 (const int) +0:73 move second child to first child (temp uint) +0:73 'ElementsU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 1 (const int) +0:74 Sequence +0:74 move second child to first child (temp 2-component vector of uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 imageQuerySize (temp 2-component vector of uint) +0:74 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:74 move second child to first child (temp uint) +0:74 'WidthU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 0 (const int) +0:74 move second child to first child (temp uint) +0:74 'ElementsU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 1 (const int) +0:75 Sequence +0:75 move second child to first child (temp 2-component vector of uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 imageQuerySize (temp 2-component vector of uint) +0:75 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:75 move second child to first child (temp uint) +0:75 'WidthU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 0 (const int) +0:75 move second child to first child (temp uint) +0:75 'ElementsU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 2-component vector of uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 imageQuerySize (temp 2-component vector of uint) +0:78 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:78 move second child to first child (temp uint) +0:78 'WidthU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 0 (const int) +0:78 move second child to first child (temp uint) +0:78 'HeightU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 1 (const int) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 imageQuerySize (temp 2-component vector of uint) +0:79 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:79 move second child to first child (temp uint) +0:79 'WidthU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 0 (const int) +0:79 move second child to first child (temp uint) +0:79 'HeightU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 1 (const int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 imageQuerySize (temp 2-component vector of uint) +0:80 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:80 move second child to first child (temp uint) +0:80 'WidthU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 0 (const int) +0:80 move second child to first child (temp uint) +0:80 'HeightU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 1 (const int) +0:83 Sequence +0:83 move second child to first child (temp 3-component vector of uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 imageQuerySize (temp 3-component vector of uint) +0:83 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:83 move second child to first child (temp uint) +0:83 'WidthU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 0 (const int) +0:83 move second child to first child (temp uint) +0:83 'HeightU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 1 (const int) +0:83 move second child to first child (temp uint) +0:83 'ElementsU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 2 (const int) +0:84 Sequence +0:84 move second child to first child (temp 3-component vector of uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 imageQuerySize (temp 3-component vector of uint) +0:84 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:84 move second child to first child (temp uint) +0:84 'WidthU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 0 (const int) +0:84 move second child to first child (temp uint) +0:84 'HeightU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 1 (const int) +0:84 move second child to first child (temp uint) +0:84 'ElementsU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 2 (const int) +0:85 Sequence +0:85 move second child to first child (temp 3-component vector of uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 imageQuerySize (temp 3-component vector of uint) +0:85 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:85 move second child to first child (temp uint) +0:85 'WidthU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 0 (const int) +0:85 move second child to first child (temp uint) +0:85 'HeightU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 1 (const int) +0:85 move second child to first child (temp uint) +0:85 'ElementsU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 2 (const int) +0:88 Sequence +0:88 move second child to first child (temp 3-component vector of uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 imageQuerySize (temp 3-component vector of uint) +0:88 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:88 move second child to first child (temp uint) +0:88 'WidthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 0 (const int) +0:88 move second child to first child (temp uint) +0:88 'HeightU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 1 (const int) +0:88 move second child to first child (temp uint) +0:88 'DepthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 2 (const int) +0:89 Sequence +0:89 move second child to first child (temp 3-component vector of uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 imageQuerySize (temp 3-component vector of uint) +0:89 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:89 move second child to first child (temp uint) +0:89 'WidthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 0 (const int) +0:89 move second child to first child (temp uint) +0:89 'HeightU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 1 (const int) +0:89 move second child to first child (temp uint) +0:89 'DepthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 2 (const int) +0:90 Sequence +0:90 move second child to first child (temp 3-component vector of uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 imageQuerySize (temp 3-component vector of uint) +0:90 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:90 move second child to first child (temp uint) +0:90 'WidthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 0 (const int) +0:90 move second child to first child (temp uint) +0:90 'HeightU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 1 (const int) +0:90 move second child to first child (temp uint) +0:90 'DepthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 2 (const int) +0:92 move second child to first child (temp 4-component vector of float) +0:92 Color: direct index for structure (temp 4-component vector of float) +0:92 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:92 Constant: +0:92 0 (const int) +0:92 Constant: +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:93 move second child to first child (temp float) +0:93 Depth: direct index for structure (temp float) +0:93 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:93 Constant: +0:93 1 (const int) +0:93 Constant: +0:93 1.000000 +0:95 Sequence +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:95 Color: direct index for structure (temp 4-component vector of float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 0 (const int) +0:95 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:95 Depth: direct index for structure (temp float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 1 (const int) +0:95 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:44 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:44 Function Parameters: +0:? Sequence +0:63 Sequence +0:63 move second child to first child (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:63 imageQuerySize (temp uint) +0:63 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:63 move second child to first child (temp uint) +0:63 'WidthU' (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:64 Sequence +0:64 move second child to first child (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:64 imageQuerySize (temp uint) +0:64 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:64 move second child to first child (temp uint) +0:64 'WidthU' (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:65 Sequence +0:65 move second child to first child (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:65 imageQuerySize (temp uint) +0:65 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:65 move second child to first child (temp uint) +0:65 'WidthU' (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:68 Sequence +0:68 move second child to first child (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:68 imageQuerySize (temp uint) +0:68 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:68 move second child to first child (temp uint) +0:68 'WidthU' (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:69 Sequence +0:69 move second child to first child (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:69 imageQuerySize (temp uint) +0:69 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:69 move second child to first child (temp uint) +0:69 'WidthU' (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 imageQuerySize (temp uint) +0:70 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:70 move second child to first child (temp uint) +0:70 'WidthU' (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 imageQuerySize (temp 2-component vector of uint) +0:73 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:73 move second child to first child (temp uint) +0:73 'WidthU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 0 (const int) +0:73 move second child to first child (temp uint) +0:73 'ElementsU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 1 (const int) +0:74 Sequence +0:74 move second child to first child (temp 2-component vector of uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 imageQuerySize (temp 2-component vector of uint) +0:74 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:74 move second child to first child (temp uint) +0:74 'WidthU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 0 (const int) +0:74 move second child to first child (temp uint) +0:74 'ElementsU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 1 (const int) +0:75 Sequence +0:75 move second child to first child (temp 2-component vector of uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 imageQuerySize (temp 2-component vector of uint) +0:75 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:75 move second child to first child (temp uint) +0:75 'WidthU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 0 (const int) +0:75 move second child to first child (temp uint) +0:75 'ElementsU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 2-component vector of uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 imageQuerySize (temp 2-component vector of uint) +0:78 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:78 move second child to first child (temp uint) +0:78 'WidthU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 0 (const int) +0:78 move second child to first child (temp uint) +0:78 'HeightU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 1 (const int) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 imageQuerySize (temp 2-component vector of uint) +0:79 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:79 move second child to first child (temp uint) +0:79 'WidthU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 0 (const int) +0:79 move second child to first child (temp uint) +0:79 'HeightU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 1 (const int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 imageQuerySize (temp 2-component vector of uint) +0:80 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:80 move second child to first child (temp uint) +0:80 'WidthU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 0 (const int) +0:80 move second child to first child (temp uint) +0:80 'HeightU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 1 (const int) +0:83 Sequence +0:83 move second child to first child (temp 3-component vector of uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 imageQuerySize (temp 3-component vector of uint) +0:83 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:83 move second child to first child (temp uint) +0:83 'WidthU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 0 (const int) +0:83 move second child to first child (temp uint) +0:83 'HeightU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 1 (const int) +0:83 move second child to first child (temp uint) +0:83 'ElementsU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 2 (const int) +0:84 Sequence +0:84 move second child to first child (temp 3-component vector of uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 imageQuerySize (temp 3-component vector of uint) +0:84 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:84 move second child to first child (temp uint) +0:84 'WidthU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 0 (const int) +0:84 move second child to first child (temp uint) +0:84 'HeightU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 1 (const int) +0:84 move second child to first child (temp uint) +0:84 'ElementsU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 2 (const int) +0:85 Sequence +0:85 move second child to first child (temp 3-component vector of uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 imageQuerySize (temp 3-component vector of uint) +0:85 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:85 move second child to first child (temp uint) +0:85 'WidthU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 0 (const int) +0:85 move second child to first child (temp uint) +0:85 'HeightU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 1 (const int) +0:85 move second child to first child (temp uint) +0:85 'ElementsU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 2 (const int) +0:88 Sequence +0:88 move second child to first child (temp 3-component vector of uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 imageQuerySize (temp 3-component vector of uint) +0:88 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:88 move second child to first child (temp uint) +0:88 'WidthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 0 (const int) +0:88 move second child to first child (temp uint) +0:88 'HeightU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 1 (const int) +0:88 move second child to first child (temp uint) +0:88 'DepthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 2 (const int) +0:89 Sequence +0:89 move second child to first child (temp 3-component vector of uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 imageQuerySize (temp 3-component vector of uint) +0:89 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:89 move second child to first child (temp uint) +0:89 'WidthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 0 (const int) +0:89 move second child to first child (temp uint) +0:89 'HeightU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 1 (const int) +0:89 move second child to first child (temp uint) +0:89 'DepthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 2 (const int) +0:90 Sequence +0:90 move second child to first child (temp 3-component vector of uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 imageQuerySize (temp 3-component vector of uint) +0:90 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:90 move second child to first child (temp uint) +0:90 'WidthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 0 (const int) +0:90 move second child to first child (temp uint) +0:90 'HeightU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 1 (const int) +0:90 move second child to first child (temp uint) +0:90 'DepthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 2 (const int) +0:92 move second child to first child (temp 4-component vector of float) +0:92 Color: direct index for structure (temp 4-component vector of float) +0:92 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:92 Constant: +0:92 0 (const int) +0:92 Constant: +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:93 move second child to first child (temp float) +0:93 Depth: direct index for structure (temp float) +0:93 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:93 Constant: +0:93 1 (const int) +0:93 Constant: +0:93 1.000000 +0:95 Sequence +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:95 Color: direct index for structure (temp 4-component vector of float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 0 (const int) +0:95 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:95 Depth: direct index for structure (temp float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 1 (const int) +0:95 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 225 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 210 214 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "sizeQueryTemp" + Name 12 "g_tTex1df4" + Name 16 "WidthU" + Name 18 "sizeQueryTemp" + Name 21 "g_tTex1di4" + Name 25 "sizeQueryTemp" + Name 28 "g_tTex1du4" + Name 32 "sizeQueryTemp" + Name 35 "g_tBuffF" + Name 39 "sizeQueryTemp" + Name 42 "g_tBuffI" + Name 46 "sizeQueryTemp" + Name 49 "g_tBuffU" + Name 55 "sizeQueryTemp" + Name 58 "g_tTex1df4a" + Name 65 "ElementsU" + Name 69 "sizeQueryTemp" + Name 72 "g_tTex1di4a" + Name 79 "sizeQueryTemp" + Name 82 "g_tTex1du4a" + Name 89 "sizeQueryTemp" + Name 92 "g_tTex2df4" + Name 97 "HeightU" + Name 100 "sizeQueryTemp" + Name 103 "g_tTex2di4" + Name 110 "sizeQueryTemp" + Name 113 "g_tTex2du4" + Name 122 "sizeQueryTemp" + Name 125 "g_tTex2df4a" + Name 136 "sizeQueryTemp" + Name 139 "g_tTex2di4a" + Name 148 "sizeQueryTemp" + Name 151 "g_tTex2du4a" + Name 160 "sizeQueryTemp" + Name 163 "g_tTex3df4" + Name 170 "DepthU" + Name 173 "sizeQueryTemp" + Name 176 "g_tTex3di4" + Name 185 "sizeQueryTemp" + Name 188 "g_tTex3du4" + Name 198 "PS_OUTPUT" + MemberName 198(PS_OUTPUT) 0 "Color" + MemberName 198(PS_OUTPUT) 1 "Depth" + Name 200 "psout" + Name 210 "Color" + Name 214 "Depth" + Name 220 "g_sSamp" + Name 222 "$Global" + MemberName 222($Global) 0 "c1" + MemberName 222($Global) 1 "c2" + MemberName 222($Global) 2 "c3" + MemberName 222($Global) 3 "c4" + MemberName 222($Global) 4 "o1" + MemberName 222($Global) 5 "o2" + MemberName 222($Global) 6 "o3" + MemberName 222($Global) 7 "o4" + Name 224 "" + Decorate 12(g_tTex1df4) DescriptorSet 0 + Decorate 12(g_tTex1df4) Binding 0 + Decorate 21(g_tTex1di4) DescriptorSet 0 + Decorate 28(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tBuffF) DescriptorSet 0 + Decorate 42(g_tBuffI) DescriptorSet 0 + Decorate 49(g_tBuffU) DescriptorSet 0 + Decorate 58(g_tTex1df4a) DescriptorSet 0 + Decorate 72(g_tTex1di4a) DescriptorSet 0 + Decorate 82(g_tTex1du4a) DescriptorSet 0 + Decorate 92(g_tTex2df4) DescriptorSet 0 + Decorate 103(g_tTex2di4) DescriptorSet 0 + Decorate 113(g_tTex2du4) DescriptorSet 0 + Decorate 125(g_tTex2df4a) DescriptorSet 0 + Decorate 139(g_tTex2di4a) DescriptorSet 0 + Decorate 151(g_tTex2du4a) DescriptorSet 0 + Decorate 163(g_tTex3df4) DescriptorSet 0 + Decorate 176(g_tTex3di4) DescriptorSet 0 + Decorate 188(g_tTex3du4) DescriptorSet 0 + Decorate 210(Color) Location 0 + Decorate 214(Depth) BuiltIn FragDepth + Decorate 220(g_sSamp) DescriptorSet 0 + Decorate 220(g_sSamp) Binding 0 + Decorate 222($Global) Block + Decorate 224 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeFloat 32 + 10: TypeImage 9(float) 1D nonsampled format:Rgba32f + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeInt 32 1 + 19: TypeImage 14(int) 1D nonsampled format:Rgba32i + 20: TypePointer UniformConstant 19 + 21(g_tTex1di4): 20(ptr) Variable UniformConstant + 26: TypeImage 6(int) 1D nonsampled format:Rgba32ui + 27: TypePointer UniformConstant 26 + 28(g_tTex1du4): 27(ptr) Variable UniformConstant + 33: TypeImage 9(float) Buffer nonsampled format:Rgba32f + 34: TypePointer UniformConstant 33 + 35(g_tBuffF): 34(ptr) Variable UniformConstant + 40: TypeImage 14(int) Buffer nonsampled format:Rgba32i + 41: TypePointer UniformConstant 40 + 42(g_tBuffI): 41(ptr) Variable UniformConstant + 47: TypeImage 6(int) Buffer nonsampled format:Rgba32ui + 48: TypePointer UniformConstant 47 + 49(g_tBuffU): 48(ptr) Variable UniformConstant + 53: TypeVector 6(int) 2 + 54: TypePointer Function 53(ivec2) + 56: TypeImage 9(float) 1D array nonsampled format:Rgba32f + 57: TypePointer UniformConstant 56 + 58(g_tTex1df4a): 57(ptr) Variable UniformConstant + 60: TypeVector 14(int) 2 + 62: 6(int) Constant 0 + 66: 6(int) Constant 1 + 70: TypeImage 14(int) 1D array nonsampled format:Rgba32i + 71: TypePointer UniformConstant 70 + 72(g_tTex1di4a): 71(ptr) Variable UniformConstant + 80: TypeImage 6(int) 1D array nonsampled format:Rgba32ui + 81: TypePointer UniformConstant 80 + 82(g_tTex1du4a): 81(ptr) Variable UniformConstant + 90: TypeImage 9(float) 2D nonsampled format:Rgba32f + 91: TypePointer UniformConstant 90 + 92(g_tTex2df4): 91(ptr) Variable UniformConstant + 101: TypeImage 14(int) 2D nonsampled format:Rgba32i + 102: TypePointer UniformConstant 101 + 103(g_tTex2di4): 102(ptr) Variable UniformConstant + 111: TypeImage 6(int) 2D nonsampled format:Rgba32ui + 112: TypePointer UniformConstant 111 + 113(g_tTex2du4): 112(ptr) Variable UniformConstant + 120: TypeVector 6(int) 3 + 121: TypePointer Function 120(ivec3) + 123: TypeImage 9(float) 2D array nonsampled format:Rgba32f + 124: TypePointer UniformConstant 123 +125(g_tTex2df4a): 124(ptr) Variable UniformConstant + 127: TypeVector 14(int) 3 + 133: 6(int) Constant 2 + 137: TypeImage 14(int) 2D array nonsampled format:Rgba32i + 138: TypePointer UniformConstant 137 +139(g_tTex2di4a): 138(ptr) Variable UniformConstant + 149: TypeImage 6(int) 2D array nonsampled format:Rgba32ui + 150: TypePointer UniformConstant 149 +151(g_tTex2du4a): 150(ptr) Variable UniformConstant + 161: TypeImage 9(float) 3D nonsampled format:Rgba32f + 162: TypePointer UniformConstant 161 + 163(g_tTex3df4): 162(ptr) Variable UniformConstant + 174: TypeImage 14(int) 3D nonsampled format:Rgba32i + 175: TypePointer UniformConstant 174 + 176(g_tTex3di4): 175(ptr) Variable UniformConstant + 186: TypeImage 6(int) 3D nonsampled format:Rgba32ui + 187: TypePointer UniformConstant 186 + 188(g_tTex3du4): 187(ptr) Variable UniformConstant + 197: TypeVector 9(float) 4 + 198(PS_OUTPUT): TypeStruct 197(fvec4) 9(float) + 199: TypePointer Function 198(PS_OUTPUT) + 201: 14(int) Constant 0 + 202: 9(float) Constant 1065353216 + 203: 197(fvec4) ConstantComposite 202 202 202 202 + 204: TypePointer Function 197(fvec4) + 206: 14(int) Constant 1 + 207: TypePointer Function 9(float) + 209: TypePointer Output 197(fvec4) + 210(Color): 209(ptr) Variable Output + 213: TypePointer Output 9(float) + 214(Depth): 213(ptr) Variable Output + 218: TypeSampler + 219: TypePointer UniformConstant 218 + 220(g_sSamp): 219(ptr) Variable UniformConstant + 221: TypeVector 14(int) 4 + 222($Global): TypeStruct 14(int) 60(ivec2) 127(ivec3) 221(ivec4) 14(int) 60(ivec2) 127(ivec3) 221(ivec4) + 223: TypePointer Uniform 222($Global) + 224: 223(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label +8(sizeQueryTemp): 7(ptr) Variable Function + 16(WidthU): 7(ptr) Variable Function +18(sizeQueryTemp): 7(ptr) Variable Function +25(sizeQueryTemp): 7(ptr) Variable Function +32(sizeQueryTemp): 7(ptr) Variable Function +39(sizeQueryTemp): 7(ptr) Variable Function +46(sizeQueryTemp): 7(ptr) Variable Function +55(sizeQueryTemp): 54(ptr) Variable Function + 65(ElementsU): 7(ptr) Variable Function +69(sizeQueryTemp): 54(ptr) Variable Function +79(sizeQueryTemp): 54(ptr) Variable Function +89(sizeQueryTemp): 54(ptr) Variable Function + 97(HeightU): 7(ptr) Variable Function +100(sizeQueryTemp): 54(ptr) Variable Function +110(sizeQueryTemp): 54(ptr) Variable Function +122(sizeQueryTemp): 121(ptr) Variable Function +136(sizeQueryTemp): 121(ptr) Variable Function +148(sizeQueryTemp): 121(ptr) Variable Function +160(sizeQueryTemp): 121(ptr) Variable Function + 170(DepthU): 7(ptr) Variable Function +173(sizeQueryTemp): 121(ptr) Variable Function +185(sizeQueryTemp): 121(ptr) Variable Function + 200(psout): 199(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 15: 14(int) ImageQuerySize 13 + Store 8(sizeQueryTemp) 15 + 17: 6(int) Load 8(sizeQueryTemp) + Store 16(WidthU) 17 + 22: 19 Load 21(g_tTex1di4) + 23: 14(int) ImageQuerySize 22 + Store 18(sizeQueryTemp) 23 + 24: 6(int) Load 18(sizeQueryTemp) + Store 16(WidthU) 24 + 29: 26 Load 28(g_tTex1du4) + 30: 14(int) ImageQuerySize 29 + Store 25(sizeQueryTemp) 30 + 31: 6(int) Load 25(sizeQueryTemp) + Store 16(WidthU) 31 + 36: 33 Load 35(g_tBuffF) + 37: 14(int) ImageQuerySize 36 + Store 32(sizeQueryTemp) 37 + 38: 6(int) Load 32(sizeQueryTemp) + Store 16(WidthU) 38 + 43: 40 Load 42(g_tBuffI) + 44: 14(int) ImageQuerySize 43 + Store 39(sizeQueryTemp) 44 + 45: 6(int) Load 39(sizeQueryTemp) + Store 16(WidthU) 45 + 50: 47 Load 49(g_tBuffU) + 51: 14(int) ImageQuerySize 50 + Store 46(sizeQueryTemp) 51 + 52: 6(int) Load 46(sizeQueryTemp) + Store 16(WidthU) 52 + 59: 56 Load 58(g_tTex1df4a) + 61: 60(ivec2) ImageQuerySize 59 + Store 55(sizeQueryTemp) 61 + 63: 7(ptr) AccessChain 55(sizeQueryTemp) 62 + 64: 6(int) Load 63 + Store 16(WidthU) 64 + 67: 7(ptr) AccessChain 55(sizeQueryTemp) 66 + 68: 6(int) Load 67 + Store 65(ElementsU) 68 + 73: 70 Load 72(g_tTex1di4a) + 74: 60(ivec2) ImageQuerySize 73 + Store 69(sizeQueryTemp) 74 + 75: 7(ptr) AccessChain 69(sizeQueryTemp) 62 + 76: 6(int) Load 75 + Store 16(WidthU) 76 + 77: 7(ptr) AccessChain 69(sizeQueryTemp) 66 + 78: 6(int) Load 77 + Store 65(ElementsU) 78 + 83: 80 Load 82(g_tTex1du4a) + 84: 60(ivec2) ImageQuerySize 83 + Store 79(sizeQueryTemp) 84 + 85: 7(ptr) AccessChain 79(sizeQueryTemp) 62 + 86: 6(int) Load 85 + Store 16(WidthU) 86 + 87: 7(ptr) AccessChain 79(sizeQueryTemp) 66 + 88: 6(int) Load 87 + Store 65(ElementsU) 88 + 93: 90 Load 92(g_tTex2df4) + 94: 60(ivec2) ImageQuerySize 93 + Store 89(sizeQueryTemp) 94 + 95: 7(ptr) AccessChain 89(sizeQueryTemp) 62 + 96: 6(int) Load 95 + Store 16(WidthU) 96 + 98: 7(ptr) AccessChain 89(sizeQueryTemp) 66 + 99: 6(int) Load 98 + Store 97(HeightU) 99 + 104: 101 Load 103(g_tTex2di4) + 105: 60(ivec2) ImageQuerySize 104 + Store 100(sizeQueryTemp) 105 + 106: 7(ptr) AccessChain 100(sizeQueryTemp) 62 + 107: 6(int) Load 106 + Store 16(WidthU) 107 + 108: 7(ptr) AccessChain 100(sizeQueryTemp) 66 + 109: 6(int) Load 108 + Store 97(HeightU) 109 + 114: 111 Load 113(g_tTex2du4) + 115: 60(ivec2) ImageQuerySize 114 + Store 110(sizeQueryTemp) 115 + 116: 7(ptr) AccessChain 110(sizeQueryTemp) 62 + 117: 6(int) Load 116 + Store 16(WidthU) 117 + 118: 7(ptr) AccessChain 110(sizeQueryTemp) 66 + 119: 6(int) Load 118 + Store 97(HeightU) 119 + 126: 123 Load 125(g_tTex2df4a) + 128: 127(ivec3) ImageQuerySize 126 + Store 122(sizeQueryTemp) 128 + 129: 7(ptr) AccessChain 122(sizeQueryTemp) 62 + 130: 6(int) Load 129 + Store 16(WidthU) 130 + 131: 7(ptr) AccessChain 122(sizeQueryTemp) 66 + 132: 6(int) Load 131 + Store 97(HeightU) 132 + 134: 7(ptr) AccessChain 122(sizeQueryTemp) 133 + 135: 6(int) Load 134 + Store 65(ElementsU) 135 + 140: 137 Load 139(g_tTex2di4a) + 141: 127(ivec3) ImageQuerySize 140 + Store 136(sizeQueryTemp) 141 + 142: 7(ptr) AccessChain 136(sizeQueryTemp) 62 + 143: 6(int) Load 142 + Store 16(WidthU) 143 + 144: 7(ptr) AccessChain 136(sizeQueryTemp) 66 + 145: 6(int) Load 144 + Store 97(HeightU) 145 + 146: 7(ptr) AccessChain 136(sizeQueryTemp) 133 + 147: 6(int) Load 146 + Store 65(ElementsU) 147 + 152: 149 Load 151(g_tTex2du4a) + 153: 127(ivec3) ImageQuerySize 152 + Store 148(sizeQueryTemp) 153 + 154: 7(ptr) AccessChain 148(sizeQueryTemp) 62 + 155: 6(int) Load 154 + Store 16(WidthU) 155 + 156: 7(ptr) AccessChain 148(sizeQueryTemp) 66 + 157: 6(int) Load 156 + Store 97(HeightU) 157 + 158: 7(ptr) AccessChain 148(sizeQueryTemp) 133 + 159: 6(int) Load 158 + Store 65(ElementsU) 159 + 164: 161 Load 163(g_tTex3df4) + 165: 127(ivec3) ImageQuerySize 164 + Store 160(sizeQueryTemp) 165 + 166: 7(ptr) AccessChain 160(sizeQueryTemp) 62 + 167: 6(int) Load 166 + Store 16(WidthU) 167 + 168: 7(ptr) AccessChain 160(sizeQueryTemp) 66 + 169: 6(int) Load 168 + Store 97(HeightU) 169 + 171: 7(ptr) AccessChain 160(sizeQueryTemp) 133 + 172: 6(int) Load 171 + Store 170(DepthU) 172 + 177: 174 Load 176(g_tTex3di4) + 178: 127(ivec3) ImageQuerySize 177 + Store 173(sizeQueryTemp) 178 + 179: 7(ptr) AccessChain 173(sizeQueryTemp) 62 + 180: 6(int) Load 179 + Store 16(WidthU) 180 + 181: 7(ptr) AccessChain 173(sizeQueryTemp) 66 + 182: 6(int) Load 181 + Store 97(HeightU) 182 + 183: 7(ptr) AccessChain 173(sizeQueryTemp) 133 + 184: 6(int) Load 183 + Store 170(DepthU) 184 + 189: 186 Load 188(g_tTex3du4) + 190: 127(ivec3) ImageQuerySize 189 + Store 185(sizeQueryTemp) 190 + 191: 7(ptr) AccessChain 185(sizeQueryTemp) 62 + 192: 6(int) Load 191 + Store 16(WidthU) 192 + 193: 7(ptr) AccessChain 185(sizeQueryTemp) 66 + 194: 6(int) Load 193 + Store 97(HeightU) 194 + 195: 7(ptr) AccessChain 185(sizeQueryTemp) 133 + 196: 6(int) Load 195 + Store 170(DepthU) 196 + 205: 204(ptr) AccessChain 200(psout) 201 + Store 205 203 + 208: 207(ptr) AccessChain 200(psout) 206 + Store 208 202 + 211: 204(ptr) AccessChain 200(psout) 201 + 212: 197(fvec4) Load 211 + Store 210(Color) 212 + 215: 207(ptr) AccessChain 200(psout) 206 + 216: 9(float) Load 215 + Store 214(Depth) 216 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out new file mode 100644 index 00000000..78b48040 --- /dev/null +++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out @@ -0,0 +1,200 @@ +hlsl.load.rwbuffer.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:22 Function Parameters: +0:? Sequence +0:25 imageLoad (global 4-component vector of float) +0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:25 c1: direct index for structure (layout(offset=0 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:25 Constant: +0:25 0 (const uint) +0:26 imageLoad (global 4-component vector of uint) +0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:26 c1: direct index for structure (layout(offset=0 ) uniform int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:26 Constant: +0:26 0 (const uint) +0:27 imageLoad (global 4-component vector of int) +0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:27 c1: direct index for structure (layout(offset=0 ) uniform int) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:27 Constant: +0:27 0 (const uint) +0:29 move second child to first child (temp 4-component vector of float) +0:29 Color: direct index for structure (temp 4-component vector of float) +0:29 'psout' (temp structure{temp 4-component vector of float Color}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:31 Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:31 Color: direct index for structure (temp 4-component vector of float) +0:31 'psout' (temp structure{temp 4-component vector of float Color}) +0:31 Constant: +0:31 0 (const int) +0:31 Branch: Return +0:? Linker Objects +0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:22 Function Parameters: +0:? Sequence +0:25 imageLoad (global 4-component vector of float) +0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:25 c1: direct index for structure (layout(offset=0 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:25 Constant: +0:25 0 (const uint) +0:26 imageLoad (global 4-component vector of uint) +0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:26 c1: direct index for structure (layout(offset=0 ) uniform int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:26 Constant: +0:26 0 (const uint) +0:27 imageLoad (global 4-component vector of int) +0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:27 c1: direct index for structure (layout(offset=0 ) uniform int) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:27 Constant: +0:27 0 (const uint) +0:29 move second child to first child (temp 4-component vector of float) +0:29 Color: direct index for structure (temp 4-component vector of float) +0:29 'psout' (temp structure{temp 4-component vector of float Color}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:31 Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:31 Color: direct index for structure (temp 4-component vector of float) +0:31 'psout' (temp structure{temp 4-component vector of float Color}) +0:31 Constant: +0:31 0 (const int) +0:31 Branch: Return +0:? Linker Objects +0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 52 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 48 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tBuffF" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 27 "g_tBuffU" + Name 35 "g_tBuffI" + Name 40 "PS_OUTPUT" + MemberName 40(PS_OUTPUT) 0 "Color" + Name 42 "psout" + Name 48 "Color" + Decorate 9(g_tBuffF) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 27(g_tBuffU) DescriptorSet 0 + Decorate 35(g_tBuffI) DescriptorSet 0 + Decorate 48(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) Buffer nonsampled format:Rgba32f + 8: TypePointer UniformConstant 7 + 9(g_tBuffF): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 0 + 19: TypePointer Uniform 11(int) + 22: TypeVector 6(float) 4 + 24: TypeInt 32 0 + 25: TypeImage 24(int) Buffer nonsampled format:Rgba32ui + 26: TypePointer UniformConstant 25 + 27(g_tBuffU): 26(ptr) Variable UniformConstant + 31: TypeVector 24(int) 4 + 33: TypeImage 11(int) Buffer nonsampled format:Rgba32i + 34: TypePointer UniformConstant 33 + 35(g_tBuffI): 34(ptr) Variable UniformConstant + 40(PS_OUTPUT): TypeStruct 22(fvec4) + 41: TypePointer Function 40(PS_OUTPUT) + 43: 6(float) Constant 1065353216 + 44: 22(fvec4) ConstantComposite 43 43 43 43 + 45: TypePointer Function 22(fvec4) + 47: TypePointer Output 22(fvec4) + 48(Color): 47(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 42(psout): 41(ptr) Variable Function + 10: 7 Load 9(g_tBuffF) + 20: 19(ptr) AccessChain 17 18 + 21: 11(int) Load 20 + 23: 22(fvec4) ImageRead 10 21 + 28: 25 Load 27(g_tBuffU) + 29: 19(ptr) AccessChain 17 18 + 30: 11(int) Load 29 + 32: 31(ivec4) ImageRead 28 30 + 36: 33 Load 35(g_tBuffI) + 37: 19(ptr) AccessChain 17 18 + 38: 11(int) Load 37 + 39: 14(ivec4) ImageRead 36 38 + 46: 45(ptr) AccessChain 42(psout) 18 + Store 46 44 + 49: 45(ptr) AccessChain 42(psout) 18 + 50: 22(fvec4) Load 49 + Store 48(Color) 50 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out new file mode 100644 index 00000000..353f769c --- /dev/null +++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out @@ -0,0 +1,383 @@ +hlsl.load.rwtexture.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (global 4-component vector of float) +0:44 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 1 (const uint) +0:45 imageLoad (global 4-component vector of int) +0:45 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 1 (const uint) +0:46 imageLoad (global 4-component vector of uint) +0:46 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:49 imageLoad (global 4-component vector of float) +0:49 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) +0:50 imageLoad (global 4-component vector of int) +0:50 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:50 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 2 (const uint) +0:51 imageLoad (global 4-component vector of uint) +0:51 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:51 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 2 (const uint) +0:53 move second child to first child (temp 4-component vector of float) +0:53 Color: direct index for structure (temp 4-component vector of float) +0:53 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:54 move second child to first child (temp float) +0:54 Depth: direct index for structure (temp float) +0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 1.000000 +0:56 Sequence +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:56 Color: direct index for structure (temp 4-component vector of float) +0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:56 Depth: direct index for structure (temp float) +0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 1 (const int) +0:56 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (global 4-component vector of float) +0:44 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 1 (const uint) +0:45 imageLoad (global 4-component vector of int) +0:45 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 1 (const uint) +0:46 imageLoad (global 4-component vector of uint) +0:46 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:49 imageLoad (global 4-component vector of float) +0:49 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) +0:50 imageLoad (global 4-component vector of int) +0:50 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:50 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 2 (const uint) +0:51 imageLoad (global 4-component vector of uint) +0:51 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:51 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 2 (const uint) +0:53 move second child to first child (temp 4-component vector of float) +0:53 Color: direct index for structure (temp 4-component vector of float) +0:53 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:54 move second child to first child (temp float) +0:54 Depth: direct index for structure (temp float) +0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 1.000000 +0:56 Sequence +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:56 Color: direct index for structure (temp 4-component vector of float) +0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:56 Depth: direct index for structure (temp float) +0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 1 (const int) +0:56 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 112 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 74 78 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4a" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 26 "g_tTex1di4a" + Name 34 "g_tTex1du4a" + Name 42 "g_tTex2df4a" + Name 51 "g_tTex2di4a" + Name 58 "g_tTex2du4a" + Name 63 "PS_OUTPUT" + MemberName 63(PS_OUTPUT) 0 "Color" + MemberName 63(PS_OUTPUT) 1 "Depth" + Name 65 "psout" + Name 74 "Color" + Name 78 "Depth" + Name 84 "g_sSamp" + Name 87 "g_tTex1df4" + Name 90 "g_tTex1di4" + Name 93 "g_tTex1du4" + Name 96 "g_tTex2df4" + Name 99 "g_tTex2di4" + Name 102 "g_tTex2du4" + Name 105 "g_tTex3df4" + Name 108 "g_tTex3di4" + Name 111 "g_tTex3du4" + Decorate 9(g_tTex1df4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 26(g_tTex1di4a) DescriptorSet 0 + Decorate 34(g_tTex1du4a) DescriptorSet 0 + Decorate 42(g_tTex2df4a) DescriptorSet 0 + Decorate 51(g_tTex2di4a) DescriptorSet 0 + Decorate 58(g_tTex2du4a) DescriptorSet 0 + Decorate 74(Color) Location 0 + Decorate 78(Depth) BuiltIn FragDepth + Decorate 84(g_sSamp) DescriptorSet 0 + Decorate 84(g_sSamp) Binding 0 + Decorate 87(g_tTex1df4) DescriptorSet 0 + Decorate 87(g_tTex1df4) Binding 0 + Decorate 90(g_tTex1di4) DescriptorSet 0 + Decorate 93(g_tTex1du4) DescriptorSet 0 + Decorate 96(g_tTex2df4) DescriptorSet 0 + Decorate 99(g_tTex2di4) DescriptorSet 0 + Decorate 102(g_tTex2du4) DescriptorSet 0 + Decorate 105(g_tTex3df4) DescriptorSet 0 + Decorate 108(g_tTex3di4) DescriptorSet 0 + Decorate 111(g_tTex3du4) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D array nonsampled format:Rgba32f + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4a): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypePointer Uniform 12(ivec2) + 22: TypeVector 6(float) 4 + 24: TypeImage 11(int) 1D array nonsampled format:Rgba32i + 25: TypePointer UniformConstant 24 + 26(g_tTex1di4a): 25(ptr) Variable UniformConstant + 31: TypeInt 32 0 + 32: TypeImage 31(int) 1D array nonsampled format:Rgba32ui + 33: TypePointer UniformConstant 32 + 34(g_tTex1du4a): 33(ptr) Variable UniformConstant + 38: TypeVector 31(int) 4 + 40: TypeImage 6(float) 2D array nonsampled format:Rgba32f + 41: TypePointer UniformConstant 40 + 42(g_tTex2df4a): 41(ptr) Variable UniformConstant + 44: 11(int) Constant 2 + 45: TypePointer Uniform 13(ivec3) + 49: TypeImage 11(int) 2D array nonsampled format:Rgba32i + 50: TypePointer UniformConstant 49 + 51(g_tTex2di4a): 50(ptr) Variable UniformConstant + 56: TypeImage 31(int) 2D array nonsampled format:Rgba32ui + 57: TypePointer UniformConstant 56 + 58(g_tTex2du4a): 57(ptr) Variable UniformConstant + 63(PS_OUTPUT): TypeStruct 22(fvec4) 6(float) + 64: TypePointer Function 63(PS_OUTPUT) + 66: 11(int) Constant 0 + 67: 6(float) Constant 1065353216 + 68: 22(fvec4) ConstantComposite 67 67 67 67 + 69: TypePointer Function 22(fvec4) + 71: TypePointer Function 6(float) + 73: TypePointer Output 22(fvec4) + 74(Color): 73(ptr) Variable Output + 77: TypePointer Output 6(float) + 78(Depth): 77(ptr) Variable Output + 82: TypeSampler + 83: TypePointer UniformConstant 82 + 84(g_sSamp): 83(ptr) Variable UniformConstant + 85: TypeImage 6(float) 1D nonsampled format:Rgba32f + 86: TypePointer UniformConstant 85 + 87(g_tTex1df4): 86(ptr) Variable UniformConstant + 88: TypeImage 11(int) 1D nonsampled format:Rgba32i + 89: TypePointer UniformConstant 88 + 90(g_tTex1di4): 89(ptr) Variable UniformConstant + 91: TypeImage 31(int) 1D nonsampled format:Rgba32ui + 92: TypePointer UniformConstant 91 + 93(g_tTex1du4): 92(ptr) Variable UniformConstant + 94: TypeImage 6(float) 2D nonsampled format:Rgba32f + 95: TypePointer UniformConstant 94 + 96(g_tTex2df4): 95(ptr) Variable UniformConstant + 97: TypeImage 11(int) 2D nonsampled format:Rgba32i + 98: TypePointer UniformConstant 97 + 99(g_tTex2di4): 98(ptr) Variable UniformConstant + 100: TypeImage 31(int) 2D nonsampled format:Rgba32ui + 101: TypePointer UniformConstant 100 + 102(g_tTex2du4): 101(ptr) Variable UniformConstant + 103: TypeImage 6(float) 3D nonsampled format:Rgba32f + 104: TypePointer UniformConstant 103 + 105(g_tTex3df4): 104(ptr) Variable UniformConstant + 106: TypeImage 11(int) 3D nonsampled format:Rgba32i + 107: TypePointer UniformConstant 106 + 108(g_tTex3di4): 107(ptr) Variable UniformConstant + 109: TypeImage 31(int) 3D nonsampled format:Rgba32ui + 110: TypePointer UniformConstant 109 + 111(g_tTex3du4): 110(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 65(psout): 64(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4a) + 20: 19(ptr) AccessChain 17 18 + 21: 12(ivec2) Load 20 + 23: 22(fvec4) ImageRead 10 21 + 27: 24 Load 26(g_tTex1di4a) + 28: 19(ptr) AccessChain 17 18 + 29: 12(ivec2) Load 28 + 30: 14(ivec4) ImageRead 27 29 + 35: 32 Load 34(g_tTex1du4a) + 36: 19(ptr) AccessChain 17 18 + 37: 12(ivec2) Load 36 + 39: 38(ivec4) ImageRead 35 37 + 43: 40 Load 42(g_tTex2df4a) + 46: 45(ptr) AccessChain 17 44 + 47: 13(ivec3) Load 46 + 48: 22(fvec4) ImageRead 43 47 + 52: 49 Load 51(g_tTex2di4a) + 53: 45(ptr) AccessChain 17 44 + 54: 13(ivec3) Load 53 + 55: 14(ivec4) ImageRead 52 54 + 59: 56 Load 58(g_tTex2du4a) + 60: 45(ptr) AccessChain 17 44 + 61: 13(ivec3) Load 60 + 62: 38(ivec4) ImageRead 59 61 + 70: 69(ptr) AccessChain 65(psout) 66 + Store 70 68 + 72: 71(ptr) AccessChain 65(psout) 18 + Store 72 67 + 75: 69(ptr) AccessChain 65(psout) 66 + 76: 22(fvec4) Load 75 + Store 74(Color) 76 + 79: 71(ptr) AccessChain 65(psout) 18 + 80: 6(float) Load 79 + Store 78(Depth) 80 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out new file mode 100644 index 00000000..60c54000 --- /dev/null +++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out @@ -0,0 +1,432 @@ +hlsl.load.rwtexture.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (global 4-component vector of float) +0:44 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:44 c1: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 0 (const uint) +0:45 imageLoad (global 4-component vector of int) +0:45 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:45 c1: direct index for structure (layout(offset=0 ) uniform int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 0 (const uint) +0:46 imageLoad (global 4-component vector of uint) +0:46 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:46 c1: direct index for structure (layout(offset=0 ) uniform int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 0 (const uint) +0:49 imageLoad (global 4-component vector of float) +0:49 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 1 (const uint) +0:50 imageLoad (global 4-component vector of int) +0:50 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) +0:51 imageLoad (global 4-component vector of uint) +0:51 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:54 imageLoad (global 4-component vector of float) +0:54 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:55 imageLoad (global 4-component vector of int) +0:55 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:55 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:55 Constant: +0:55 2 (const uint) +0:56 imageLoad (global 4-component vector of uint) +0:56 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:58 move second child to first child (temp 4-component vector of float) +0:58 Color: direct index for structure (temp 4-component vector of float) +0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:59 move second child to first child (temp float) +0:59 Depth: direct index for structure (temp float) +0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 1.000000 +0:61 Sequence +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:61 Color: direct index for structure (temp 4-component vector of float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 0 (const int) +0:61 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:61 Depth: direct index for structure (temp float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 1 (const int) +0:61 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (global 4-component vector of float) +0:44 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:44 c1: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 0 (const uint) +0:45 imageLoad (global 4-component vector of int) +0:45 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:45 c1: direct index for structure (layout(offset=0 ) uniform int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 0 (const uint) +0:46 imageLoad (global 4-component vector of uint) +0:46 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:46 c1: direct index for structure (layout(offset=0 ) uniform int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 0 (const uint) +0:49 imageLoad (global 4-component vector of float) +0:49 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 1 (const uint) +0:50 imageLoad (global 4-component vector of int) +0:50 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) +0:51 imageLoad (global 4-component vector of uint) +0:51 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:54 imageLoad (global 4-component vector of float) +0:54 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:55 imageLoad (global 4-component vector of int) +0:55 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:55 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:55 Constant: +0:55 2 (const uint) +0:56 imageLoad (global 4-component vector of uint) +0:56 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:58 move second child to first child (temp 4-component vector of float) +0:58 Color: direct index for structure (temp 4-component vector of float) +0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:59 move second child to first child (temp float) +0:59 Depth: direct index for structure (temp float) +0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 1.000000 +0:61 Sequence +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:61 Color: direct index for structure (temp 4-component vector of float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 0 (const int) +0:61 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:61 Depth: direct index for structure (temp float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 1 (const int) +0:61 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 125 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 96 100 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 26 "g_tTex1di4" + Name 34 "g_tTex1du4" + Name 42 "g_tTex2df4" + Name 51 "g_tTex2di4" + Name 58 "g_tTex2du4" + Name 65 "g_tTex3df4" + Name 74 "g_tTex3di4" + Name 81 "g_tTex3du4" + Name 86 "PS_OUTPUT" + MemberName 86(PS_OUTPUT) 0 "Color" + MemberName 86(PS_OUTPUT) 1 "Depth" + Name 88 "psout" + Name 96 "Color" + Name 100 "Depth" + Name 106 "g_sSamp" + Name 109 "g_tTex1df4a" + Name 112 "g_tTex1di4a" + Name 115 "g_tTex1du4a" + Name 118 "g_tTex2df4a" + Name 121 "g_tTex2di4a" + Name 124 "g_tTex2du4a" + Decorate 9(g_tTex1df4) DescriptorSet 0 + Decorate 9(g_tTex1df4) Binding 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 26(g_tTex1di4) DescriptorSet 0 + Decorate 34(g_tTex1du4) DescriptorSet 0 + Decorate 42(g_tTex2df4) DescriptorSet 0 + Decorate 51(g_tTex2di4) DescriptorSet 0 + Decorate 58(g_tTex2du4) DescriptorSet 0 + Decorate 65(g_tTex3df4) DescriptorSet 0 + Decorate 74(g_tTex3di4) DescriptorSet 0 + Decorate 81(g_tTex3du4) DescriptorSet 0 + Decorate 96(Color) Location 0 + Decorate 100(Depth) BuiltIn FragDepth + Decorate 106(g_sSamp) DescriptorSet 0 + Decorate 106(g_sSamp) Binding 0 + Decorate 109(g_tTex1df4a) DescriptorSet 0 + Decorate 112(g_tTex1di4a) DescriptorSet 0 + Decorate 115(g_tTex1du4a) DescriptorSet 0 + Decorate 118(g_tTex2df4a) DescriptorSet 0 + Decorate 121(g_tTex2di4a) DescriptorSet 0 + Decorate 124(g_tTex2du4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D nonsampled format:Rgba32f + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 0 + 19: TypePointer Uniform 11(int) + 22: TypeVector 6(float) 4 + 24: TypeImage 11(int) 1D nonsampled format:Rgba32i + 25: TypePointer UniformConstant 24 + 26(g_tTex1di4): 25(ptr) Variable UniformConstant + 31: TypeInt 32 0 + 32: TypeImage 31(int) 1D nonsampled format:Rgba32ui + 33: TypePointer UniformConstant 32 + 34(g_tTex1du4): 33(ptr) Variable UniformConstant + 38: TypeVector 31(int) 4 + 40: TypeImage 6(float) 2D nonsampled format:Rgba32f + 41: TypePointer UniformConstant 40 + 42(g_tTex2df4): 41(ptr) Variable UniformConstant + 44: 11(int) Constant 1 + 45: TypePointer Uniform 12(ivec2) + 49: TypeImage 11(int) 2D nonsampled format:Rgba32i + 50: TypePointer UniformConstant 49 + 51(g_tTex2di4): 50(ptr) Variable UniformConstant + 56: TypeImage 31(int) 2D nonsampled format:Rgba32ui + 57: TypePointer UniformConstant 56 + 58(g_tTex2du4): 57(ptr) Variable UniformConstant + 63: TypeImage 6(float) 3D nonsampled format:Rgba32f + 64: TypePointer UniformConstant 63 + 65(g_tTex3df4): 64(ptr) Variable UniformConstant + 67: 11(int) Constant 2 + 68: TypePointer Uniform 13(ivec3) + 72: TypeImage 11(int) 3D nonsampled format:Rgba32i + 73: TypePointer UniformConstant 72 + 74(g_tTex3di4): 73(ptr) Variable UniformConstant + 79: TypeImage 31(int) 3D nonsampled format:Rgba32ui + 80: TypePointer UniformConstant 79 + 81(g_tTex3du4): 80(ptr) Variable UniformConstant + 86(PS_OUTPUT): TypeStruct 22(fvec4) 6(float) + 87: TypePointer Function 86(PS_OUTPUT) + 89: 6(float) Constant 1065353216 + 90: 22(fvec4) ConstantComposite 89 89 89 89 + 91: TypePointer Function 22(fvec4) + 93: TypePointer Function 6(float) + 95: TypePointer Output 22(fvec4) + 96(Color): 95(ptr) Variable Output + 99: TypePointer Output 6(float) + 100(Depth): 99(ptr) Variable Output + 104: TypeSampler + 105: TypePointer UniformConstant 104 + 106(g_sSamp): 105(ptr) Variable UniformConstant + 107: TypeImage 6(float) 1D array nonsampled format:Rgba32f + 108: TypePointer UniformConstant 107 +109(g_tTex1df4a): 108(ptr) Variable UniformConstant + 110: TypeImage 11(int) 1D array nonsampled format:Rgba32i + 111: TypePointer UniformConstant 110 +112(g_tTex1di4a): 111(ptr) Variable UniformConstant + 113: TypeImage 31(int) 1D array nonsampled format:Rgba32ui + 114: TypePointer UniformConstant 113 +115(g_tTex1du4a): 114(ptr) Variable UniformConstant + 116: TypeImage 6(float) 2D array nonsampled format:Rgba32f + 117: TypePointer UniformConstant 116 +118(g_tTex2df4a): 117(ptr) Variable UniformConstant + 119: TypeImage 11(int) 2D array nonsampled format:Rgba32i + 120: TypePointer UniformConstant 119 +121(g_tTex2di4a): 120(ptr) Variable UniformConstant + 122: TypeImage 31(int) 2D array nonsampled format:Rgba32ui + 123: TypePointer UniformConstant 122 +124(g_tTex2du4a): 123(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 88(psout): 87(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4) + 20: 19(ptr) AccessChain 17 18 + 21: 11(int) Load 20 + 23: 22(fvec4) ImageRead 10 21 + 27: 24 Load 26(g_tTex1di4) + 28: 19(ptr) AccessChain 17 18 + 29: 11(int) Load 28 + 30: 14(ivec4) ImageRead 27 29 + 35: 32 Load 34(g_tTex1du4) + 36: 19(ptr) AccessChain 17 18 + 37: 11(int) Load 36 + 39: 38(ivec4) ImageRead 35 37 + 43: 40 Load 42(g_tTex2df4) + 46: 45(ptr) AccessChain 17 44 + 47: 12(ivec2) Load 46 + 48: 22(fvec4) ImageRead 43 47 + 52: 49 Load 51(g_tTex2di4) + 53: 45(ptr) AccessChain 17 44 + 54: 12(ivec2) Load 53 + 55: 14(ivec4) ImageRead 52 54 + 59: 56 Load 58(g_tTex2du4) + 60: 45(ptr) AccessChain 17 44 + 61: 12(ivec2) Load 60 + 62: 38(ivec4) ImageRead 59 61 + 66: 63 Load 65(g_tTex3df4) + 69: 68(ptr) AccessChain 17 67 + 70: 13(ivec3) Load 69 + 71: 22(fvec4) ImageRead 66 70 + 75: 72 Load 74(g_tTex3di4) + 76: 68(ptr) AccessChain 17 67 + 77: 13(ivec3) Load 76 + 78: 14(ivec4) ImageRead 75 77 + 82: 79 Load 81(g_tTex3du4) + 83: 68(ptr) AccessChain 17 67 + 84: 13(ivec3) Load 83 + 85: 38(ivec4) ImageRead 82 84 + 92: 91(ptr) AccessChain 88(psout) 18 + Store 92 90 + 94: 93(ptr) AccessChain 88(psout) 44 + Store 94 89 + 97: 91(ptr) AccessChain 88(psout) 18 + 98: 22(fvec4) Load 97 + Store 96(Color) 98 + 101: 93(ptr) AccessChain 88(psout) 44 + 102: 6(float) Load 101 + Store 100(Depth) 102 + Return + FunctionEnd diff --git a/Test/hlsl.getdimensions.rw.dx10.frag b/Test/hlsl.getdimensions.rw.dx10.frag new file mode 100644 index 00000000..957a8082 --- /dev/null +++ b/Test/hlsl.getdimensions.rw.dx10.frag @@ -0,0 +1,96 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +RWBuffer g_tBuffF; +RWBuffer g_tBuffI; +RWBuffer g_tBuffU; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + uint MipLevel; + uint WidthU; + uint HeightU; + uint ElementsU; + uint DepthU; + uint NumberOfLevelsU; + uint NumberOfSamplesU; + + float WidthF; + float HeightF; + float ElementsF; + float DepthF; + float NumberOfLevelsF; + float NumberOfSamplesF; + + // 1D, float/int/uint, uint params + g_tTex1df4.GetDimensions(WidthU); + g_tTex1di4.GetDimensions(WidthU); + g_tTex1du4.GetDimensions(WidthU); + + // buffer, float/int/uint, uint params + g_tBuffF.GetDimensions(WidthU); + g_tBuffI.GetDimensions(WidthU); + g_tBuffU.GetDimensions(WidthU); + + // 1DArray, float/int/uint, uint params + g_tTex1df4a.GetDimensions(WidthU, ElementsU); + g_tTex1di4a.GetDimensions(WidthU, ElementsU); + g_tTex1du4a.GetDimensions(WidthU, ElementsU); + + // 2D, float/int/uint, uint params + g_tTex2df4.GetDimensions(WidthU, HeightU); + g_tTex2di4.GetDimensions(WidthU, HeightU); + g_tTex2du4.GetDimensions(WidthU, HeightU); + + // 2DArray, float/int/uint, uint params + g_tTex2df4a.GetDimensions(WidthU, HeightU, ElementsU); + g_tTex2di4a.GetDimensions(WidthU, HeightU, ElementsU); + g_tTex2du4a.GetDimensions(WidthU, HeightU, ElementsU); + + // 3D, float/int/uint, uint params + g_tTex3df4.GetDimensions(WidthU, HeightU, DepthU); + g_tTex3di4.GetDimensions(WidthU, HeightU, DepthU); + g_tTex3du4.GetDimensions(WidthU, HeightU, DepthU); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.rwbuffer.dx10.frag b/Test/hlsl.load.rwbuffer.dx10.frag new file mode 100644 index 00000000..accd5f0c --- /dev/null +++ b/Test/hlsl.load.rwbuffer.dx10.frag @@ -0,0 +1,32 @@ + +RWBuffer g_tBuffF; +RWBuffer g_tBuffI; +RWBuffer g_tBuffU; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + g_tBuffF.Load(c1); + g_tBuffU.Load(c1); + g_tBuffI.Load(c1); + + psout.Color = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.rwtexture.array.dx10.frag b/Test/hlsl.load.rwtexture.array.dx10.frag new file mode 100644 index 00000000..38e29096 --- /dev/null +++ b/Test/hlsl.load.rwtexture.array.dx10.frag @@ -0,0 +1,57 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4a.Load(c2); + g_tTex1di4a.Load(c2); + g_tTex1du4a.Load(c2); + + // 2D + g_tTex2df4a.Load(c3); + g_tTex2di4a.Load(c3); + g_tTex2du4a.Load(c3); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.rwtexture.dx10.frag b/Test/hlsl.load.rwtexture.dx10.frag new file mode 100644 index 00000000..c0950776 --- /dev/null +++ b/Test/hlsl.load.rwtexture.dx10.frag @@ -0,0 +1,62 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4.Load(c1); + g_tTex1di4.Load(c1); + g_tTex1du4.Load(c1); + + // 2D + g_tTex2df4.Load(c2); + g_tTex2di4.Load(c2); + g_tTex2du4.Load(c2); + + // 3D + g_tTex3df4.Load(c3); + g_tTex3di4.Load(c3); + g_tTex3du4.Load(c3); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index b587b0d6..90b62d15 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -111,6 +111,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.gatherRGBA.offset.dx10.frag", "main"}, {"hlsl.gatherRGBA.offsetarray.dx10.frag", "main"}, {"hlsl.getdimensions.dx10.frag", "main"}, + {"hlsl.getdimensions.rw.dx10.frag", "main"}, {"hlsl.getdimensions.dx10.vert", "main"}, {"hlsl.getsampleposition.dx10.frag", "main"}, {"hlsl.if.frag", "PixelShaderFunction"}, @@ -133,6 +134,9 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.load.basic.dx10.frag", "main"}, {"hlsl.load.basic.dx10.vert", "main"}, {"hlsl.load.buffer.dx10.frag", "main"}, + {"hlsl.load.rwbuffer.dx10.frag", "main"}, + {"hlsl.load.rwtexture.dx10.frag", "main"}, + {"hlsl.load.rwtexture.array.dx10.frag", "main"}, {"hlsl.load.offset.dx10.frag", "main"}, {"hlsl.load.offsetarray.dx10.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index b41618c2..626d2991 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -460,8 +460,14 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type) // further, it can create an anonymous instance of the block if (peekTokenClass(EHTokSemicolon)) parseContext.declareBlock(loc, type); - } else + } else { + // Some qualifiers are set when parsing the type. Merge those with + // whatever comes from acceptQualifier. + assert(qualifier.layoutFormat == ElfNone); + qualifier.layoutFormat = type.getQualifier().layoutFormat; + type.getQualifier() = qualifier; + } return true; } @@ -827,6 +833,13 @@ bool HlslGrammar::acceptSamplerType(TType& type) // | TEXTURECUBEARRAY // | TEXTURE2DMS // | TEXTURE2DMSARRAY +// | RWBUFFER +// | RWTEXTURE1D +// | RWTEXTURE1DARRAY +// | RWTEXTURE2D +// | RWTEXTURE2DARRAY +// | RWTEXTURE3D + bool HlslGrammar::acceptTextureType(TType& type) { const EHlslTokenClass textureType = peek(); @@ -834,6 +847,7 @@ bool HlslGrammar::acceptTextureType(TType& type) TSamplerDim dim = EsdNone; bool array = false; bool ms = false; + bool image = false; switch (textureType) { case EHTokBuffer: dim = EsdBuffer; break; @@ -846,6 +860,12 @@ bool HlslGrammar::acceptTextureType(TType& type) case EHTokTextureCubearray: dim = EsdCube; array = true; break; case EHTokTexture2DMS: dim = Esd2D; ms = true; break; case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break; + case EHTokRWBuffer: dim = EsdBuffer; image=true; break; + case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break; + case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break; + case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break; + case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break; + case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break; default: return false; // not a texture declaration } @@ -856,7 +876,7 @@ bool HlslGrammar::acceptTextureType(TType& type) TIntermTyped* msCount = nullptr; - // texture type: required for multisample types! + // texture type: required for multisample types and RWBuffer/RWTextures! if (acceptTokenClass(EHTokLeftAngle)) { if (! acceptType(txType)) { expected("scalar or vector type"); @@ -911,22 +931,45 @@ bool HlslGrammar::acceptTextureType(TType& type) } else if (ms) { expected("texture type for multisample"); return false; + } else if (image) { + expected("type for RWTexture/RWBuffer"); + return false; } TArraySizes* arraySizes = nullptr; - const bool shadow = txType.isScalar() || (txType.isVector() && txType.getVectorSize() == 1); + const bool shadow = !image && (txType.isScalar() || (txType.isVector() && txType.getVectorSize() == 1)); TSampler sampler; + TLayoutFormat format = ElfNone; - // Buffers are combined. - if (dim == EsdBuffer) { + // RWBuffer and RWTexture (images) require a TLayoutFormat. We handle only a limit set. + if (image) { + if (txType.getVectorSize() != 4) + expected("4 component image"); + + switch (txType.getBasicType()) { + case EbtFloat: format = ElfRgba32f; break; + case EbtInt: format = ElfRgba32i; break; + case EbtUint: format = ElfRgba32ui; break; + default: + expected("unknown basic type in image format"); + } + } + + // Non-image Buffers are combined + if (dim == EsdBuffer && !image) { sampler.set(txType.getBasicType(), dim, array); } else { // DX10 textures are separated. TODO: DX9. - sampler.setTexture(txType.getBasicType(), dim, array, shadow, ms); + if (image) { + sampler.setImage(txType.getBasicType(), dim, array, shadow, ms); + } else { + sampler.setTexture(txType.getBasicType(), dim, array, shadow, ms); + } } type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); + type.getQualifier().layoutFormat = format; return true; } @@ -966,6 +1009,12 @@ bool HlslGrammar::acceptType(TType& type) case EHTokTextureCubearray: // ... case EHTokTexture2DMS: // ... case EHTokTexture2DMSarray: // ... + case EHTokRWTexture1d: // ... + case EHTokRWTexture1darray: // ... + case EHTokRWTexture2d: // ... + case EHTokRWTexture2darray: // ... + case EHTokRWTexture3d: // ... + case EHTokRWBuffer: // ... return acceptTextureType(type); break; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 08ffd580..d02d193e 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1252,15 +1252,17 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType const TSampler& texSampler = texType.getSampler(); const TSamplerDim dim = texSampler.dim; + const bool isImage = texSampler.isImage(); const int numArgs = (int)argAggregate->getSequence().size(); int numDims = 0; switch (dim) { - case Esd1D: numDims = 1; break; // W - case Esd2D: numDims = 2; break; // W, H - case Esd3D: numDims = 3; break; // W, H, D - case EsdCube: numDims = 2; break; // W, H (cube) + case Esd1D: numDims = 1; break; // W + case Esd2D: numDims = 2; break; // W, H + case Esd3D: numDims = 3; break; // W, H, D + case EsdCube: numDims = 2; break; // W, H (cube) + case EsdBuffer: numDims = 1; break; // buffers default: assert(0 && "unhandled texture dimension"); } @@ -1273,7 +1275,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType const bool mipQuery = (numArgs > (numDims + 1)) && (!texSampler.isMultiSample()); // AST assumes integer return. Will be converted to float if required. - TIntermAggregate* sizeQuery = new TIntermAggregate(EOpTextureQuerySize); + TIntermAggregate* sizeQuery = new TIntermAggregate(isImage ? EOpImageQuerySize : EOpTextureQuerySize); sizeQuery->getSequence().push_back(argTex); // If we're querying an explicit LOD, add the LOD, which is always arg #1 if (mipQuery) { @@ -1419,11 +1421,12 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType const bool isMS = argTex->getType().getSampler().isMultiSample(); const bool isBuffer = argTex->getType().getSampler().dim == EsdBuffer; + const bool isImage = argTex->getType().getSampler().isImage(); const TBasicType coordBaseType = argCoord->getType().getBasicType(); // Last component of coordinate is the mip level, for non-MS. we separate them here: - if (isMS || isBuffer) { - // MS and Buffer have no LOD + if (isMS || isBuffer || isImage) { + // MS, Buffer, and Image have no LOD coordSwizzle = argCoord; } else { // Extract coordinate @@ -1443,7 +1446,9 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType const bool hasOffset = ((!isMS && numArgs == 3) || (isMS && numArgs == 4)); // Create texel fetch - const TOperator fetchOp = (hasOffset ? EOpTextureFetchOffset : EOpTextureFetch); + const TOperator fetchOp = (isImage ? EOpImageLoad : + hasOffset ? EOpTextureFetchOffset : + EOpTextureFetch); TIntermAggregate* txfetch = new TIntermAggregate(fetchOp); // Build up the fetch @@ -1456,6 +1461,8 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType txfetch->getSequence().push_back(argSampleIdx); } else if (isBuffer) { // Nothing else to do for buffers. + } else if (isImage) { + // Nothing else to do for images. } else { // 2DMS and buffer have no LOD, but everything else does. txfetch->getSequence().push_back(lodComponent); diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index 3f725997..a2d500f2 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -67,20 +67,21 @@ const char* BaseTypeName(const char argOrder, const char* scalarName, const char } } -bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; } -bool IsTextureArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&'; } -bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; } -bool IsBuffer(const char argOrder) { return argOrder == '*'; } +bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; } +bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; } +bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; } +bool IsBuffer(const char argOrder) { return argOrder == '*' || argOrder == '~'; } +bool IsImage(const char argOrder) { return argOrder == '!' || argOrder == '#' || argOrder == '~'; } bool IsTextureType(const char argOrder) { - return argOrder == '%' || argOrder == '@' || IsTextureMS(argOrder) || IsBuffer(argOrder); + return argOrder == '%' || argOrder == '@' || IsTextureMS(argOrder) || IsBuffer(argOrder) | IsImage(argOrder); } // Reject certain combinations that are illegal sample methods. For example, // 3D arrays. bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim0) { - const bool isArrayed = IsTextureArrayed(*argOrder); + const bool isArrayed = IsArrayed(*argOrder); const bool isMS = IsTextureMS(*argOrder); const bool isBuffer = IsBuffer(*argOrder); @@ -153,9 +154,9 @@ int CoordinateArgPos(const glslang::TString& name, bool isTexture) } // Some texture methods use an addition coordinate dimension for the mip -bool HasMipInCoord(const glslang::TString& name, bool isMS, bool isBuffer) +bool HasMipInCoord(const glslang::TString& name, bool isMS, bool isBuffer, bool isImage) { - return name == "Load" && !isMS && !isBuffer; + return name == "Load" && !isMS && !isBuffer && !isImage; } // LOD calculations don't pass the array level in the coordinate. @@ -219,10 +220,11 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons { const bool isTranspose = (argOrder[0] == '^'); const bool isTexture = IsTextureType(argOrder[0]); - const bool isArrayed = IsTextureArrayed(argOrder[0]); + const bool isArrayed = IsArrayed(argOrder[0]); const bool isSampler = IsSamplerType(argType[0]); const bool isMS = IsTextureMS(argOrder[0]); const bool isBuffer = IsBuffer(argOrder[0]); + const bool isImage = IsImage(argOrder[0]); char type = *argType; @@ -253,9 +255,15 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons case 'B': s += "bool"; break; case 'S': s += "sampler"; break; case 's': s += "SamplerComparisonState"; break; - case 'T': s += (isBuffer ? "Buffer" : "Texture"); break; - case 'i': s += (isBuffer ? "Buffer " : "Texture "); break; - case 'u': s += (isBuffer ? "Buffer " : "Texture "); break; + case 'T': s += ((isBuffer && isImage) ? "RWBuffer" : + isBuffer ? "Buffer" : + isImage ? "RWTexture" : "Texture"); break; + case 'i': s += ((isBuffer && isImage) ? "RWBuffer " : + isBuffer ? "Buffer " : + isImage ? "RWTexture " : "Texture "); break; + case 'u': s += ((isBuffer && isImage) ? "RWBuffer " : + isBuffer ? "Buffer " : + isImage ? "RWTexture " : "Texture ");break; default: s += "UNKNOWN_TYPE"; break; } } else { @@ -274,7 +282,10 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons if (type != 'T') // create itexture, utexture, etc s += type; - s += (isBuffer ? "samplerBuffer" : "texture"); + s += ((isImage && isBuffer) ? "imageBuffer" : + isImage ? "image" : + isBuffer ? "samplerBuffer" : + "texture"); break; default: s += "UNKNOWN_TYPE"; break; @@ -507,6 +518,9 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c // '@' as first letter of order creates arrayed texture of given type // '$' / '&' as first letter of order creates 2DMS / 2DMSArray textures // '*' as first letter of order creates buffer object + // '!' as first letter of order creates image object + // '#' as first letter of order creates arrayed image object + // '~' as first letter of order creates an image buffer object static const struct { const char* name; // intrinsic name @@ -699,6 +713,11 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "Load", /* +sampleidex*/ "V4", nullptr, "$&,V,S", "FIU,I,I", EShLangAll }, { "Load", /* +samplindex, offset*/ "V4", nullptr, "$&,V,S,V", "FIU,I,I,I", EShLangAll }, + // RWTexture loads + { "Load", "V4", nullptr, "!#,V", "FIU,I", EShLangAll }, + // RWBuffer loads + { "Load", "V4", nullptr, "~1,V", "FIU,I", EShLangAll }, + { "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll }, { "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangAll }, @@ -710,36 +729,36 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c // // UINT Width // UINT MipLevel, UINT Width, UINT NumberOfLevels - { "GetDimensions", /* 1D */ "-", "-", "%1,>S", "FUI,U", EShLangAll }, - { "GetDimensions", /* 1D */ "-", "-", "%1,>S", "FUI,F", EShLangAll }, + { "GetDimensions", /* 1D */ "-", "-", "%!~1,>S", "FUI,U", EShLangAll }, + { "GetDimensions", /* 1D */ "-", "-", "%!~1,>S", "FUI,F", EShLangAll }, { "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,,", EShLangAll }, { "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,F,", EShLangAll }, // UINT Width, UINT Elements // UINT MipLevel, UINT Width, UINT Elements, UINT NumberOfLevels - { "GetDimensions", /* 1DArray */ "-", "-", "@1,>S,", "FUI,U,", EShLangAll }, - { "GetDimensions", /* 1DArray */ "-", "-", "@1,>S,", "FUI,F,", EShLangAll }, + { "GetDimensions", /* 1DArray */ "-", "-", "@#1,>S,", "FUI,U,", EShLangAll }, + { "GetDimensions", /* 1DArray */ "-", "-", "@#1,>S,", "FUI,F,", EShLangAll }, { "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,,,", EShLangAll }, { "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,F,,", EShLangAll }, // UINT Width, UINT Height // UINT MipLevel, UINT Width, UINT Height, UINT NumberOfLevels - { "GetDimensions", /* 2D */ "-", "-", "%2,>S,", "FUI,U,", EShLangAll }, - { "GetDimensions", /* 2D */ "-", "-", "%2,>S,", "FUI,F,", EShLangAll }, + { "GetDimensions", /* 2D */ "-", "-", "%!2,>S,", "FUI,U,", EShLangAll }, + { "GetDimensions", /* 2D */ "-", "-", "%!2,>S,", "FUI,F,", EShLangAll }, { "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,,,", EShLangAll }, { "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,F,,", EShLangAll }, // UINT Width, UINT Height, UINT Elements // UINT MipLevel, UINT Width, UINT Height, UINT Elements, UINT NumberOfLevels - { "GetDimensions", /* 2DArray */ "-", "-", "@2,>S,,", "FUI,U,,", EShLangAll }, - { "GetDimensions", /* 2DArray */ "-", "-", "@2,>S,,", "FUI,F,F,F", EShLangAll }, + { "GetDimensions", /* 2DArray */ "-", "-", "@#2,>S,,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* 2DArray */ "-", "-", "@#2,>S,,", "FUI,F,F,F", EShLangAll }, { "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,,,,", EShLangAll }, { "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,F,,,", EShLangAll }, // UINT Width, UINT Height, UINT Depth // UINT MipLevel, UINT Width, UINT Height, UINT Depth, UINT NumberOfLevels - { "GetDimensions", /* 3D */ "-", "-", "%3,>S,,", "FUI,U,,", EShLangAll }, - { "GetDimensions", /* 3D */ "-", "-", "%3,>S,,", "FUI,F,,", EShLangAll }, + { "GetDimensions", /* 3D */ "-", "-", "%!3,>S,,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* 3D */ "-", "-", "%!3,>S,,", "FUI,F,,", EShLangAll }, { "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,,,,", EShLangAll }, { "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,F,,,", EShLangAll }, @@ -836,10 +855,11 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c for (const char* argOrder = intrinsic.argOrder; !IsEndOfArg(argOrder); ++argOrder) { // for each order... const bool isTexture = IsTextureType(*argOrder); - const bool isArrayed = IsTextureArrayed(*argOrder); + const bool isArrayed = IsArrayed(*argOrder); const bool isMS = IsTextureMS(*argOrder); const bool isBuffer = IsBuffer(*argOrder); - const bool mipInCoord = HasMipInCoord(intrinsic.name, isMS, isBuffer); + const bool isImage = IsImage(*argOrder); + const bool mipInCoord = HasMipInCoord(intrinsic.name, isMS, isBuffer, isImage); const int fixedVecSize = FixedVecSize(argOrder); const int coordArg = CoordinateArgPos(intrinsic.name, isTexture); diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp index cf83ef39..f25bdd8c 100755 --- a/hlsl/hlslScanContext.cpp +++ b/hlsl/hlslScanContext.cpp @@ -258,6 +258,13 @@ void HlslScanContext::fillInKeywordMap() (*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)["struct"] = EHTokStruct; (*KeywordMap)["cbuffer"] = EHTokCBuffer; @@ -581,6 +588,12 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokTextureCubearray: case EHTokTexture2DMS: case EHTokTexture2DMSarray: + case EHTokRWTexture1d: + case EHTokRWTexture1darray: + case EHTokRWTexture2d: + case EHTokRWTexture2darray: + case EHTokRWTexture3d: + case EHTokRWBuffer: return keyword; // variable, user type, ... diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h index e38cb9a6..2994001d 100755 --- a/hlsl/hlslTokens.h +++ b/hlsl/hlslTokens.h @@ -209,6 +209,13 @@ enum EHlslTokenClass { EHTokTextureCubearray, EHTokTexture2DMS, EHTokTexture2DMSarray, + EHTokRWTexture1d, + EHTokRWTexture1darray, + EHTokRWTexture2d, + EHTokRWTexture2darray, + EHTokRWTexture3d, + EHTokRWBuffer, + // variable, user type, ... EHTokIdentifier, From ed33e057628ff29215a298d1ce96ee365eaaea76 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 6 Oct 2016 12:59:51 -0600 Subject: [PATCH 038/130] HLSL: Do structure conversion for return type struct-punning on non-entry-point functions. --- SPIRV/GlslangToSpv.cpp | 26 ++-- Test/baseResults/hlsl.multiReturn.frag.out | 113 ++++++++++++++++++ ...map.hlsl.templatetypes.everything.frag.out | 15 +-- .../remap.hlsl.templatetypes.none.frag.out | 5 +- Test/hlsl.multiReturn.frag | 19 +++ Test/remap.hlsl.templatetypes.everything.frag | 2 +- Test/remap.hlsl.templatetypes.none.frag | 2 +- glslang/Include/revision.h | 4 +- gtests/Hlsl.FromFile.cpp | 1 + 9 files changed, 167 insertions(+), 20 deletions(-) create mode 100755 Test/baseResults/hlsl.multiReturn.frag.out create mode 100755 Test/hlsl.multiReturn.frag diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 40ff9b4e..5ecb6ab9 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -172,6 +172,7 @@ protected: spv::Id getExtBuiltins(const char* name); spv::Function* shaderEntry; + spv::Function* currentFunction; spv::Instruction* entryPoint; int sequenceDepth; @@ -733,7 +734,8 @@ bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifie // TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* glslangIntermediate, spv::SpvBuildLogger* buildLogger) - : TIntermTraverser(true, false, true), shaderEntry(0), sequenceDepth(0), logger(buildLogger), + : TIntermTraverser(true, false, true), shaderEntry(nullptr), currentFunction(nullptr), + sequenceDepth(0), logger(buildLogger), builder((glslang::GetKhronosToolId() << 16) | GeneratorVersion, logger), inMain(false), mainTerminated(false), linkageOnly(false), glslangIntermediate(glslangIntermediate) @@ -1351,6 +1353,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (isShaderEntryPoint(node)) { inMain = true; builder.setBuildPoint(shaderEntry->getLastBlock()); + currentFunction = shaderEntry; } else { handleFunctionEntry(node); } @@ -1858,9 +1861,18 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T builder.createLoopContinue(); break; case glslang::EOpReturn: - if (node->getExpression()) - builder.makeReturn(false, accessChainLoad(node->getExpression()->getType())); - else + if (node->getExpression()) { + const glslang::TType& glslangReturnType = node->getExpression()->getType(); + spv::Id returnId = accessChainLoad(glslangReturnType); + if (builder.getTypeId(returnId) != currentFunction->getReturnType()) { + builder.clearAccessChain(); + spv::Id copyId = builder.createVariable(spv::StorageClassFunction, currentFunction->getReturnType()); + builder.setAccessChainLValue(copyId); + multiTypeStore(glslangReturnType, returnId); + returnId = builder.createLoad(copyId); + } + builder.makeReturn(false, returnId); + } else builder.makeReturn(false); builder.clearAccessChain(); @@ -2332,7 +2344,7 @@ void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::I // SPIR-V level. // // This especially happens when a single glslang type expands to multiple -// SPIR-V types, like a struct that is used in an member-undecorated way as well +// SPIR-V types, like a struct that is used in a member-undecorated way as well // as in a member-decorated way. // // NOTE: This function can handle any store request; if it's not special it @@ -2599,8 +2611,8 @@ void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate { // SPIR-V functions should already be in the functionMap from the prepass // that called makeFunctions(). - spv::Function* function = functionMap[node->getName().c_str()]; - spv::Block* functionBlock = function->getEntryBlock(); + currentFunction = functionMap[node->getName().c_str()]; + spv::Block* functionBlock = currentFunction->getEntryBlock(); builder.setBuildPoint(functionBlock); } diff --git a/Test/baseResults/hlsl.multiReturn.frag.out b/Test/baseResults/hlsl.multiReturn.frag.out new file mode 100755 index 00000000..80d7f166 --- /dev/null +++ b/Test/baseResults/hlsl.multiReturn.frag.out @@ -0,0 +1,113 @@ +hlsl.multiReturn.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:12 Function Parameters: +0:? Sequence +0:13 Branch: Return with expression +0:13 s: direct index for structure (layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:13 '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}) +0:13 Constant: +0:13 0 (const uint) +0:17 Function Definition: main( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 Function Call: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:? Linker Objects +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}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:12 Function Parameters: +0:? Sequence +0:13 Branch: Return with expression +0:13 s: direct index for structure (layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:13 '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}) +0:13 Constant: +0:13 0 (const uint) +0:17 Function Definition: main( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 Function Call: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:? Linker Objects +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): 80001 +// Id's are bound by 39 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "S" + MemberName 9(S) 0 "f" + MemberName 9(S) 1 "v" + MemberName 9(S) 2 "m" + Name 11 "foo(" + Name 13 "S" + MemberName 13(S) 0 "f" + MemberName 13(S) 1 "v" + MemberName 13(S) 2 "m" + Name 14 "bufName" + MemberName 14(bufName) 0 "s" + Name 16 "" + MemberDecorate 13(S) 0 Offset 0 + MemberDecorate 13(S) 1 Offset 16 + MemberDecorate 13(S) 2 RowMajor + MemberDecorate 13(S) 2 Offset 32 + MemberDecorate 13(S) 2 MatrixStride 16 + MemberDecorate 14(bufName) 0 Offset 0 + Decorate 14(bufName) Block + Decorate 16 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeMatrix 7(fvec3) 3 + 9(S): TypeStruct 6(float) 7(fvec3) 8 + 10: TypeFunction 9(S) + 13(S): TypeStruct 6(float) 7(fvec3) 8 + 14(bufName): TypeStruct 13(S) + 15: TypePointer Uniform 14(bufName) + 16: 15(ptr) Variable Uniform + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 19: TypePointer Uniform 13(S) + 22: TypePointer Function 9(S) + 25: TypePointer Function 6(float) + 28: 17(int) Constant 1 + 29: TypePointer Function 7(fvec3) + 32: 17(int) Constant 2 + 33: TypePointer Function 8 + 4(main): 2 Function None 3 + 5: Label + 38: 9(S) FunctionCall 11(foo() + Return + FunctionEnd + 11(foo(): 9(S) Function None 10 + 12: Label + 23: 22(ptr) Variable Function + 20: 19(ptr) AccessChain 16 18 + 21: 13(S) Load 20 + 24: 6(float) CompositeExtract 21 0 + 26: 25(ptr) AccessChain 23 18 + Store 26 24 + 27: 7(fvec3) CompositeExtract 21 1 + 30: 29(ptr) AccessChain 23 28 + Store 30 27 + 31: 8 CompositeExtract 21 2 + 34: 33(ptr) AccessChain 23 32 + Store 34 31 + 35: 9(S) Load 23 + ReturnValue 35 + FunctionEnd diff --git a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out index 7a40f944..63eb6cbb 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out @@ -5,7 +5,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 16123 +// Id's are bound by 9012 Capability Shader Capability Float64 @@ -20,11 +20,12 @@ Linked fragment stage: 13: TypeFloat 32 29: TypeVector 13(float) 4 2572: 13(float) Constant 0 - 666: TypePointer Output 29(fvec4) - 4045: 666(ptr) Variable Output - 667: TypePointer Input 29(fvec4) - 4872: 667(ptr) Variable Input + 650: TypePointer Output 13(float) + 4045: 650(ptr) Variable Output + 666: TypePointer Input 29(fvec4) + 4872: 666(ptr) Variable Input 5663: 8 Function None 1282 - 16122: Label - ReturnValue 2572 + 9011: Label + Store 4045 2572 + Return FunctionEnd diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out index 340198b3..df0dcf55 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out @@ -159,7 +159,7 @@ Linked fragment stage: 142: 69(fvec3) ConstantComposite 109 111 112 143: 69(fvec3) ConstantComposite 113 114 116 144: 139 ConstantComposite 72 126 142 143 - 145: TypePointer Output 7(fvec4) + 145: TypePointer Output 6(float) 146(@entryPointOutput): 145(ptr) Variable Output 147: TypePointer Input 7(fvec4) 148(input): 147(ptr) Variable Input @@ -221,5 +221,6 @@ Linked fragment stage: Store 130(r62) 133 Store 136(r65) 138 Store 141(r66) 144 - ReturnValue 106 + Store 146(@entryPointOutput) 106 + Return FunctionEnd diff --git a/Test/hlsl.multiReturn.frag b/Test/hlsl.multiReturn.frag new file mode 100755 index 00000000..fdab7721 --- /dev/null +++ b/Test/hlsl.multiReturn.frag @@ -0,0 +1,19 @@ +struct S { + float f; + float3 v; + float3x3 m; +}; + +cbuffer bufName { + S s; +}; + +S foo() +{ + return s; +} + +void main() +{ + foo(); +} diff --git a/Test/remap.hlsl.templatetypes.everything.frag b/Test/remap.hlsl.templatetypes.everything.frag index bacd6f56..f48c98a7 100644 --- a/Test/remap.hlsl.templatetypes.everything.frag +++ b/Test/remap.hlsl.templatetypes.everything.frag @@ -1,5 +1,5 @@ -float4 main(float4 input) : COLOR0 +float main(float4 input) : COLOR0 { vector r00 = float4(1,2,3,4); // vector means float4 float4 r01 = vector(2,3,4,5); // vector means float4 diff --git a/Test/remap.hlsl.templatetypes.none.frag b/Test/remap.hlsl.templatetypes.none.frag index bacd6f56..f48c98a7 100644 --- a/Test/remap.hlsl.templatetypes.none.frag +++ b/Test/remap.hlsl.templatetypes.none.frag @@ -1,5 +1,5 @@ -float4 main(float4 input) : COLOR0 +float main(float4 input) : COLOR0 { vector r00 = float4(1,2,3,4); // vector means float4 float4 r01 = vector(2,3,4,5); // vector means float4 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 304acc34..4b7b8a2e 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1553" -#define GLSLANG_DATE "05-Oct-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1556" +#define GLSLANG_DATE "06-Oct-2016" diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 90b62d15..6d2a9545 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -140,6 +140,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.load.offset.dx10.frag", "main"}, {"hlsl.load.offsetarray.dx10.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, + {"hlsl.multiReturn.frag", "main"}, {"hlsl.matrixindex.frag", "main"}, {"hlsl.numericsuffixes.frag", "main"}, {"hlsl.overload.frag", "PixelShaderFunction"}, From 087a454af2ffedbb7bdf4656e1ea0ca05025f7dd Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 6 Oct 2016 16:56:54 -0600 Subject: [PATCH 039/130] HLSL: Add shape conversions for return values. --- Test/baseResults/hlsl.shapeConvRet.frag.out | 94 +++++++++++++++++++++ Test/hlsl.shapeConvRet.frag | 9 ++ glslang/Include/revision.h | 2 +- glslang/MachineIndependent/Intermediate.cpp | 1 + gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 13 ++- 6 files changed, 112 insertions(+), 8 deletions(-) create mode 100755 Test/baseResults/hlsl.shapeConvRet.frag.out create mode 100755 Test/hlsl.shapeConvRet.frag diff --git a/Test/baseResults/hlsl.shapeConvRet.frag.out b/Test/baseResults/hlsl.shapeConvRet.frag.out new file mode 100755 index 00000000..c2137870 --- /dev/null +++ b/Test/baseResults/hlsl.shapeConvRet.frag.out @@ -0,0 +1,94 @@ +hlsl.shapeConvRet.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: foo( (temp 3-component vector of int) +0:2 Function Parameters: +0:? Sequence +0:3 Branch: Return with expression +0:3 Constant: +0:3 13 (const int) +0:3 13 (const int) +0:3 13 (const int) +0:7 Function Definition: main(f1; (temp 4-component vector of float) +0:7 Function Parameters: +0:7 'f' (layout(location=0 ) in float) +0:? Sequence +0:8 Sequence +0:8 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:8 Construct vec4 (temp 4-component vector of float) +0:8 'f' (layout(location=0 ) in float) +0:8 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'f' (layout(location=0 ) in float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: foo( (temp 3-component vector of int) +0:2 Function Parameters: +0:? Sequence +0:3 Branch: Return with expression +0:3 Constant: +0:3 13 (const int) +0:3 13 (const int) +0:3 13 (const int) +0:7 Function Definition: main(f1; (temp 4-component vector of float) +0:7 Function Parameters: +0:7 'f' (layout(location=0 ) in float) +0:? Sequence +0:8 Sequence +0:8 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:8 Construct vec4 (temp 4-component vector of float) +0:8 'f' (layout(location=0 ) in float) +0:8 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'f' (layout(location=0 ) in float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 24 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 18 20 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "foo(" + Name 18 "@entryPointOutput" + Name 20 "f" + Decorate 18(@entryPointOutput) Location 0 + Decorate 20(f) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 3 + 8: TypeFunction 7(ivec3) + 11: 6(int) Constant 13 + 12: 7(ivec3) ConstantComposite 11 11 11 + 15: TypeFloat 32 + 16: TypeVector 15(float) 4 + 17: TypePointer Output 16(fvec4) +18(@entryPointOutput): 17(ptr) Variable Output + 19: TypePointer Input 15(float) + 20(f): 19(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 21: 15(float) Load 20(f) + 22: 16(fvec4) CompositeConstruct 21 21 21 21 + Store 18(@entryPointOutput) 22 + Return + FunctionEnd + 9(foo(): 7(ivec3) Function None 8 + 10: Label + ReturnValue 12 + FunctionEnd diff --git a/Test/hlsl.shapeConvRet.frag b/Test/hlsl.shapeConvRet.frag new file mode 100755 index 00000000..7d775582 --- /dev/null +++ b/Test/hlsl.shapeConvRet.frag @@ -0,0 +1,9 @@ +int3 foo() +{ + return 13; +} + +float4 main(float f) +{ + return f; +} diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 4b7b8a2e..4224a0a6 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1556" +#define GLSLANG_REVISION "Overload400-PrecQual.1559" #define GLSLANG_DATE "06-Oct-2016" diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 97556202..58bc8a5b 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -768,6 +768,7 @@ TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type, case EOpEqual: case EOpNotEqual: case EOpFunctionCall: + case EOpReturn: break; default: return node; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 6d2a9545..7b642171 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -175,6 +175,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.samplelevel.offsetarray.dx10.frag", "main"}, {"hlsl.semicolons.frag", "main"}, {"hlsl.shapeConv.frag", "main"}, + {"hlsl.shapeConvRet.frag", "main"}, {"hlsl.stringtoken.frag", "main"}, {"hlsl.string.frag", "main"}, {"hlsl.structin.vert", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index d02d193e..066426d4 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -888,18 +888,17 @@ void HlslParseContext::remapNonEntryPointIO(TFunction& function) TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value) { functionReturnsValue = true; - TIntermTyped* converted = value; if (currentFunctionType->getBasicType() == EbtVoid) { error(loc, "void function cannot return a value", "return", ""); return intermediate.addBranch(EOpReturn, loc); } else if (*currentFunctionType != value->getType()) { - converted = intermediate.addConversion(EOpReturn, *currentFunctionType, value); - if (converted) { - return intermediate.addBranch(EOpReturn, converted, loc); - } else { + value = intermediate.addConversion(EOpReturn, *currentFunctionType, value); + if (value && *currentFunctionType != value->getType()) + value = intermediate.addShapeConversion(EOpReturn, *currentFunctionType, value); + if (value == nullptr) { error(loc, "type does not match, or is not convertible to, the function's return type", "return", ""); - converted = value; + return value; } } @@ -912,7 +911,7 @@ TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermT assert(entryPointOutput != nullptr); // should have been error tested at the beginning TIntermSymbol* left = new TIntermSymbol(entryPointOutput->getUniqueId(), entryPointOutput->getName(), entryPointOutput->getType()); - TIntermNode* returnSequence = handleAssign(loc, EOpAssign, left, converted); + TIntermNode* returnSequence = handleAssign(loc, EOpAssign, left, value); returnSequence = intermediate.makeAggregate(returnSequence); returnSequence = intermediate.growAggregate(returnSequence, intermediate.addBranch(EOpReturn, loc), loc); returnSequence->getAsAggregate()->setOperator(EOpSequence); From 19bdf90eba71390f04bb85226337517df65d73e2 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 7 Oct 2016 11:50:25 -0600 Subject: [PATCH 040/130] SPV: Distinguish between SPV and non-SPV rules for member overlap. --- Test/baseResults/spv.offsets.frag.out | 59 ++++++++++++++++++++++ Test/spv.offsets.frag | 17 +++++++ glslang/Include/revision.h | 4 +- glslang/MachineIndependent/ParseHelper.cpp | 23 ++++++--- gtests/Spv.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 5 -- 6 files changed, 94 insertions(+), 15 deletions(-) create mode 100755 Test/baseResults/spv.offsets.frag.out create mode 100755 Test/spv.offsets.frag diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out new file mode 100755 index 00000000..b0091eaa --- /dev/null +++ b/Test/baseResults/spv.offsets.frag.out @@ -0,0 +1,59 @@ +spv.offsets.frag +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 15 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 7 "n1" + MemberName 7(n1) 0 "a" + MemberName 7(n1) 1 "b" + MemberName 7(n1) 2 "c" + MemberName 7(n1) 3 "d" + Name 9 "i1" + Name 12 "n2" + MemberName 12(n2) 0 "e" + MemberName 12(n2) 1 "f" + MemberName 12(n2) 2 "g" + MemberName 12(n2) 3 "h" + Name 14 "i2" + 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 + 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 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7(n1): TypeStruct 6(int) 6(int) 6(int) 6(int) + 8: TypePointer Uniform 7(n1) + 9(i1): 8(ptr) Variable Uniform + 10: TypeFloat 32 + 11: TypeVector 10(float) 3 + 12(n2): TypeStruct 11(fvec3) 11(fvec3) 11(fvec3) 11(fvec3) + 13: TypePointer Uniform 12(n2) + 14(i2): 13(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/spv.offsets.frag b/Test/spv.offsets.frag new file mode 100755 index 00000000..0a1c008c --- /dev/null +++ b/Test/spv.offsets.frag @@ -0,0 +1,17 @@ +#version 450 + +layout(set = 0, binding = 0, std140) uniform n1 { + layout(offset = 8) int a; + layout(offset = 4) int b; + layout(offset = 0) int c; + layout(offset = 12) int d; +} i1; + +layout(set = 0, binding = 1, std430) buffer n2 { + layout(offset = 32) vec3 e; + vec3 f; + layout(offset = 16) vec3 g; + layout(offset = 0) vec3 h; +} i2; + +void main() {} \ No newline at end of file diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 4224a0a6..0521e2e8 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1559" -#define GLSLANG_DATE "06-Oct-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1560" +#define GLSLANG_DATE "07-Oct-2016" diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 13f277d7..68d070c7 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -5946,16 +5946,23 @@ void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typ if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) error(memberLoc, "must be a multiple of the member's alignment", "offset", ""); - // "It is a compile-time error to specify an offset that is smaller than the offset of the previous + // 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" - if (memberQualifier.layoutOffset < offset) - error(memberLoc, "cannot lie in previous members", "offset", ""); + if (spvVersion.spv == 0) { + if (memberQualifier.layoutOffset < offset) + error(memberLoc, "cannot lie in previous members", "offset", ""); - // "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. - // "The actual offset of a member is computed as - // follows: If offset was declared, start with that offset, otherwise start with the next available offset." - offset = std::max(offset, memberQualifier.layoutOffset); + // "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. + // "The actual offset of a member is computed as + // follows: If offset was declared, start with that offset, otherwise start with the next available offset." + offset = std::max(offset, memberQualifier.layoutOffset); + } else { + // TODO: Vulkan: "It is a compile-time error to have any offset, explicit or assigned, + // that lies within another member of the block." + + offset = memberQualifier.layoutOffset; + } } // "The actual alignment of a member will be the greater of the specified align alignment and the standard diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 533733df..f109911e 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -230,6 +230,7 @@ INSTANTIATE_TEST_CASE_P( "spv.newTexture.frag", "spv.noDeadDecorations.vert", "spv.nonSquare.vert", + "spv.offsets.frag", "spv.Operations.frag", "spv.intOps.vert", "spv.precision.frag", diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 066426d4..1fe40929 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4731,11 +4731,6 @@ void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TType if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) error(memberLoc, "must be a multiple of the member's alignment", "offset", ""); - // "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" - if (memberQualifier.layoutOffset < offset) - error(memberLoc, "cannot lie in previous members", "offset", ""); - // "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. // "The actual offset of a member is computed as From 49ad2b72a1826801ca1f1ab240b4286b23e23925 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 8 Oct 2016 22:07:20 -0300 Subject: [PATCH 041/130] Address some compiler warnings. - Add explicit casts from long to int. - Comment out method argument names that are unused. - Always initialize a boolean variable before it's read. --- glslang/Include/InfoSink.h | 2 +- glslang/MachineIndependent/ParseContextBase.cpp | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 2 +- glslang/MachineIndependent/preprocessor/PpTokens.cpp | 4 ++-- glslang/MachineIndependent/propagateNoContraction.cpp | 2 +- hlsl/hlslParseHelper.cpp | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/glslang/Include/InfoSink.h b/glslang/Include/InfoSink.h index aa02f914..ee605ab3 100644 --- a/glslang/Include/InfoSink.h +++ b/glslang/Include/InfoSink.h @@ -74,7 +74,7 @@ public: TInfoSinkBase& operator<<(const char* s) { append(s); return *this; } TInfoSinkBase& operator<<(int n) { append(String(n)); return *this; } TInfoSinkBase& operator<<(unsigned int n) { append(String(n)); return *this; } - TInfoSinkBase& operator<<(long unsigned int n) { append(String(n)); return *this; } + TInfoSinkBase& operator<<(long unsigned int n) { append(String((int)n)); return *this; } TInfoSinkBase& operator<<(float n) { const int size = 40; char buf[size]; snprintf(buf, size, (fabs(n) > 1e-8 && fabs(n) < 1e8) || n == 0.0f ? "%f" : "%g", n); append(buf); diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index b92effce..fe2b8e6b 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -320,8 +320,8 @@ bool TParseContextBase::insertGlobalUniformBlock() if (globalUniformBlock == nullptr) return true; - int numMembers = globalUniformBlock->getType().getStruct()->size(); - bool inserted; + int numMembers = (int)globalUniformBlock->getType().getStruct()->size(); + bool inserted = false; if (firstNewMember == 0) { // This is the first request; we need a normal symbol table insert inserted = symbolTable.insert(*globalUniformBlock); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 68d070c7..949ba007 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1813,7 +1813,7 @@ TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPu } // Handle seeing a precision qualifier in the grammar. -void TParseContext::handlePrecisionQualifier(const TSourceLoc& loc, TQualifier& qualifier, TPrecisionQualifier precision) +void TParseContext::handlePrecisionQualifier(const TSourceLoc& /*loc*/, TQualifier& qualifier, TPrecisionQualifier precision) { if (obeyPrecisionQualifiers()) qualifier.precision = precision; diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 48e2e7a3..23b617d3 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -235,9 +235,9 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) case PpAtomConstInt: if (len > 0 && tokenText[0] == '0') { if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X')) - ppToken->ival = strtol(ppToken->name, 0, 16); + ppToken->ival = (int)strtol(ppToken->name, 0, 16); else - ppToken->ival = strtol(ppToken->name, 0, 8); + ppToken->ival = (int)strtol(ppToken->name, 0, 8); } else ppToken->ival = atoi(ppToken->name); break; diff --git a/glslang/MachineIndependent/propagateNoContraction.cpp b/glslang/MachineIndependent/propagateNoContraction.cpp index e599f4d9..caa6e200 100644 --- a/glslang/MachineIndependent/propagateNoContraction.cpp +++ b/glslang/MachineIndependent/propagateNoContraction.cpp @@ -670,7 +670,7 @@ protected: // Gets the struct dereference index that leads to 'precise' object. ObjectAccessChain precise_accesschain_index_str = getFrontElement(remained_accesschain_); - unsigned precise_accesschain_index = strtoul(precise_accesschain_index_str.c_str(), nullptr, 10); + unsigned precise_accesschain_index = (unsigned)strtoul(precise_accesschain_index_str.c_str(), nullptr, 10); // Gets the node pointed by the access chain index extracted before. glslang::TIntermTyped* potential_precise_node = node->getSequence()[precise_accesschain_index]->getAsTyped(); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 1fe40929..4eda44d7 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -966,7 +966,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op // Track how many items there are to copy. if (left->getType().isStruct()) - memberCount = left->getType().getStruct()->size(); + memberCount = (int)left->getType().getStruct()->size(); if (left->getType().isArray()) memberCount = left->getType().getCumulativeArraySize(); @@ -3980,7 +3980,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu // 'parseType' is the type part of the declaration (to the left) // 'arraySizes' is the arrayness tagged on the identifier (to the right) // -void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier, const TType& parseType, TArraySizes* arraySizes) +void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier, const TType& parseType, TArraySizes* /*arraySizes*/) { TType type; type.deepCopy(parseType); From 4c25709f457e68f521d55f593edc2815e3dfc878 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Mon, 10 Oct 2016 15:38:15 +0800 Subject: [PATCH 042/130] Parser: Some function prototypes of interpolateAtXXX are incorrect. --- Test/baseResults/spv.float16.frag.out | 197 +++++++++++----------- Test/spv.float16.frag | 2 +- glslang/MachineIndependent/Initialize.cpp | 16 +- 3 files changed, 107 insertions(+), 108 deletions(-) diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out index 3c5b7815..f1fe6e4e 100644 --- a/Test/baseResults/spv.float16.frag.out +++ b/Test/baseResults/spv.float16.frag.out @@ -7,7 +7,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 535 +// Id's are bound by 534 Capability Shader Capability Float16 @@ -81,77 +81,77 @@ Linked fragment stage: Name 445 "f16v2" Name 463 "f16v" Name 465 "if16v" - Name 515 "S" - MemberName 515(S) 0 "x" - MemberName 515(S) 1 "y" - MemberName 515(S) 2 "z" - Name 517 "B1" - MemberName 517(B1) 0 "a" - MemberName 517(B1) 1 "b" - MemberName 517(B1) 2 "c" - MemberName 517(B1) 3 "d" - MemberName 517(B1) 4 "e" - MemberName 517(B1) 5 "f" - MemberName 517(B1) 6 "g" - MemberName 517(B1) 7 "h" - Name 519 "" - Name 522 "S" - MemberName 522(S) 0 "x" - MemberName 522(S) 1 "y" - MemberName 522(S) 2 "z" - Name 524 "B2" - MemberName 524(B2) 0 "o" - MemberName 524(B2) 1 "p" - MemberName 524(B2) 2 "q" - MemberName 524(B2) 3 "r" - MemberName 524(B2) 4 "s" - MemberName 524(B2) 5 "t" - MemberName 524(B2) 6 "u" - MemberName 524(B2) 7 "v" - Name 526 "" - Decorate 513 ArrayStride 16 - Decorate 514 ArrayStride 32 - MemberDecorate 515(S) 0 Offset 0 - MemberDecorate 515(S) 1 Offset 4 - MemberDecorate 515(S) 2 Offset 8 - Decorate 516 ArrayStride 16 - MemberDecorate 517(B1) 0 Offset 0 - MemberDecorate 517(B1) 1 Offset 4 - MemberDecorate 517(B1) 2 Offset 8 - MemberDecorate 517(B1) 3 Offset 16 - MemberDecorate 517(B1) 4 ColMajor - MemberDecorate 517(B1) 4 Offset 48 - MemberDecorate 517(B1) 4 MatrixStride 16 - MemberDecorate 517(B1) 5 ColMajor - MemberDecorate 517(B1) 5 Offset 80 - MemberDecorate 517(B1) 5 MatrixStride 16 - MemberDecorate 517(B1) 6 Offset 144 - MemberDecorate 517(B1) 7 Offset 160 - Decorate 517(B1) Block - Decorate 519 DescriptorSet 0 - Decorate 520 ArrayStride 2 - Decorate 521 ArrayStride 12 - MemberDecorate 522(S) 0 Offset 0 - MemberDecorate 522(S) 1 Offset 4 - MemberDecorate 522(S) 2 Offset 8 - Decorate 523 ArrayStride 16 - MemberDecorate 524(B2) 0 Offset 0 - MemberDecorate 524(B2) 1 Offset 4 - MemberDecorate 524(B2) 2 Offset 8 - MemberDecorate 524(B2) 3 Offset 14 - MemberDecorate 524(B2) 4 RowMajor - MemberDecorate 524(B2) 4 Offset 20 - MemberDecorate 524(B2) 4 MatrixStride 4 - MemberDecorate 524(B2) 5 RowMajor - MemberDecorate 524(B2) 5 Offset 32 - MemberDecorate 524(B2) 5 MatrixStride 4 - MemberDecorate 524(B2) 6 Offset 56 - MemberDecorate 524(B2) 7 Offset 72 - Decorate 524(B2) BufferBlock - Decorate 526 DescriptorSet 0 - Decorate 527 SpecId 100 - Decorate 528 SpecId 101 - Decorate 529 SpecId 102 + Name 514 "S" + MemberName 514(S) 0 "x" + MemberName 514(S) 1 "y" + MemberName 514(S) 2 "z" + Name 516 "B1" + MemberName 516(B1) 0 "a" + MemberName 516(B1) 1 "b" + MemberName 516(B1) 2 "c" + MemberName 516(B1) 3 "d" + MemberName 516(B1) 4 "e" + MemberName 516(B1) 5 "f" + MemberName 516(B1) 6 "g" + MemberName 516(B1) 7 "h" + Name 518 "" + Name 521 "S" + MemberName 521(S) 0 "x" + MemberName 521(S) 1 "y" + MemberName 521(S) 2 "z" + Name 523 "B2" + MemberName 523(B2) 0 "o" + MemberName 523(B2) 1 "p" + MemberName 523(B2) 2 "q" + MemberName 523(B2) 3 "r" + MemberName 523(B2) 4 "s" + MemberName 523(B2) 5 "t" + MemberName 523(B2) 6 "u" + MemberName 523(B2) 7 "v" + Name 525 "" + Decorate 512 ArrayStride 16 + Decorate 513 ArrayStride 32 + MemberDecorate 514(S) 0 Offset 0 + MemberDecorate 514(S) 1 Offset 4 + MemberDecorate 514(S) 2 Offset 8 + Decorate 515 ArrayStride 16 + MemberDecorate 516(B1) 0 Offset 0 + MemberDecorate 516(B1) 1 Offset 4 + MemberDecorate 516(B1) 2 Offset 8 + MemberDecorate 516(B1) 3 Offset 16 + MemberDecorate 516(B1) 4 ColMajor + MemberDecorate 516(B1) 4 Offset 48 + MemberDecorate 516(B1) 4 MatrixStride 16 + MemberDecorate 516(B1) 5 ColMajor + MemberDecorate 516(B1) 5 Offset 80 + MemberDecorate 516(B1) 5 MatrixStride 16 + MemberDecorate 516(B1) 6 Offset 144 + MemberDecorate 516(B1) 7 Offset 160 + Decorate 516(B1) Block + Decorate 518 DescriptorSet 0 + Decorate 519 ArrayStride 2 + Decorate 520 ArrayStride 12 + MemberDecorate 521(S) 0 Offset 0 + MemberDecorate 521(S) 1 Offset 4 + MemberDecorate 521(S) 2 Offset 8 + Decorate 522 ArrayStride 16 + MemberDecorate 523(B2) 0 Offset 0 + MemberDecorate 523(B2) 1 Offset 4 + MemberDecorate 523(B2) 2 Offset 8 + MemberDecorate 523(B2) 3 Offset 14 + MemberDecorate 523(B2) 4 RowMajor + MemberDecorate 523(B2) 4 Offset 20 + MemberDecorate 523(B2) 4 MatrixStride 4 + MemberDecorate 523(B2) 5 RowMajor + MemberDecorate 523(B2) 5 Offset 32 + MemberDecorate 523(B2) 5 MatrixStride 4 + MemberDecorate 523(B2) 6 Offset 56 + MemberDecorate 523(B2) 7 Offset 72 + Decorate 523(B2) BufferBlock + Decorate 525 DescriptorSet 0 + Decorate 526 SpecId 100 + Decorate 527 SpecId 101 + Decorate 528 SpecId 102 2: TypeVoid 3: TypeFunction 2 28: TypeFloat 16 @@ -210,32 +210,31 @@ Linked fragment stage: 465(if16v): 464(ptr) Variable Input 466: TypePointer Input 28(float) 503: 183(int) Constant 1 - 508: TypeVector 164(float) 2 - 509: 164(float) Constant 1056964608 - 510: 508(fvec2) ConstantComposite 509 509 - 512: 33(int) Constant 2 - 513: TypeArray 28(float) 512 - 514: TypeArray 406 512 - 515(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) - 516: TypeArray 515(S) 512 - 517(B1): TypeStruct 28(float) 29(fvec2) 151(fvec3) 513 406 514 515(S) 516 - 518: TypePointer Uniform 517(B1) - 519: 518(ptr) Variable Uniform - 520: TypeArray 28(float) 512 - 521: TypeArray 406 512 - 522(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) - 523: TypeArray 522(S) 512 - 524(B2): TypeStruct 28(float) 29(fvec2) 151(fvec3) 520 406 521 522(S) 523 - 525: TypePointer Uniform 524(B2) - 526: 525(ptr) Variable Uniform - 527: 28(float) SpecConstant 12288 - 528: 164(float) SpecConstant 1048576000 - 529: 172(float) SpecConstant 0 1071644672 - 530: 164(float) SpecConstantOp 115 527 - 531: 164(float) SpecConstantOp 115 527 - 532: 172(float) SpecConstantOp 115 531 + 508: 28(float) Constant 14336 + 509: 29(fvec2) ConstantComposite 508 508 + 511: 33(int) Constant 2 + 512: TypeArray 28(float) 511 + 513: TypeArray 406 511 + 514(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) + 515: TypeArray 514(S) 511 + 516(B1): TypeStruct 28(float) 29(fvec2) 151(fvec3) 512 406 513 514(S) 515 + 517: TypePointer Uniform 516(B1) + 518: 517(ptr) Variable Uniform + 519: TypeArray 28(float) 511 + 520: TypeArray 406 511 + 521(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) + 522: TypeArray 521(S) 511 + 523(B2): TypeStruct 28(float) 29(fvec2) 151(fvec3) 519 406 520 521(S) 522 + 524: TypePointer Uniform 523(B2) + 525: 524(ptr) Variable Uniform + 526: 28(float) SpecConstant 12288 + 527: 164(float) SpecConstant 1048576000 + 528: 172(float) SpecConstant 0 1071644672 + 529: 164(float) SpecConstantOp 115 526 + 530: 164(float) SpecConstantOp 115 526 + 531: 172(float) SpecConstantOp 115 530 + 532: 28(float) SpecConstantOp 115 527 533: 28(float) SpecConstantOp 115 528 - 534: 28(float) SpecConstantOp 115 529 4(main): 2 Function None 3 5: Label Return @@ -831,7 +830,7 @@ Linked fragment stage: 506: 151(fvec3) Load 463(f16v) 507: 151(fvec3) VectorShuffle 506 505 3 4 2 Store 463(f16v) 507 - 511: 151(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 510 - Store 463(f16v) 511 + 510: 151(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 509 + Store 463(f16v) 510 Return FunctionEnd diff --git a/Test/spv.float16.frag b/Test/spv.float16.frag index a88e2f1c..7c94a515 100644 --- a/Test/spv.float16.frag +++ b/Test/spv.float16.frag @@ -302,5 +302,5 @@ void builtinFragProcFuncs() // Interpolation f16v.x = interpolateAtCentroid(if16v.x); f16v.xy = interpolateAtSample(if16v.xy, 1); - f16v = interpolateAtOffset(if16v, vec2(0.5)); + f16v = interpolateAtOffset(if16v, f16vec2(0.5hf)); } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 0cead64e..c8739535 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -2336,10 +2336,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uvec3 interpolateAtVertexAMD(uvec3, uint);" "uvec4 interpolateAtVertexAMD(uvec4, uint);" - "uint interpolateAtVertexAMD(float16_t, uint);" - "uvec2 interpolateAtVertexAMD(f16vec2, uint);" - "uvec3 interpolateAtVertexAMD(f16vec3, uint);" - "uvec4 interpolateAtVertexAMD(f16vec4, uint);" + "float16_t interpolateAtVertexAMD(float16_t, uint);" + "f16vec2 interpolateAtVertexAMD(f16vec2, uint);" + "f16vec3 interpolateAtVertexAMD(f16vec3, uint);" + "f16vec4 interpolateAtVertexAMD(f16vec4, uint);" "\n"); } @@ -2402,10 +2402,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "f16vec3 interpolateAtSample(f16vec3, int);" "f16vec4 interpolateAtSample(f16vec4, int);" - "float16_t interpolateAtOffset(float16_t, vec2);" - "f16vec2 interpolateAtOffset(f16vec2, vec2);" - "f16vec3 interpolateAtOffset(f16vec3, vec2);" - "f16vec4 interpolateAtOffset(f16vec4, vec2);" + "float16_t interpolateAtOffset(float16_t, f16vec2);" + "f16vec2 interpolateAtOffset(f16vec2, f16vec2);" + "f16vec3 interpolateAtOffset(f16vec3, f16vec2);" + "f16vec4 interpolateAtOffset(f16vec4, f16vec2);" "\n"); } From f3b27471f8e28bfcff8c8783679fd2638d6ef3bf Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 22 Jul 2016 18:15:31 +0800 Subject: [PATCH 043/130] SPV: Implement extension SPV_KHR_shader_draw_parameters. --- SPIRV/GLSL.ext.KHR.h | 21 +--- SPIRV/GlslangToSpv.cpp | 14 ++- SPIRV/doc.cpp | 6 +- SPIRV/spirv.hpp | 16 ++- .../baseResults/spv.shaderDrawParams.vert.out | 108 ++++++++++++++++++ Test/spv.shaderDrawParams.vert | 16 +++ gtests/Spv.FromFile.cpp | 1 + 7 files changed, 158 insertions(+), 24 deletions(-) create mode 100644 Test/baseResults/spv.shaderDrawParams.vert.out create mode 100644 Test/spv.shaderDrawParams.vert diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 7ce795f4..344dd398 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -27,25 +27,10 @@ #ifndef GLSLextKHR_H #define GLSLextKHR_H -enum BuiltIn; -enum Op; -enum Capability; - -static const int GLSLextKHRVersion = 100; -static const int GLSLextKHRRevision = 1; - // SPV_KHR_shader_ballot -static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; +static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; -static const BuiltIn BuiltInSubgroupEqMaskKHR = static_cast(4416); -static const BuiltIn BuiltInSubgroupGeMaskKHR = static_cast(4417); -static const BuiltIn BuiltInSubgroupGtMaskKHR = static_cast(4418); -static const BuiltIn BuiltInSubgroupLeMaskKHR = static_cast(4419); -static const BuiltIn BuiltInSubgroupLtMaskKHR = static_cast(4420); - -static const Op OpSubgroupBallotKHR = static_cast(4421); -static const Op OpSubgroupFirstInvocationKHR = static_cast(4422); - -static const Capability CapabilitySubgroupBallotKHR = static_cast(4423); +// SPV_KHR_shader_draw_parameters +static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 5ecb6ab9..9c8b8b93 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -498,13 +498,21 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvInstanceId: return spv::BuiltInInstanceId; case glslang::EbvVertexIndex: return spv::BuiltInVertexIndex; case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex; + case glslang::EbvBaseVertex: + builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addCapability(spv::CapabilityDrawParameters); + return spv::BuiltInBaseVertex; + case glslang::EbvBaseInstance: + builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addCapability(spv::CapabilityDrawParameters); + return spv::BuiltInBaseInstance; case glslang::EbvDrawId: - // TODO: Add SPIR-V builtin ID. - logger->missingFunctionality("shader draw parameters"); - return spv::BuiltInMax; + builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addCapability(spv::CapabilityDrawParameters); + return spv::BuiltInDrawIndex; case glslang::EbvPrimitiveId: if (glslangIntermediate->getStage() == EShLangFragment) diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index d2161dd8..0e68c7ef 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -48,7 +48,6 @@ namespace spv { extern "C" { // Include C-based headers that don't have a namespace - #include "GLSL.ext.KHR.h" #ifdef AMD_EXTENSIONS #include "GLSL.ext.AMD.h" #endif @@ -319,6 +318,10 @@ const char* BuiltInString(int builtIn) case 4419: return "SubgroupLeMaskKHR"; case 4420: return "SubgroupLtMaskKHR"; + case 4424: return "BaseVertex"; + case 4425: return "BaseInstance"; + case 4426: return "DrawIndex"; + #ifdef AMD_EXTENSIONS case 4992: return "BaryCoordNoPerspAMD"; case 4993: return "BaryCoordNoPerspCentroidAMD"; @@ -808,6 +811,7 @@ const char* CapabilityString(int info) default: return "Bad"; case 4423: return "SubgroupBallotKHR"; + case 4427: return "DrawParameters"; } } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index e3d13425..bb3c3f4c 100755 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -47,11 +47,11 @@ namespace spv { typedef unsigned int Id; #define SPV_VERSION 0x10000 -#define SPV_REVISION 6 +#define SPV_REVISION 8 static const unsigned int MagicNumber = 0x07230203; static const unsigned int Version = 0x00010000; -static const unsigned int Revision = 6; +static const unsigned int Revision = 8; static const unsigned int OpCodeMask = 0xffff; static const unsigned int WordCountShift = 16; @@ -420,6 +420,14 @@ enum BuiltIn { BuiltInSubgroupLocalInvocationId = 41, BuiltInVertexIndex = 42, BuiltInInstanceIndex = 43, + BuiltInSubgroupEqMaskKHR = 4416, + BuiltInSubgroupGeMaskKHR = 4417, + BuiltInSubgroupGtMaskKHR = 4418, + BuiltInSubgroupLeMaskKHR = 4419, + BuiltInSubgroupLtMaskKHR = 4420, + BuiltInBaseVertex = 4424, + BuiltInBaseInstance = 4425, + BuiltInDrawIndex = 4426, BuiltInMax = 0x7fffffff, }; @@ -595,6 +603,8 @@ enum Capability { CapabilityStorageImageReadWithoutFormat = 55, CapabilityStorageImageWriteWithoutFormat = 56, CapabilityMultiViewport = 57, + CapabilitySubgroupBallotKHR = 4423, + CapabilityDrawParameters = 4427, CapabilityMax = 0x7fffffff, }; @@ -893,6 +903,8 @@ enum Op { OpAtomicFlagTestAndSet = 318, OpAtomicFlagClear = 319, OpImageSparseRead = 320, + OpSubgroupBallotKHR = 4421, + OpSubgroupFirstInvocationKHR = 4422, OpMax = 0x7fffffff, }; diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out new file mode 100644 index 00000000..ad538107 --- /dev/null +++ b/Test/baseResults/spv.shaderDrawParams.vert.out @@ -0,0 +1,108 @@ +spv.shaderDrawParams.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked vertex stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 53 + + Capability Shader + Capability DrawParameters + Extension "SPV_KHR_shader_draw_parameters" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 9 16 29 37 + Source GLSL 450 + SourceExtension "GL_ARB_shader_draw_parameters" + Name 4 "main" + Name 9 "gl_BaseVertexARB" + Name 16 "gl_BaseInstanceARB" + Name 27 "gl_PerVertex" + MemberName 27(gl_PerVertex) 0 "gl_Position" + MemberName 27(gl_PerVertex) 1 "gl_PointSize" + MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 27(gl_PerVertex) 3 "gl_CullDistance" + Name 29 "" + Name 34 "Block" + MemberName 34(Block) 0 "pos" + Name 36 "block" + Name 37 "gl_DrawIDARB" + Decorate 9(gl_BaseVertexARB) BuiltIn BaseVertex + Decorate 16(gl_BaseInstanceARB) BuiltIn BaseInstance + 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 + Decorate 36(block) Binding 0 + Decorate 37(gl_DrawIDARB) BuiltIn DrawIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeBool + 7: TypeInt 32 1 + 8: TypePointer Input 7(int) +9(gl_BaseVertexARB): 8(ptr) Variable Input + 11: 7(int) Constant 0 +16(gl_BaseInstanceARB): 8(ptr) Variable Input + 22: TypeFloat 32 + 23: TypeVector 22(float) 4 + 24: TypeInt 32 0 + 25: 24(int) Constant 1 + 26: TypeArray 22(float) 25 +27(gl_PerVertex): TypeStruct 23(fvec4) 22(float) 26 26 + 28: TypePointer Output 27(gl_PerVertex) + 29: 28(ptr) Variable Output + 30: 24(int) Constant 4 + 31: TypeArray 23(fvec4) 30 + 32: 24(int) Constant 2 + 33: TypeArray 31 32 + 34(Block): TypeStruct 33 + 35: TypePointer Uniform 34(Block) + 36(block): 35(ptr) Variable Uniform +37(gl_DrawIDARB): 8(ptr) Variable Input + 39: 7(int) Constant 4 + 41: TypePointer Uniform 23(fvec4) + 44: TypePointer Output 23(fvec4) + 47: 7(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + 10: 7(int) Load 9(gl_BaseVertexARB) + 12: 6(bool) SGreaterThan 10 11 + 13: 6(bool) LogicalNot 12 + SelectionMerge 15 None + BranchConditional 13 14 15 + 14: Label + 17: 7(int) Load 16(gl_BaseInstanceARB) + 18: 6(bool) SGreaterThan 17 11 + Branch 15 + 15: Label + 19: 6(bool) Phi 12 5 18 14 + SelectionMerge 21 None + BranchConditional 19 20 46 + 20: Label + 38: 7(int) Load 37(gl_DrawIDARB) + 40: 7(int) SMod 38 39 + 42: 41(ptr) AccessChain 36(block) 11 11 40 + 43: 23(fvec4) Load 42 + 45: 44(ptr) AccessChain 29 11 + Store 45 43 + Branch 21 + 46: Label + 48: 7(int) Load 37(gl_DrawIDARB) + 49: 7(int) SMod 48 39 + 50: 41(ptr) AccessChain 36(block) 11 47 49 + 51: 23(fvec4) Load 50 + 52: 44(ptr) AccessChain 29 11 + Store 52 51 + Branch 21 + 21: Label + Return + FunctionEnd diff --git a/Test/spv.shaderDrawParams.vert b/Test/spv.shaderDrawParams.vert new file mode 100644 index 00000000..15ae2953 --- /dev/null +++ b/Test/spv.shaderDrawParams.vert @@ -0,0 +1,16 @@ +#version 450 core + +#extension GL_ARB_shader_draw_parameters: enable + +layout(binding = 0) uniform Block +{ + vec4 pos[2][4]; +} block; + +void main() +{ + if ((gl_BaseVertexARB > 0) || (gl_BaseInstanceARB > 0)) + gl_Position = block.pos[0][gl_DrawIDARB % 4]; + else + gl_Position = block.pos[1][gl_DrawIDARB % 4]; +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index f109911e..64312a3a 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -237,6 +237,7 @@ INSTANTIATE_TEST_CASE_P( "spv.prepost.frag", "spv.qualifiers.vert", "spv.shaderBallot.comp", + "spv.shaderDrawParams.vert", "spv.shaderGroupVote.comp", "spv.shiftOps.frag", "spv.simpleFunctionCall.frag", From f887785990877e66657ad5d560490520d9c7b4cd Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Tue, 11 Oct 2016 16:16:47 -0300 Subject: [PATCH 044/130] fixup! Address some compiler warnings. --- glslang/Include/InfoSink.h | 1 - 1 file changed, 1 deletion(-) diff --git a/glslang/Include/InfoSink.h b/glslang/Include/InfoSink.h index ee605ab3..0cbd99bd 100644 --- a/glslang/Include/InfoSink.h +++ b/glslang/Include/InfoSink.h @@ -74,7 +74,6 @@ public: TInfoSinkBase& operator<<(const char* s) { append(s); return *this; } TInfoSinkBase& operator<<(int n) { append(String(n)); return *this; } TInfoSinkBase& operator<<(unsigned int n) { append(String(n)); return *this; } - TInfoSinkBase& operator<<(long unsigned int n) { append(String((int)n)); return *this; } TInfoSinkBase& operator<<(float n) { const int size = 40; char buf[size]; snprintf(buf, size, (fabs(n) > 1e-8 && fabs(n) < 1e8) || n == 0.0f ? "%f" : "%g", n); append(buf); From 7208a974aa4912a2323af897ad299facb23ba79a Mon Sep 17 00:00:00 2001 From: Maciej Jesionowski Date: Wed, 12 Oct 2016 15:40:37 +0200 Subject: [PATCH 045/130] SPV: Use SampledImage with OpImageQueryLod Khronos SPIR-V issue #74 --- SPIRV/GlslangToSpv.cpp | 5 +- .../hlsl.calculatelod.dx10.frag.out | 349 ++++++----- Test/baseResults/spv.queryL.frag.out | 551 +++++++++--------- 3 files changed, 442 insertions(+), 463 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 9c8b8b93..245715fc 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2745,9 +2745,10 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // Check for queries if (cracked.query) { - // a sampled image needs to have the image extracted first - if (builder.isSampledImage(params.sampler)) + // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first + if (node->getOp() != glslang::EOpTextureQueryLod && builder.isSampledImage(params.sampler)) params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); + switch (node->getOp()) { case glslang::EOpImageQuerySize: case glslang::EOpTextureQuerySize: diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index 9d061d29..ff18441c 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -345,7 +345,7 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 150 +// Id's are bound by 141 Capability Shader Capability Sampled1D @@ -353,51 +353,51 @@ gl_FragCoord origin is upper left Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 141 145 + EntryPoint Fragment 4 "main" 132 136 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "txval10" Name 11 "g_tTex1df4a" Name 15 "g_sSamp" - Name 26 "txval11" - Name 29 "g_tTex1di4a" - Name 38 "txval12" - Name 42 "g_tTex1du4a" - Name 51 "txval20" - Name 54 "g_tTex2df4a" - Name 63 "txval21" - Name 66 "g_tTex2di4a" - Name 76 "txval22" - Name 79 "g_tTex2du4a" - Name 90 "txval40" - Name 93 "g_tTexcdf4a" - Name 103 "txval41" - Name 106 "g_tTexcdi4a" - Name 115 "txval42" - Name 118 "g_tTexcdu4a" - Name 131 "PS_OUTPUT" - MemberName 131(PS_OUTPUT) 0 "Color" - MemberName 131(PS_OUTPUT) 1 "Depth" - Name 133 "psout" - Name 141 "Color" - Name 145 "Depth" - Name 149 "g_tTex1df4" + Name 25 "txval11" + Name 28 "g_tTex1di4a" + Name 36 "txval12" + Name 40 "g_tTex1du4a" + Name 48 "txval20" + Name 51 "g_tTex2df4a" + Name 59 "txval21" + Name 62 "g_tTex2di4a" + Name 71 "txval22" + Name 74 "g_tTex2du4a" + Name 84 "txval40" + Name 87 "g_tTexcdf4a" + Name 96 "txval41" + Name 99 "g_tTexcdi4a" + Name 107 "txval42" + Name 110 "g_tTexcdu4a" + Name 122 "PS_OUTPUT" + MemberName 122(PS_OUTPUT) 0 "Color" + MemberName 122(PS_OUTPUT) 1 "Depth" + Name 124 "psout" + Name 132 "Color" + Name 136 "Depth" + Name 140 "g_tTex1df4" Decorate 11(g_tTex1df4a) DescriptorSet 0 Decorate 11(g_tTex1df4a) Binding 1 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 29(g_tTex1di4a) DescriptorSet 0 - Decorate 42(g_tTex1du4a) DescriptorSet 0 - Decorate 54(g_tTex2df4a) DescriptorSet 0 - Decorate 66(g_tTex2di4a) DescriptorSet 0 - Decorate 79(g_tTex2du4a) DescriptorSet 0 - Decorate 93(g_tTexcdf4a) DescriptorSet 0 - Decorate 106(g_tTexcdi4a) DescriptorSet 0 - Decorate 118(g_tTexcdu4a) DescriptorSet 0 - Decorate 141(Color) Location 0 - Decorate 145(Depth) BuiltIn FragDepth - Decorate 149(g_tTex1df4) DescriptorSet 0 - Decorate 149(g_tTex1df4) Binding 0 + Decorate 28(g_tTex1di4a) DescriptorSet 0 + Decorate 40(g_tTex1du4a) DescriptorSet 0 + Decorate 51(g_tTex2df4a) DescriptorSet 0 + Decorate 62(g_tTex2di4a) DescriptorSet 0 + Decorate 74(g_tTex2du4a) DescriptorSet 0 + Decorate 87(g_tTexcdf4a) DescriptorSet 0 + Decorate 99(g_tTexcdi4a) DescriptorSet 0 + Decorate 110(g_tTexcdu4a) DescriptorSet 0 + Decorate 132(Color) Location 0 + Decorate 136(Depth) BuiltIn FragDepth + Decorate 140(g_tTex1df4) DescriptorSet 0 + Decorate 140(g_tTex1df4) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -410,153 +410,144 @@ gl_FragCoord origin is upper left 15(g_sSamp): 14(ptr) Variable UniformConstant 17: TypeSampledImage 9 19: 6(float) Constant 1036831949 - 21: TypeVector 6(float) 2 - 23: TypeInt 32 1 - 24: 23(int) Constant 0 - 27: TypeImage 23(int) 1D array sampled format:Unknown - 28: TypePointer UniformConstant 27 - 29(g_tTex1di4a): 28(ptr) Variable UniformConstant - 32: TypeSampledImage 27 - 34: 6(float) Constant 1045220557 - 39: TypeInt 32 0 - 40: TypeImage 39(int) 1D array sampled format:Unknown - 41: TypePointer UniformConstant 40 - 42(g_tTex1du4a): 41(ptr) Variable UniformConstant - 45: TypeSampledImage 40 - 47: 6(float) Constant 1050253722 - 52: TypeImage 6(float) 2D array sampled format:Unknown - 53: TypePointer UniformConstant 52 - 54(g_tTex2df4a): 53(ptr) Variable UniformConstant - 57: TypeSampledImage 52 - 59: 21(fvec2) ConstantComposite 19 34 - 64: TypeImage 23(int) 2D array sampled format:Unknown - 65: TypePointer UniformConstant 64 - 66(g_tTex2di4a): 65(ptr) Variable UniformConstant - 69: TypeSampledImage 64 - 71: 6(float) Constant 1053609165 - 72: 21(fvec2) ConstantComposite 47 71 - 77: TypeImage 39(int) 2D array sampled format:Unknown - 78: TypePointer UniformConstant 77 - 79(g_tTex2du4a): 78(ptr) Variable UniformConstant - 82: TypeSampledImage 77 - 84: 6(float) Constant 1056964608 - 85: 6(float) Constant 1058642330 - 86: 21(fvec2) ConstantComposite 84 85 - 91: TypeImage 6(float) Cube array sampled format:Unknown - 92: TypePointer UniformConstant 91 - 93(g_tTexcdf4a): 92(ptr) Variable UniformConstant - 96: TypeSampledImage 91 - 98: TypeVector 6(float) 3 - 99: 98(fvec3) ConstantComposite 19 34 47 - 104: TypeImage 23(int) Cube array sampled format:Unknown - 105: TypePointer UniformConstant 104 -106(g_tTexcdi4a): 105(ptr) Variable UniformConstant - 109: TypeSampledImage 104 - 111: 98(fvec3) ConstantComposite 71 84 85 - 116: TypeImage 39(int) Cube array sampled format:Unknown - 117: TypePointer UniformConstant 116 -118(g_tTexcdu4a): 117(ptr) Variable UniformConstant - 121: TypeSampledImage 116 - 123: 6(float) Constant 1060320051 - 124: 6(float) Constant 1061997773 - 125: 6(float) Constant 1063675494 - 126: 98(fvec3) ConstantComposite 123 124 125 - 130: TypeVector 6(float) 4 - 131(PS_OUTPUT): TypeStruct 130(fvec4) 6(float) - 132: TypePointer Function 131(PS_OUTPUT) - 134: 6(float) Constant 1065353216 - 135: 130(fvec4) ConstantComposite 134 134 134 134 - 136: TypePointer Function 130(fvec4) - 138: 23(int) Constant 1 - 140: TypePointer Output 130(fvec4) - 141(Color): 140(ptr) Variable Output - 144: TypePointer Output 6(float) - 145(Depth): 144(ptr) Variable Output - 149(g_tTex1df4): 10(ptr) Variable UniformConstant + 20: TypeVector 6(float) 2 + 22: TypeInt 32 1 + 23: 22(int) Constant 0 + 26: TypeImage 22(int) 1D array sampled format:Unknown + 27: TypePointer UniformConstant 26 + 28(g_tTex1di4a): 27(ptr) Variable UniformConstant + 31: TypeSampledImage 26 + 33: 6(float) Constant 1045220557 + 37: TypeInt 32 0 + 38: TypeImage 37(int) 1D array sampled format:Unknown + 39: TypePointer UniformConstant 38 + 40(g_tTex1du4a): 39(ptr) Variable UniformConstant + 43: TypeSampledImage 38 + 45: 6(float) Constant 1050253722 + 49: TypeImage 6(float) 2D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2df4a): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 56: 20(fvec2) ConstantComposite 19 33 + 60: TypeImage 22(int) 2D array sampled format:Unknown + 61: TypePointer UniformConstant 60 + 62(g_tTex2di4a): 61(ptr) Variable UniformConstant + 65: TypeSampledImage 60 + 67: 6(float) Constant 1053609165 + 68: 20(fvec2) ConstantComposite 45 67 + 72: TypeImage 37(int) 2D array sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2du4a): 73(ptr) Variable UniformConstant + 77: TypeSampledImage 72 + 79: 6(float) Constant 1056964608 + 80: 6(float) Constant 1058642330 + 81: 20(fvec2) ConstantComposite 79 80 + 85: TypeImage 6(float) Cube array sampled format:Unknown + 86: TypePointer UniformConstant 85 + 87(g_tTexcdf4a): 86(ptr) Variable UniformConstant + 90: TypeSampledImage 85 + 92: TypeVector 6(float) 3 + 93: 92(fvec3) ConstantComposite 19 33 45 + 97: TypeImage 22(int) Cube array sampled format:Unknown + 98: TypePointer UniformConstant 97 + 99(g_tTexcdi4a): 98(ptr) Variable UniformConstant + 102: TypeSampledImage 97 + 104: 92(fvec3) ConstantComposite 67 79 80 + 108: TypeImage 37(int) Cube array sampled format:Unknown + 109: TypePointer UniformConstant 108 +110(g_tTexcdu4a): 109(ptr) Variable UniformConstant + 113: TypeSampledImage 108 + 115: 6(float) Constant 1060320051 + 116: 6(float) Constant 1061997773 + 117: 6(float) Constant 1063675494 + 118: 92(fvec3) ConstantComposite 115 116 117 + 121: TypeVector 6(float) 4 + 122(PS_OUTPUT): TypeStruct 121(fvec4) 6(float) + 123: TypePointer Function 122(PS_OUTPUT) + 125: 6(float) Constant 1065353216 + 126: 121(fvec4) ConstantComposite 125 125 125 125 + 127: TypePointer Function 121(fvec4) + 129: 22(int) Constant 1 + 131: TypePointer Output 121(fvec4) + 132(Color): 131(ptr) Variable Output + 135: TypePointer Output 6(float) + 136(Depth): 135(ptr) Variable Output + 140(g_tTex1df4): 10(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(txval10): 7(ptr) Variable Function - 26(txval11): 7(ptr) Variable Function - 38(txval12): 7(ptr) Variable Function - 51(txval20): 7(ptr) Variable Function - 63(txval21): 7(ptr) Variable Function - 76(txval22): 7(ptr) Variable Function - 90(txval40): 7(ptr) Variable Function - 103(txval41): 7(ptr) Variable Function - 115(txval42): 7(ptr) Variable Function - 133(psout): 132(ptr) Variable Function + 25(txval11): 7(ptr) Variable Function + 36(txval12): 7(ptr) Variable Function + 48(txval20): 7(ptr) Variable Function + 59(txval21): 7(ptr) Variable Function + 71(txval22): 7(ptr) Variable Function + 84(txval40): 7(ptr) Variable Function + 96(txval41): 7(ptr) Variable Function + 107(txval42): 7(ptr) Variable Function + 124(psout): 123(ptr) Variable Function 12: 9 Load 11(g_tTex1df4a) 16: 13 Load 15(g_sSamp) 18: 17 SampledImage 12 16 - 20: 9 Image 18 - 22: 21(fvec2) ImageQueryLod 20 19 - 25: 6(float) CompositeExtract 22 0 - Store 8(txval10) 25 - 30: 27 Load 29(g_tTex1di4a) - 31: 13 Load 15(g_sSamp) - 33: 32 SampledImage 30 31 - 35: 27 Image 33 - 36: 21(fvec2) ImageQueryLod 35 34 - 37: 6(float) CompositeExtract 36 0 - Store 26(txval11) 37 - 43: 40 Load 42(g_tTex1du4a) - 44: 13 Load 15(g_sSamp) - 46: 45 SampledImage 43 44 - 48: 40 Image 46 - 49: 21(fvec2) ImageQueryLod 48 47 - 50: 6(float) CompositeExtract 49 0 - Store 38(txval12) 50 - 55: 52 Load 54(g_tTex2df4a) - 56: 13 Load 15(g_sSamp) - 58: 57 SampledImage 55 56 - 60: 52 Image 58 - 61: 21(fvec2) ImageQueryLod 60 59 - 62: 6(float) CompositeExtract 61 0 - Store 51(txval20) 62 - 67: 64 Load 66(g_tTex2di4a) - 68: 13 Load 15(g_sSamp) - 70: 69 SampledImage 67 68 - 73: 64 Image 70 - 74: 21(fvec2) ImageQueryLod 73 72 - 75: 6(float) CompositeExtract 74 0 - Store 63(txval21) 75 - 80: 77 Load 79(g_tTex2du4a) - 81: 13 Load 15(g_sSamp) - 83: 82 SampledImage 80 81 - 87: 77 Image 83 - 88: 21(fvec2) ImageQueryLod 87 86 - 89: 6(float) CompositeExtract 88 0 - Store 76(txval22) 89 - 94: 91 Load 93(g_tTexcdf4a) - 95: 13 Load 15(g_sSamp) - 97: 96 SampledImage 94 95 - 100: 91 Image 97 - 101: 21(fvec2) ImageQueryLod 100 99 - 102: 6(float) CompositeExtract 101 0 - Store 90(txval40) 102 - 107: 104 Load 106(g_tTexcdi4a) - 108: 13 Load 15(g_sSamp) - 110: 109 SampledImage 107 108 - 112: 104 Image 110 - 113: 21(fvec2) ImageQueryLod 112 111 - 114: 6(float) CompositeExtract 113 0 - Store 103(txval41) 114 - 119: 116 Load 118(g_tTexcdu4a) - 120: 13 Load 15(g_sSamp) - 122: 121 SampledImage 119 120 - 127: 116 Image 122 - 128: 21(fvec2) ImageQueryLod 127 126 - 129: 6(float) CompositeExtract 128 0 - Store 115(txval42) 129 - 137: 136(ptr) AccessChain 133(psout) 24 - Store 137 135 - 139: 7(ptr) AccessChain 133(psout) 138 - Store 139 134 - 142: 136(ptr) AccessChain 133(psout) 24 - 143: 130(fvec4) Load 142 - Store 141(Color) 143 - 146: 7(ptr) AccessChain 133(psout) 138 - 147: 6(float) Load 146 - Store 145(Depth) 147 + 21: 20(fvec2) ImageQueryLod 18 19 + 24: 6(float) CompositeExtract 21 0 + Store 8(txval10) 24 + 29: 26 Load 28(g_tTex1di4a) + 30: 13 Load 15(g_sSamp) + 32: 31 SampledImage 29 30 + 34: 20(fvec2) ImageQueryLod 32 33 + 35: 6(float) CompositeExtract 34 0 + Store 25(txval11) 35 + 41: 38 Load 40(g_tTex1du4a) + 42: 13 Load 15(g_sSamp) + 44: 43 SampledImage 41 42 + 46: 20(fvec2) ImageQueryLod 44 45 + 47: 6(float) CompositeExtract 46 0 + Store 36(txval12) 47 + 52: 49 Load 51(g_tTex2df4a) + 53: 13 Load 15(g_sSamp) + 55: 54 SampledImage 52 53 + 57: 20(fvec2) ImageQueryLod 55 56 + 58: 6(float) CompositeExtract 57 0 + Store 48(txval20) 58 + 63: 60 Load 62(g_tTex2di4a) + 64: 13 Load 15(g_sSamp) + 66: 65 SampledImage 63 64 + 69: 20(fvec2) ImageQueryLod 66 68 + 70: 6(float) CompositeExtract 69 0 + Store 59(txval21) 70 + 75: 72 Load 74(g_tTex2du4a) + 76: 13 Load 15(g_sSamp) + 78: 77 SampledImage 75 76 + 82: 20(fvec2) ImageQueryLod 78 81 + 83: 6(float) CompositeExtract 82 0 + Store 71(txval22) 83 + 88: 85 Load 87(g_tTexcdf4a) + 89: 13 Load 15(g_sSamp) + 91: 90 SampledImage 88 89 + 94: 20(fvec2) ImageQueryLod 91 93 + 95: 6(float) CompositeExtract 94 0 + Store 84(txval40) 95 + 100: 97 Load 99(g_tTexcdi4a) + 101: 13 Load 15(g_sSamp) + 103: 102 SampledImage 100 101 + 105: 20(fvec2) ImageQueryLod 103 104 + 106: 6(float) CompositeExtract 105 0 + Store 96(txval41) 106 + 111: 108 Load 110(g_tTexcdu4a) + 112: 13 Load 15(g_sSamp) + 114: 113 SampledImage 111 112 + 119: 20(fvec2) ImageQueryLod 114 118 + 120: 6(float) CompositeExtract 119 0 + Store 107(txval42) 120 + 128: 127(ptr) AccessChain 124(psout) 23 + Store 128 126 + 130: 7(ptr) AccessChain 124(psout) 129 + Store 130 125 + 133: 127(ptr) AccessChain 124(psout) 23 + 134: 121(fvec4) Load 133 + Store 132(Color) 134 + 137: 7(ptr) AccessChain 124(psout) 129 + 138: 6(float) Load 137 + Store 136(Depth) 138 Return FunctionEnd diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out index 6d2b2b97..2236c66a 100755 --- a/Test/baseResults/spv.queryL.frag.out +++ b/Test/baseResults/spv.queryL.frag.out @@ -7,7 +7,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 237 +// Id's are bound by 224 Capability Shader Capability SampledRect @@ -24,48 +24,48 @@ Linked fragment stage: Name 9 "lod" Name 13 "samp1D" Name 16 "pf" - Name 24 "isamp2D" - Name 26 "pf2" - Name 36 "usamp3D" - Name 40 "pf3" - Name 49 "sampCube" - Name 59 "isamp1DA" - Name 69 "usamp2DA" - Name 79 "isampCubeA" - Name 89 "samp1Ds" - Name 99 "samp2Ds" - Name 109 "sampCubes" - Name 119 "samp1DAs" - Name 129 "samp2DAs" - Name 139 "sampCubeAs" - Name 147 "levels" - Name 154 "usamp2D" - Name 163 "isamp3D" - Name 172 "isampCube" - Name 186 "samp2DA" - Name 195 "usampCubeA" - Name 232 "sampBuf" - Name 236 "sampRect" + Name 23 "isamp2D" + Name 25 "pf2" + Name 34 "usamp3D" + Name 38 "pf3" + Name 46 "sampCube" + Name 55 "isamp1DA" + Name 64 "usamp2DA" + Name 73 "isampCubeA" + Name 82 "samp1Ds" + Name 91 "samp2Ds" + Name 100 "sampCubes" + Name 109 "samp1DAs" + Name 118 "samp2DAs" + Name 127 "sampCubeAs" + Name 134 "levels" + Name 141 "usamp2D" + Name 150 "isamp3D" + Name 159 "isampCube" + Name 173 "samp2DA" + Name 182 "usampCubeA" + Name 219 "sampBuf" + Name 223 "sampRect" Decorate 13(samp1D) DescriptorSet 0 - Decorate 24(isamp2D) DescriptorSet 0 - Decorate 36(usamp3D) DescriptorSet 0 - Decorate 49(sampCube) DescriptorSet 0 - Decorate 59(isamp1DA) DescriptorSet 0 - Decorate 69(usamp2DA) DescriptorSet 0 - Decorate 79(isampCubeA) DescriptorSet 0 - Decorate 89(samp1Ds) DescriptorSet 0 - Decorate 99(samp2Ds) DescriptorSet 0 - Decorate 109(sampCubes) DescriptorSet 0 - Decorate 119(samp1DAs) DescriptorSet 0 - Decorate 129(samp2DAs) DescriptorSet 0 - Decorate 139(sampCubeAs) DescriptorSet 0 - Decorate 154(usamp2D) DescriptorSet 0 - Decorate 163(isamp3D) DescriptorSet 0 - Decorate 172(isampCube) DescriptorSet 0 - Decorate 186(samp2DA) DescriptorSet 0 - Decorate 195(usampCubeA) DescriptorSet 0 - Decorate 232(sampBuf) DescriptorSet 0 - Decorate 236(sampRect) DescriptorSet 0 + Decorate 23(isamp2D) DescriptorSet 0 + Decorate 34(usamp3D) DescriptorSet 0 + Decorate 46(sampCube) DescriptorSet 0 + Decorate 55(isamp1DA) DescriptorSet 0 + Decorate 64(usamp2DA) DescriptorSet 0 + Decorate 73(isampCubeA) DescriptorSet 0 + Decorate 82(samp1Ds) DescriptorSet 0 + Decorate 91(samp2Ds) DescriptorSet 0 + Decorate 100(sampCubes) DescriptorSet 0 + Decorate 109(samp1DAs) DescriptorSet 0 + Decorate 118(samp2DAs) DescriptorSet 0 + Decorate 127(sampCubeAs) DescriptorSet 0 + Decorate 141(usamp2D) DescriptorSet 0 + Decorate 150(isamp3D) DescriptorSet 0 + Decorate 159(isampCube) DescriptorSet 0 + Decorate 173(samp2DA) DescriptorSet 0 + Decorate 182(usampCubeA) DescriptorSet 0 + Decorate 219(sampBuf) DescriptorSet 0 + Decorate 223(sampRect) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -76,256 +76,243 @@ Linked fragment stage: 12: TypePointer UniformConstant 11 13(samp1D): 12(ptr) Variable UniformConstant 15: TypePointer Function 6(float) - 20: TypeInt 32 1 - 21: TypeImage 20(int) 2D sampled format:Unknown - 22: TypeSampledImage 21 - 23: TypePointer UniformConstant 22 - 24(isamp2D): 23(ptr) Variable UniformConstant - 32: TypeInt 32 0 - 33: TypeImage 32(int) 3D sampled format:Unknown - 34: TypeSampledImage 33 - 35: TypePointer UniformConstant 34 - 36(usamp3D): 35(ptr) Variable UniformConstant - 38: TypeVector 6(float) 3 - 39: TypePointer Function 38(fvec3) - 46: TypeImage 6(float) Cube sampled format:Unknown - 47: TypeSampledImage 46 - 48: TypePointer UniformConstant 47 - 49(sampCube): 48(ptr) Variable UniformConstant - 56: TypeImage 20(int) 1D array sampled format:Unknown - 57: TypeSampledImage 56 - 58: TypePointer UniformConstant 57 - 59(isamp1DA): 58(ptr) Variable UniformConstant - 66: TypeImage 32(int) 2D array sampled format:Unknown - 67: TypeSampledImage 66 - 68: TypePointer UniformConstant 67 - 69(usamp2DA): 68(ptr) Variable UniformConstant - 76: TypeImage 20(int) Cube array sampled format:Unknown - 77: TypeSampledImage 76 - 78: TypePointer UniformConstant 77 - 79(isampCubeA): 78(ptr) Variable UniformConstant - 86: TypeImage 6(float) 1D depth sampled format:Unknown - 87: TypeSampledImage 86 - 88: TypePointer UniformConstant 87 - 89(samp1Ds): 88(ptr) Variable UniformConstant - 96: TypeImage 6(float) 2D depth sampled format:Unknown - 97: TypeSampledImage 96 - 98: TypePointer UniformConstant 97 - 99(samp2Ds): 98(ptr) Variable UniformConstant - 106: TypeImage 6(float) Cube depth sampled format:Unknown + 19: TypeInt 32 1 + 20: TypeImage 19(int) 2D sampled format:Unknown + 21: TypeSampledImage 20 + 22: TypePointer UniformConstant 21 + 23(isamp2D): 22(ptr) Variable UniformConstant + 30: TypeInt 32 0 + 31: TypeImage 30(int) 3D sampled format:Unknown + 32: TypeSampledImage 31 + 33: TypePointer UniformConstant 32 + 34(usamp3D): 33(ptr) Variable UniformConstant + 36: TypeVector 6(float) 3 + 37: TypePointer Function 36(fvec3) + 43: TypeImage 6(float) Cube sampled format:Unknown + 44: TypeSampledImage 43 + 45: TypePointer UniformConstant 44 + 46(sampCube): 45(ptr) Variable UniformConstant + 52: TypeImage 19(int) 1D array sampled format:Unknown + 53: TypeSampledImage 52 + 54: TypePointer UniformConstant 53 + 55(isamp1DA): 54(ptr) Variable UniformConstant + 61: TypeImage 30(int) 2D array sampled format:Unknown + 62: TypeSampledImage 61 + 63: TypePointer UniformConstant 62 + 64(usamp2DA): 63(ptr) Variable UniformConstant + 70: TypeImage 19(int) Cube array sampled format:Unknown + 71: TypeSampledImage 70 + 72: TypePointer UniformConstant 71 + 73(isampCubeA): 72(ptr) Variable UniformConstant + 79: TypeImage 6(float) 1D depth sampled format:Unknown + 80: TypeSampledImage 79 + 81: TypePointer UniformConstant 80 + 82(samp1Ds): 81(ptr) Variable UniformConstant + 88: TypeImage 6(float) 2D depth sampled format:Unknown + 89: TypeSampledImage 88 + 90: TypePointer UniformConstant 89 + 91(samp2Ds): 90(ptr) Variable UniformConstant + 97: TypeImage 6(float) Cube depth sampled format:Unknown + 98: TypeSampledImage 97 + 99: TypePointer UniformConstant 98 + 100(sampCubes): 99(ptr) Variable UniformConstant + 106: TypeImage 6(float) 1D depth array sampled format:Unknown 107: TypeSampledImage 106 108: TypePointer UniformConstant 107 - 109(sampCubes): 108(ptr) Variable UniformConstant - 116: TypeImage 6(float) 1D depth array sampled format:Unknown - 117: TypeSampledImage 116 - 118: TypePointer UniformConstant 117 - 119(samp1DAs): 118(ptr) Variable UniformConstant - 126: TypeImage 6(float) 2D depth array sampled format:Unknown - 127: TypeSampledImage 126 - 128: TypePointer UniformConstant 127 - 129(samp2DAs): 128(ptr) Variable UniformConstant - 136: TypeImage 6(float) Cube depth array sampled format:Unknown - 137: TypeSampledImage 136 - 138: TypePointer UniformConstant 137 - 139(sampCubeAs): 138(ptr) Variable UniformConstant - 146: TypePointer Function 20(int) - 151: TypeImage 32(int) 2D sampled format:Unknown - 152: TypeSampledImage 151 - 153: TypePointer UniformConstant 152 - 154(usamp2D): 153(ptr) Variable UniformConstant - 160: TypeImage 20(int) 3D sampled format:Unknown - 161: TypeSampledImage 160 - 162: TypePointer UniformConstant 161 - 163(isamp3D): 162(ptr) Variable UniformConstant - 169: TypeImage 20(int) Cube sampled format:Unknown - 170: TypeSampledImage 169 - 171: TypePointer UniformConstant 170 - 172(isampCube): 171(ptr) Variable UniformConstant - 183: TypeImage 6(float) 2D array sampled format:Unknown - 184: TypeSampledImage 183 - 185: TypePointer UniformConstant 184 - 186(samp2DA): 185(ptr) Variable UniformConstant - 192: TypeImage 32(int) Cube array sampled format:Unknown - 193: TypeSampledImage 192 - 194: TypePointer UniformConstant 193 - 195(usampCubeA): 194(ptr) Variable UniformConstant - 229: TypeImage 6(float) Buffer sampled format:Unknown - 230: TypeSampledImage 229 - 231: TypePointer UniformConstant 230 - 232(sampBuf): 231(ptr) Variable UniformConstant - 233: TypeImage 6(float) Rect sampled format:Unknown - 234: TypeSampledImage 233 - 235: TypePointer UniformConstant 234 - 236(sampRect): 235(ptr) Variable UniformConstant + 109(samp1DAs): 108(ptr) Variable UniformConstant + 115: TypeImage 6(float) 2D depth array sampled format:Unknown + 116: TypeSampledImage 115 + 117: TypePointer UniformConstant 116 + 118(samp2DAs): 117(ptr) Variable UniformConstant + 124: TypeImage 6(float) Cube depth array sampled format:Unknown + 125: TypeSampledImage 124 + 126: TypePointer UniformConstant 125 + 127(sampCubeAs): 126(ptr) Variable UniformConstant + 133: TypePointer Function 19(int) + 138: TypeImage 30(int) 2D sampled format:Unknown + 139: TypeSampledImage 138 + 140: TypePointer UniformConstant 139 + 141(usamp2D): 140(ptr) Variable UniformConstant + 147: TypeImage 19(int) 3D sampled format:Unknown + 148: TypeSampledImage 147 + 149: TypePointer UniformConstant 148 + 150(isamp3D): 149(ptr) Variable UniformConstant + 156: TypeImage 19(int) Cube sampled format:Unknown + 157: TypeSampledImage 156 + 158: TypePointer UniformConstant 157 + 159(isampCube): 158(ptr) Variable UniformConstant + 170: TypeImage 6(float) 2D array sampled format:Unknown + 171: TypeSampledImage 170 + 172: TypePointer UniformConstant 171 + 173(samp2DA): 172(ptr) Variable UniformConstant + 179: TypeImage 30(int) Cube array sampled format:Unknown + 180: TypeSampledImage 179 + 181: TypePointer UniformConstant 180 + 182(usampCubeA): 181(ptr) Variable UniformConstant + 216: TypeImage 6(float) Buffer sampled format:Unknown + 217: TypeSampledImage 216 + 218: TypePointer UniformConstant 217 + 219(sampBuf): 218(ptr) Variable UniformConstant + 220: TypeImage 6(float) Rect sampled format:Unknown + 221: TypeSampledImage 220 + 222: TypePointer UniformConstant 221 + 223(sampRect): 222(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(lod): 8(ptr) Variable Function 16(pf): 15(ptr) Variable Function - 26(pf2): 8(ptr) Variable Function - 40(pf3): 39(ptr) Variable Function - 147(levels): 146(ptr) Variable Function + 25(pf2): 8(ptr) Variable Function + 38(pf3): 37(ptr) Variable Function + 134(levels): 133(ptr) Variable Function 14: 11 Load 13(samp1D) 17: 6(float) Load 16(pf) - 18: 10 Image 14 - 19: 7(fvec2) ImageQueryLod 18 17 - Store 9(lod) 19 - 25: 22 Load 24(isamp2D) - 27: 7(fvec2) Load 26(pf2) - 28: 21 Image 25 - 29: 7(fvec2) ImageQueryLod 28 27 - 30: 7(fvec2) Load 9(lod) - 31: 7(fvec2) FAdd 30 29 - Store 9(lod) 31 - 37: 34 Load 36(usamp3D) - 41: 38(fvec3) Load 40(pf3) - 42: 33 Image 37 - 43: 7(fvec2) ImageQueryLod 42 41 - 44: 7(fvec2) Load 9(lod) - 45: 7(fvec2) FAdd 44 43 - Store 9(lod) 45 - 50: 47 Load 49(sampCube) - 51: 38(fvec3) Load 40(pf3) - 52: 46 Image 50 - 53: 7(fvec2) ImageQueryLod 52 51 - 54: 7(fvec2) Load 9(lod) - 55: 7(fvec2) FAdd 54 53 - Store 9(lod) 55 - 60: 57 Load 59(isamp1DA) - 61: 6(float) Load 16(pf) - 62: 56 Image 60 - 63: 7(fvec2) ImageQueryLod 62 61 - 64: 7(fvec2) Load 9(lod) - 65: 7(fvec2) FAdd 64 63 - Store 9(lod) 65 - 70: 67 Load 69(usamp2DA) - 71: 7(fvec2) Load 26(pf2) - 72: 66 Image 70 - 73: 7(fvec2) ImageQueryLod 72 71 - 74: 7(fvec2) Load 9(lod) - 75: 7(fvec2) FAdd 74 73 - Store 9(lod) 75 - 80: 77 Load 79(isampCubeA) - 81: 38(fvec3) Load 40(pf3) - 82: 76 Image 80 - 83: 7(fvec2) ImageQueryLod 82 81 - 84: 7(fvec2) Load 9(lod) - 85: 7(fvec2) FAdd 84 83 - Store 9(lod) 85 - 90: 87 Load 89(samp1Ds) - 91: 6(float) Load 16(pf) - 92: 86 Image 90 - 93: 7(fvec2) ImageQueryLod 92 91 - 94: 7(fvec2) Load 9(lod) - 95: 7(fvec2) FAdd 94 93 - Store 9(lod) 95 - 100: 97 Load 99(samp2Ds) - 101: 7(fvec2) Load 26(pf2) - 102: 96 Image 100 - 103: 7(fvec2) ImageQueryLod 102 101 + 18: 7(fvec2) ImageQueryLod 14 17 + Store 9(lod) 18 + 24: 21 Load 23(isamp2D) + 26: 7(fvec2) Load 25(pf2) + 27: 7(fvec2) ImageQueryLod 24 26 + 28: 7(fvec2) Load 9(lod) + 29: 7(fvec2) FAdd 28 27 + Store 9(lod) 29 + 35: 32 Load 34(usamp3D) + 39: 36(fvec3) Load 38(pf3) + 40: 7(fvec2) ImageQueryLod 35 39 + 41: 7(fvec2) Load 9(lod) + 42: 7(fvec2) FAdd 41 40 + Store 9(lod) 42 + 47: 44 Load 46(sampCube) + 48: 36(fvec3) Load 38(pf3) + 49: 7(fvec2) ImageQueryLod 47 48 + 50: 7(fvec2) Load 9(lod) + 51: 7(fvec2) FAdd 50 49 + Store 9(lod) 51 + 56: 53 Load 55(isamp1DA) + 57: 6(float) Load 16(pf) + 58: 7(fvec2) ImageQueryLod 56 57 + 59: 7(fvec2) Load 9(lod) + 60: 7(fvec2) FAdd 59 58 + Store 9(lod) 60 + 65: 62 Load 64(usamp2DA) + 66: 7(fvec2) Load 25(pf2) + 67: 7(fvec2) ImageQueryLod 65 66 + 68: 7(fvec2) Load 9(lod) + 69: 7(fvec2) FAdd 68 67 + Store 9(lod) 69 + 74: 71 Load 73(isampCubeA) + 75: 36(fvec3) Load 38(pf3) + 76: 7(fvec2) ImageQueryLod 74 75 + 77: 7(fvec2) Load 9(lod) + 78: 7(fvec2) FAdd 77 76 + Store 9(lod) 78 + 83: 80 Load 82(samp1Ds) + 84: 6(float) Load 16(pf) + 85: 7(fvec2) ImageQueryLod 83 84 + 86: 7(fvec2) Load 9(lod) + 87: 7(fvec2) FAdd 86 85 + Store 9(lod) 87 + 92: 89 Load 91(samp2Ds) + 93: 7(fvec2) Load 25(pf2) + 94: 7(fvec2) ImageQueryLod 92 93 + 95: 7(fvec2) Load 9(lod) + 96: 7(fvec2) FAdd 95 94 + Store 9(lod) 96 + 101: 98 Load 100(sampCubes) + 102: 36(fvec3) Load 38(pf3) + 103: 7(fvec2) ImageQueryLod 101 102 104: 7(fvec2) Load 9(lod) 105: 7(fvec2) FAdd 104 103 Store 9(lod) 105 - 110: 107 Load 109(sampCubes) - 111: 38(fvec3) Load 40(pf3) - 112: 106 Image 110 - 113: 7(fvec2) ImageQueryLod 112 111 - 114: 7(fvec2) Load 9(lod) - 115: 7(fvec2) FAdd 114 113 - Store 9(lod) 115 - 120: 117 Load 119(samp1DAs) - 121: 6(float) Load 16(pf) - 122: 116 Image 120 - 123: 7(fvec2) ImageQueryLod 122 121 - 124: 7(fvec2) Load 9(lod) - 125: 7(fvec2) FAdd 124 123 - Store 9(lod) 125 - 130: 127 Load 129(samp2DAs) - 131: 7(fvec2) Load 26(pf2) - 132: 126 Image 130 - 133: 7(fvec2) ImageQueryLod 132 131 - 134: 7(fvec2) Load 9(lod) - 135: 7(fvec2) FAdd 134 133 - Store 9(lod) 135 - 140: 137 Load 139(sampCubeAs) - 141: 38(fvec3) Load 40(pf3) - 142: 136 Image 140 - 143: 7(fvec2) ImageQueryLod 142 141 - 144: 7(fvec2) Load 9(lod) - 145: 7(fvec2) FAdd 144 143 - Store 9(lod) 145 - 148: 11 Load 13(samp1D) - 149: 10 Image 148 - 150: 20(int) ImageQueryLevels 149 - Store 147(levels) 150 - 155: 152 Load 154(usamp2D) - 156: 151 Image 155 - 157: 20(int) ImageQueryLevels 156 - 158: 20(int) Load 147(levels) - 159: 20(int) IAdd 158 157 - Store 147(levels) 159 - 164: 161 Load 163(isamp3D) - 165: 160 Image 164 - 166: 20(int) ImageQueryLevels 165 - 167: 20(int) Load 147(levels) - 168: 20(int) IAdd 167 166 - Store 147(levels) 168 - 173: 170 Load 172(isampCube) - 174: 169 Image 173 - 175: 20(int) ImageQueryLevels 174 - 176: 20(int) Load 147(levels) - 177: 20(int) IAdd 176 175 - Store 147(levels) 177 - 178: 57 Load 59(isamp1DA) - 179: 56 Image 178 - 180: 20(int) ImageQueryLevels 179 - 181: 20(int) Load 147(levels) - 182: 20(int) IAdd 181 180 - Store 147(levels) 182 - 187: 184 Load 186(samp2DA) - 188: 183 Image 187 - 189: 20(int) ImageQueryLevels 188 - 190: 20(int) Load 147(levels) - 191: 20(int) IAdd 190 189 - Store 147(levels) 191 - 196: 193 Load 195(usampCubeA) - 197: 192 Image 196 - 198: 20(int) ImageQueryLevels 197 - 199: 20(int) Load 147(levels) - 200: 20(int) IAdd 199 198 - Store 147(levels) 200 - 201: 87 Load 89(samp1Ds) - 202: 86 Image 201 - 203: 20(int) ImageQueryLevels 202 - Store 147(levels) 203 - 204: 97 Load 99(samp2Ds) - 205: 96 Image 204 - 206: 20(int) ImageQueryLevels 205 - 207: 20(int) Load 147(levels) - 208: 20(int) IAdd 207 206 - Store 147(levels) 208 - 209: 107 Load 109(sampCubes) - 210: 106 Image 209 - 211: 20(int) ImageQueryLevels 210 - 212: 20(int) Load 147(levels) - 213: 20(int) IAdd 212 211 - Store 147(levels) 213 - 214: 117 Load 119(samp1DAs) - 215: 116 Image 214 - 216: 20(int) ImageQueryLevels 215 - 217: 20(int) Load 147(levels) - 218: 20(int) IAdd 217 216 - Store 147(levels) 218 - 219: 127 Load 129(samp2DAs) - 220: 126 Image 219 - 221: 20(int) ImageQueryLevels 220 - 222: 20(int) Load 147(levels) - 223: 20(int) IAdd 222 221 - Store 147(levels) 223 - 224: 137 Load 139(sampCubeAs) - 225: 136 Image 224 - 226: 20(int) ImageQueryLevels 225 - 227: 20(int) Load 147(levels) - 228: 20(int) IAdd 227 226 - Store 147(levels) 228 + 110: 107 Load 109(samp1DAs) + 111: 6(float) Load 16(pf) + 112: 7(fvec2) ImageQueryLod 110 111 + 113: 7(fvec2) Load 9(lod) + 114: 7(fvec2) FAdd 113 112 + Store 9(lod) 114 + 119: 116 Load 118(samp2DAs) + 120: 7(fvec2) Load 25(pf2) + 121: 7(fvec2) ImageQueryLod 119 120 + 122: 7(fvec2) Load 9(lod) + 123: 7(fvec2) FAdd 122 121 + Store 9(lod) 123 + 128: 125 Load 127(sampCubeAs) + 129: 36(fvec3) Load 38(pf3) + 130: 7(fvec2) ImageQueryLod 128 129 + 131: 7(fvec2) Load 9(lod) + 132: 7(fvec2) FAdd 131 130 + Store 9(lod) 132 + 135: 11 Load 13(samp1D) + 136: 10 Image 135 + 137: 19(int) ImageQueryLevels 136 + Store 134(levels) 137 + 142: 139 Load 141(usamp2D) + 143: 138 Image 142 + 144: 19(int) ImageQueryLevels 143 + 145: 19(int) Load 134(levels) + 146: 19(int) IAdd 145 144 + Store 134(levels) 146 + 151: 148 Load 150(isamp3D) + 152: 147 Image 151 + 153: 19(int) ImageQueryLevels 152 + 154: 19(int) Load 134(levels) + 155: 19(int) IAdd 154 153 + Store 134(levels) 155 + 160: 157 Load 159(isampCube) + 161: 156 Image 160 + 162: 19(int) ImageQueryLevels 161 + 163: 19(int) Load 134(levels) + 164: 19(int) IAdd 163 162 + Store 134(levels) 164 + 165: 53 Load 55(isamp1DA) + 166: 52 Image 165 + 167: 19(int) ImageQueryLevels 166 + 168: 19(int) Load 134(levels) + 169: 19(int) IAdd 168 167 + Store 134(levels) 169 + 174: 171 Load 173(samp2DA) + 175: 170 Image 174 + 176: 19(int) ImageQueryLevels 175 + 177: 19(int) Load 134(levels) + 178: 19(int) IAdd 177 176 + Store 134(levels) 178 + 183: 180 Load 182(usampCubeA) + 184: 179 Image 183 + 185: 19(int) ImageQueryLevels 184 + 186: 19(int) Load 134(levels) + 187: 19(int) IAdd 186 185 + Store 134(levels) 187 + 188: 80 Load 82(samp1Ds) + 189: 79 Image 188 + 190: 19(int) ImageQueryLevels 189 + Store 134(levels) 190 + 191: 89 Load 91(samp2Ds) + 192: 88 Image 191 + 193: 19(int) ImageQueryLevels 192 + 194: 19(int) Load 134(levels) + 195: 19(int) IAdd 194 193 + Store 134(levels) 195 + 196: 98 Load 100(sampCubes) + 197: 97 Image 196 + 198: 19(int) ImageQueryLevels 197 + 199: 19(int) Load 134(levels) + 200: 19(int) IAdd 199 198 + Store 134(levels) 200 + 201: 107 Load 109(samp1DAs) + 202: 106 Image 201 + 203: 19(int) ImageQueryLevels 202 + 204: 19(int) Load 134(levels) + 205: 19(int) IAdd 204 203 + Store 134(levels) 205 + 206: 116 Load 118(samp2DAs) + 207: 115 Image 206 + 208: 19(int) ImageQueryLevels 207 + 209: 19(int) Load 134(levels) + 210: 19(int) IAdd 209 208 + Store 134(levels) 210 + 211: 125 Load 127(sampCubeAs) + 212: 124 Image 211 + 213: 19(int) ImageQueryLevels 212 + 214: 19(int) Load 134(levels) + 215: 19(int) IAdd 214 213 + Store 134(levels) 215 Return FunctionEnd From 6b43d274e7899a7bbe80831eab96ef0d387dea91 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 6 Oct 2016 20:12:24 -0600 Subject: [PATCH 046/130] HLSL: phase 2a: add r-value operator[] for RWTexture/RWBuffer This commit adds r-value support for RW textures and buffers. Supported is: - Function in parameter conversions - conversion of rvalue use to imageLoad --- Test/baseResults/hlsl.rw.bracket.frag.out | 719 ++++++++++++++++++++++ Test/hlsl.rw.bracket.frag | 114 ++++ gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 40 +- hlsl/hlslParseHelper.h | 1 + 5 files changed, 869 insertions(+), 6 deletions(-) create mode 100644 Test/baseResults/hlsl.rw.bracket.frag.out create mode 100644 Test/hlsl.rw.bracket.frag diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out new file mode 100644 index 00000000..7c72e98b --- /dev/null +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -0,0 +1,719 @@ +hlsl.rw.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:38 Function Parameters: +0:38 'x' (in 4-component vector of int) +0:? Sequence +0:38 Branch: Return with expression +0:38 'x' (in 4-component vector of int) +0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:39 Function Parameters: +0:39 'x' (in 4-component vector of uint) +0:? Sequence +0:39 Branch: Return with expression +0:39 'x' (in 4-component vector of uint) +0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'x' (in 4-component vector of float) +0:? Sequence +0:40 Branch: Return with expression +0:40 'x' (in 4-component vector of float) +0:42 Function Definition: Fn2(vi4; (temp void) +0:42 Function Parameters: +0:42 'x' (out 4-component vector of int) +0:? Sequence +0:42 move second child to first child (temp 4-component vector of int) +0:42 'x' (out 4-component vector of int) +0:42 Constant: +0:42 0 (const int) +0:42 0 (const int) +0:42 0 (const int) +0:42 0 (const int) +0:43 Function Definition: Fn2(vu4; (temp void) +0:43 Function Parameters: +0:43 'x' (out 4-component vector of uint) +0:? Sequence +0:43 move second child to first child (temp 4-component vector of uint) +0:43 'x' (out 4-component vector of uint) +0:43 Constant: +0:43 0 (const uint) +0:43 0 (const uint) +0:43 0 (const uint) +0:43 0 (const uint) +0:44 Function Definition: Fn2(vf4; (temp void) +0:44 Function Parameters: +0:44 'x' (out 4-component vector of float) +0:? Sequence +0:44 move second child to first child (temp 4-component vector of float) +0:44 'x' (out 4-component vector of float) +0:44 Constant: +0:44 0.000000 +0:44 0.000000 +0:44 0.000000 +0:44 0.000000 +0:47 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:47 Function Parameters: +0:? Sequence +0:53 imageLoad (temp 4-component vector of float) +0:53 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:53 c1: direct index for structure (layout(offset=0 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 0 (const uint) +0:55 Sequence +0:55 move second child to first child (temp 4-component vector of float) +0:55 'r00' (temp 4-component vector of float) +0:55 imageLoad (temp 4-component vector of float) +0:55 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:55 c1: direct index for structure (layout(offset=0 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:55 Constant: +0:55 0 (const uint) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of int) +0:56 'r01' (temp 4-component vector of int) +0:56 imageLoad (temp 4-component vector of int) +0:56 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:56 c1: direct index for structure (layout(offset=0 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 0 (const uint) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of uint) +0:57 'r02' (temp 4-component vector of uint) +0:57 imageLoad (temp 4-component vector of uint) +0:57 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of float) +0:60 'r10' (temp 4-component vector of float) +0:60 imageLoad (temp 4-component vector of float) +0:60 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:60 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 1 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of int) +0:61 'r11' (temp 4-component vector of int) +0:61 imageLoad (temp 4-component vector of int) +0:61 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:61 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 1 (const uint) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of uint) +0:62 'r12' (temp 4-component vector of uint) +0:62 imageLoad (temp 4-component vector of uint) +0:62 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of float) +0:65 'r20' (temp 4-component vector of float) +0:65 imageLoad (temp 4-component vector of float) +0:65 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:65 Constant: +0:65 2 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of int) +0:66 'r21' (temp 4-component vector of int) +0:66 imageLoad (temp 4-component vector of int) +0:66 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 2 (const uint) +0:67 Sequence +0:67 move second child to first child (temp 4-component vector of uint) +0:67 'r22' (temp 4-component vector of uint) +0:67 imageLoad (temp 4-component vector of uint) +0:67 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 2 (const uint) +0:86 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:86 imageLoad (temp 4-component vector of float) +0:86 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:86 c1: direct index for structure (layout(offset=0 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:86 Constant: +0:86 0 (const uint) +0:87 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:87 imageLoad (temp 4-component vector of int) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:87 Constant: +0:87 0 (const uint) +0:88 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:88 imageLoad (temp 4-component vector of uint) +0:88 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 0 (const uint) +0:111 move second child to first child (temp 4-component vector of float) +0:111 Color: direct index for structure (temp 4-component vector of float) +0:111 'psout' (temp structure{temp 4-component vector of float Color}) +0:111 Constant: +0:111 0 (const int) +0:111 Constant: +0:111 1.000000 +0:111 1.000000 +0:111 1.000000 +0:111 1.000000 +0:113 Sequence +0:113 Sequence +0:113 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:113 Color: direct index for structure (temp 4-component vector of float) +0:113 'psout' (temp structure{temp 4-component vector of float Color}) +0:113 Constant: +0:113 0 (const int) +0:113 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:38 Function Parameters: +0:38 'x' (in 4-component vector of int) +0:? Sequence +0:38 Branch: Return with expression +0:38 'x' (in 4-component vector of int) +0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:39 Function Parameters: +0:39 'x' (in 4-component vector of uint) +0:? Sequence +0:39 Branch: Return with expression +0:39 'x' (in 4-component vector of uint) +0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'x' (in 4-component vector of float) +0:? Sequence +0:40 Branch: Return with expression +0:40 'x' (in 4-component vector of float) +0:42 Function Definition: Fn2(vi4; (temp void) +0:42 Function Parameters: +0:42 'x' (out 4-component vector of int) +0:? Sequence +0:42 move second child to first child (temp 4-component vector of int) +0:42 'x' (out 4-component vector of int) +0:42 Constant: +0:42 0 (const int) +0:42 0 (const int) +0:42 0 (const int) +0:42 0 (const int) +0:43 Function Definition: Fn2(vu4; (temp void) +0:43 Function Parameters: +0:43 'x' (out 4-component vector of uint) +0:? Sequence +0:43 move second child to first child (temp 4-component vector of uint) +0:43 'x' (out 4-component vector of uint) +0:43 Constant: +0:43 0 (const uint) +0:43 0 (const uint) +0:43 0 (const uint) +0:43 0 (const uint) +0:44 Function Definition: Fn2(vf4; (temp void) +0:44 Function Parameters: +0:44 'x' (out 4-component vector of float) +0:? Sequence +0:44 move second child to first child (temp 4-component vector of float) +0:44 'x' (out 4-component vector of float) +0:44 Constant: +0:44 0.000000 +0:44 0.000000 +0:44 0.000000 +0:44 0.000000 +0:47 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:47 Function Parameters: +0:? Sequence +0:53 imageLoad (temp 4-component vector of float) +0:53 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:53 c1: direct index for structure (layout(offset=0 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 0 (const uint) +0:55 Sequence +0:55 move second child to first child (temp 4-component vector of float) +0:55 'r00' (temp 4-component vector of float) +0:55 imageLoad (temp 4-component vector of float) +0:55 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:55 c1: direct index for structure (layout(offset=0 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:55 Constant: +0:55 0 (const uint) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of int) +0:56 'r01' (temp 4-component vector of int) +0:56 imageLoad (temp 4-component vector of int) +0:56 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:56 c1: direct index for structure (layout(offset=0 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 0 (const uint) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of uint) +0:57 'r02' (temp 4-component vector of uint) +0:57 imageLoad (temp 4-component vector of uint) +0:57 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of float) +0:60 'r10' (temp 4-component vector of float) +0:60 imageLoad (temp 4-component vector of float) +0:60 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:60 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 1 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of int) +0:61 'r11' (temp 4-component vector of int) +0:61 imageLoad (temp 4-component vector of int) +0:61 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:61 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 1 (const uint) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of uint) +0:62 'r12' (temp 4-component vector of uint) +0:62 imageLoad (temp 4-component vector of uint) +0:62 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of float) +0:65 'r20' (temp 4-component vector of float) +0:65 imageLoad (temp 4-component vector of float) +0:65 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:65 Constant: +0:65 2 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of int) +0:66 'r21' (temp 4-component vector of int) +0:66 imageLoad (temp 4-component vector of int) +0:66 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 2 (const uint) +0:67 Sequence +0:67 move second child to first child (temp 4-component vector of uint) +0:67 'r22' (temp 4-component vector of uint) +0:67 imageLoad (temp 4-component vector of uint) +0:67 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 2 (const uint) +0:86 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:86 imageLoad (temp 4-component vector of float) +0:86 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:86 c1: direct index for structure (layout(offset=0 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:86 Constant: +0:86 0 (const uint) +0:87 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:87 imageLoad (temp 4-component vector of int) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:87 Constant: +0:87 0 (const uint) +0:88 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:88 imageLoad (temp 4-component vector of uint) +0:88 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 0 (const uint) +0:111 move second child to first child (temp 4-component vector of float) +0:111 Color: direct index for structure (temp 4-component vector of float) +0:111 'psout' (temp structure{temp 4-component vector of float Color}) +0:111 Constant: +0:111 0 (const int) +0:111 Constant: +0:111 1.000000 +0:111 1.000000 +0:111 1.000000 +0:111 1.000000 +0:113 Sequence +0:113 Sequence +0:113 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:113 Color: direct index for structure (temp 4-component vector of float) +0:113 'psout' (temp structure{temp 4-component vector of float Color}) +0:113 Constant: +0:113 0 (const int) +0:113 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 190 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 165 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "Fn1(vi4;" + Name 10 "x" + Name 18 "Fn1(vu4;" + Name 17 "x" + Name 25 "Fn1(vf4;" + Name 24 "x" + Name 29 "Fn2(vi4;" + Name 28 "x" + Name 33 "Fn2(vu4;" + Name 32 "x" + Name 37 "Fn2(vf4;" + Name 36 "x" + Name 56 "g_tTex1df4" + Name 60 "$Global" + MemberName 60($Global) 0 "c1" + MemberName 60($Global) 1 "c2" + MemberName 60($Global) 2 "c3" + MemberName 60($Global) 3 "c4" + MemberName 60($Global) 4 "o1" + MemberName 60($Global) 5 "o2" + MemberName 60($Global) 6 "o3" + MemberName 60($Global) 7 "o4" + Name 62 "" + Name 67 "r00" + Name 72 "r01" + Name 75 "g_tTex1di4" + Name 80 "r02" + Name 83 "g_tTex1du4" + Name 88 "r10" + Name 91 "g_tTex2df4" + Name 98 "r11" + Name 101 "g_tTex2di4" + Name 106 "r12" + Name 109 "g_tTex2du4" + Name 114 "r20" + Name 117 "g_tTex3df4" + Name 124 "r21" + Name 127 "g_tTex3di4" + Name 132 "r22" + Name 135 "g_tTex3du4" + Name 144 "param" + Name 150 "param" + Name 156 "param" + Name 158 "PS_OUTPUT" + MemberName 158(PS_OUTPUT) 0 "Color" + Name 160 "psout" + Name 165 "Color" + Name 171 "g_sSamp" + Name 174 "g_tTex1df4a" + Name 177 "g_tTex1di4a" + Name 180 "g_tTex1du4a" + Name 183 "g_tTex2df4a" + Name 186 "g_tTex2di4a" + Name 189 "g_tTex2du4a" + Decorate 56(g_tTex1df4) DescriptorSet 0 + Decorate 56(g_tTex1df4) Binding 0 + MemberDecorate 60($Global) 0 Offset 0 + MemberDecorate 60($Global) 1 Offset 8 + MemberDecorate 60($Global) 2 Offset 16 + MemberDecorate 60($Global) 3 Offset 32 + MemberDecorate 60($Global) 4 Offset 48 + MemberDecorate 60($Global) 5 Offset 56 + MemberDecorate 60($Global) 6 Offset 64 + MemberDecorate 60($Global) 7 Offset 80 + Decorate 60($Global) Block + Decorate 62 DescriptorSet 0 + Decorate 75(g_tTex1di4) DescriptorSet 0 + Decorate 83(g_tTex1du4) DescriptorSet 0 + Decorate 91(g_tTex2df4) DescriptorSet 0 + Decorate 101(g_tTex2di4) DescriptorSet 0 + Decorate 109(g_tTex2du4) DescriptorSet 0 + Decorate 117(g_tTex3df4) DescriptorSet 0 + Decorate 127(g_tTex3di4) DescriptorSet 0 + Decorate 135(g_tTex3du4) DescriptorSet 0 + Decorate 165(Color) Location 0 + Decorate 171(g_sSamp) DescriptorSet 0 + Decorate 171(g_sSamp) Binding 0 + Decorate 174(g_tTex1df4a) DescriptorSet 0 + Decorate 177(g_tTex1di4a) DescriptorSet 0 + Decorate 180(g_tTex1du4a) DescriptorSet 0 + Decorate 183(g_tTex2df4a) DescriptorSet 0 + Decorate 186(g_tTex2di4a) DescriptorSet 0 + Decorate 189(g_tTex2du4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 4 + 8: TypePointer Function 7(ivec4) + 9: TypeFunction 7(ivec4) 8(ptr) + 13: TypeInt 32 0 + 14: TypeVector 13(int) 4 + 15: TypePointer Function 14(ivec4) + 16: TypeFunction 14(ivec4) 15(ptr) + 20: TypeFloat 32 + 21: TypeVector 20(float) 4 + 22: TypePointer Function 21(fvec4) + 23: TypeFunction 21(fvec4) 22(ptr) + 27: TypeFunction 2 8(ptr) + 31: TypeFunction 2 15(ptr) + 35: TypeFunction 2 22(ptr) + 48: 6(int) Constant 0 + 49: 7(ivec4) ConstantComposite 48 48 48 48 + 50: 13(int) Constant 0 + 51: 14(ivec4) ConstantComposite 50 50 50 50 + 52: 20(float) Constant 0 + 53: 21(fvec4) ConstantComposite 52 52 52 52 + 54: TypeImage 20(float) 1D nonsampled format:Rgba32f + 55: TypePointer UniformConstant 54 + 56(g_tTex1df4): 55(ptr) Variable UniformConstant + 58: TypeVector 6(int) 2 + 59: TypeVector 6(int) 3 + 60($Global): TypeStruct 6(int) 58(ivec2) 59(ivec3) 7(ivec4) 6(int) 58(ivec2) 59(ivec3) 7(ivec4) + 61: TypePointer Uniform 60($Global) + 62: 61(ptr) Variable Uniform + 63: TypePointer Uniform 6(int) + 73: TypeImage 6(int) 1D nonsampled format:Rgba32i + 74: TypePointer UniformConstant 73 + 75(g_tTex1di4): 74(ptr) Variable UniformConstant + 81: TypeImage 13(int) 1D nonsampled format:Rgba32ui + 82: TypePointer UniformConstant 81 + 83(g_tTex1du4): 82(ptr) Variable UniformConstant + 89: TypeImage 20(float) 2D nonsampled format:Rgba32f + 90: TypePointer UniformConstant 89 + 91(g_tTex2df4): 90(ptr) Variable UniformConstant + 93: 6(int) Constant 1 + 94: TypePointer Uniform 58(ivec2) + 99: TypeImage 6(int) 2D nonsampled format:Rgba32i + 100: TypePointer UniformConstant 99 + 101(g_tTex2di4): 100(ptr) Variable UniformConstant + 107: TypeImage 13(int) 2D nonsampled format:Rgba32ui + 108: TypePointer UniformConstant 107 + 109(g_tTex2du4): 108(ptr) Variable UniformConstant + 115: TypeImage 20(float) 3D nonsampled format:Rgba32f + 116: TypePointer UniformConstant 115 + 117(g_tTex3df4): 116(ptr) Variable UniformConstant + 119: 6(int) Constant 2 + 120: TypePointer Uniform 59(ivec3) + 125: TypeImage 6(int) 3D nonsampled format:Rgba32i + 126: TypePointer UniformConstant 125 + 127(g_tTex3di4): 126(ptr) Variable UniformConstant + 133: TypeImage 13(int) 3D nonsampled format:Rgba32ui + 134: TypePointer UniformConstant 133 + 135(g_tTex3du4): 134(ptr) Variable UniformConstant + 158(PS_OUTPUT): TypeStruct 21(fvec4) + 159: TypePointer Function 158(PS_OUTPUT) + 161: 20(float) Constant 1065353216 + 162: 21(fvec4) ConstantComposite 161 161 161 161 + 164: TypePointer Output 21(fvec4) + 165(Color): 164(ptr) Variable Output + 169: TypeSampler + 170: TypePointer UniformConstant 169 + 171(g_sSamp): 170(ptr) Variable UniformConstant + 172: TypeImage 20(float) 1D array nonsampled format:Rgba32f + 173: TypePointer UniformConstant 172 +174(g_tTex1df4a): 173(ptr) Variable UniformConstant + 175: TypeImage 6(int) 1D array nonsampled format:Rgba32i + 176: TypePointer UniformConstant 175 +177(g_tTex1di4a): 176(ptr) Variable UniformConstant + 178: TypeImage 13(int) 1D array nonsampled format:Rgba32ui + 179: TypePointer UniformConstant 178 +180(g_tTex1du4a): 179(ptr) Variable UniformConstant + 181: TypeImage 20(float) 2D array nonsampled format:Rgba32f + 182: TypePointer UniformConstant 181 +183(g_tTex2df4a): 182(ptr) Variable UniformConstant + 184: TypeImage 6(int) 2D array nonsampled format:Rgba32i + 185: TypePointer UniformConstant 184 +186(g_tTex2di4a): 185(ptr) Variable UniformConstant + 187: TypeImage 13(int) 2D array nonsampled format:Rgba32ui + 188: TypePointer UniformConstant 187 +189(g_tTex2du4a): 188(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 67(r00): 22(ptr) Variable Function + 72(r01): 8(ptr) Variable Function + 80(r02): 15(ptr) Variable Function + 88(r10): 22(ptr) Variable Function + 98(r11): 8(ptr) Variable Function + 106(r12): 15(ptr) Variable Function + 114(r20): 22(ptr) Variable Function + 124(r21): 8(ptr) Variable Function + 132(r22): 15(ptr) Variable Function + 144(param): 22(ptr) Variable Function + 150(param): 8(ptr) Variable Function + 156(param): 15(ptr) Variable Function + 160(psout): 159(ptr) Variable Function + 57: 54 Load 56(g_tTex1df4) + 64: 63(ptr) AccessChain 62 48 + 65: 6(int) Load 64 + 66: 21(fvec4) ImageRead 57 65 + 68: 54 Load 56(g_tTex1df4) + 69: 63(ptr) AccessChain 62 48 + 70: 6(int) Load 69 + 71: 21(fvec4) ImageRead 68 70 + Store 67(r00) 71 + 76: 73 Load 75(g_tTex1di4) + 77: 63(ptr) AccessChain 62 48 + 78: 6(int) Load 77 + 79: 7(ivec4) ImageRead 76 78 + Store 72(r01) 79 + 84: 81 Load 83(g_tTex1du4) + 85: 63(ptr) AccessChain 62 48 + 86: 6(int) Load 85 + 87: 14(ivec4) ImageRead 84 86 + Store 80(r02) 87 + 92: 89 Load 91(g_tTex2df4) + 95: 94(ptr) AccessChain 62 93 + 96: 58(ivec2) Load 95 + 97: 21(fvec4) ImageRead 92 96 + Store 88(r10) 97 + 102: 99 Load 101(g_tTex2di4) + 103: 94(ptr) AccessChain 62 93 + 104: 58(ivec2) Load 103 + 105: 7(ivec4) ImageRead 102 104 + Store 98(r11) 105 + 110: 107 Load 109(g_tTex2du4) + 111: 94(ptr) AccessChain 62 93 + 112: 58(ivec2) Load 111 + 113: 14(ivec4) ImageRead 110 112 + Store 106(r12) 113 + 118: 115 Load 117(g_tTex3df4) + 121: 120(ptr) AccessChain 62 119 + 122: 59(ivec3) Load 121 + 123: 21(fvec4) ImageRead 118 122 + Store 114(r20) 123 + 128: 125 Load 127(g_tTex3di4) + 129: 120(ptr) AccessChain 62 119 + 130: 59(ivec3) Load 129 + 131: 7(ivec4) ImageRead 128 130 + Store 124(r21) 131 + 136: 133 Load 135(g_tTex3du4) + 137: 120(ptr) AccessChain 62 119 + 138: 59(ivec3) Load 137 + 139: 14(ivec4) ImageRead 136 138 + Store 132(r22) 139 + 140: 54 Load 56(g_tTex1df4) + 141: 63(ptr) AccessChain 62 48 + 142: 6(int) Load 141 + 143: 21(fvec4) ImageRead 140 142 + Store 144(param) 143 + 145: 21(fvec4) FunctionCall 25(Fn1(vf4;) 144(param) + 146: 73 Load 75(g_tTex1di4) + 147: 63(ptr) AccessChain 62 48 + 148: 6(int) Load 147 + 149: 7(ivec4) ImageRead 146 148 + Store 150(param) 149 + 151: 7(ivec4) FunctionCall 11(Fn1(vi4;) 150(param) + 152: 81 Load 83(g_tTex1du4) + 153: 63(ptr) AccessChain 62 48 + 154: 6(int) Load 153 + 155: 14(ivec4) ImageRead 152 154 + Store 156(param) 155 + 157: 14(ivec4) FunctionCall 18(Fn1(vu4;) 156(param) + 163: 22(ptr) AccessChain 160(psout) 48 + Store 163 162 + 166: 22(ptr) AccessChain 160(psout) 48 + 167: 21(fvec4) Load 166 + Store 165(Color) 167 + Return + FunctionEnd + 11(Fn1(vi4;): 7(ivec4) Function None 9 + 10(x): 8(ptr) FunctionParameter + 12: Label + 39: 7(ivec4) Load 10(x) + ReturnValue 39 + FunctionEnd + 18(Fn1(vu4;): 14(ivec4) Function None 16 + 17(x): 15(ptr) FunctionParameter + 19: Label + 42: 14(ivec4) Load 17(x) + ReturnValue 42 + FunctionEnd + 25(Fn1(vf4;): 21(fvec4) Function None 23 + 24(x): 22(ptr) FunctionParameter + 26: Label + 45: 21(fvec4) Load 24(x) + ReturnValue 45 + FunctionEnd + 29(Fn2(vi4;): 2 Function None 27 + 28(x): 8(ptr) FunctionParameter + 30: Label + Store 28(x) 49 + Return + FunctionEnd + 33(Fn2(vu4;): 2 Function None 31 + 32(x): 15(ptr) FunctionParameter + 34: Label + Store 32(x) 51 + Return + FunctionEnd + 37(Fn2(vf4;): 2 Function None 35 + 36(x): 22(ptr) FunctionParameter + 38: Label + Store 36(x) 53 + Return + FunctionEnd diff --git a/Test/hlsl.rw.bracket.frag b/Test/hlsl.rw.bracket.frag new file mode 100644 index 00000000..e435b91d --- /dev/null +++ b/Test/hlsl.rw.bracket.frag @@ -0,0 +1,114 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +int4 Fn1(in int4 x) { return x; } +uint4 Fn1(in uint4 x) { return x; } +float4 Fn1(in float4 x) { return x; } + +void Fn2(out int4 x) { x = int4(0); } +void Fn2(out uint4 x) { x = uint4(0); } +void Fn2(out float4 x) { x = float4(0); } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // Test as R-values + + // 1D + g_tTex1df4[c1]; + + float4 r00 = g_tTex1df4[c1]; + int4 r01 = g_tTex1di4[c1]; + uint4 r02 = g_tTex1du4[c1]; + + // 2D + float4 r10 = g_tTex2df4[c2]; + int4 r11 = g_tTex2di4[c2]; + uint4 r12 = g_tTex2du4[c2]; + + // 3D + float4 r20 = g_tTex3df4[c3]; + int4 r21 = g_tTex3di4[c3]; + uint4 r22 = g_tTex3du4[c3]; + + // // Test as L-values + // // 1D + // g_tTex1df4[c1] = float4(1,2,3,4); + // g_tTex1di4[c1] = int4(1,2,3,4); + // g_tTex1du4[c1] = uint4(1,2,3,4); + + // // 2D + // g_tTex2df4[c2] = float4(1,2,3,4); + // g_tTex2di4[c2] = int4(1,2,3,4); + // g_tTex2du4[c2] = uint4(1,2,3,4); + + // // 3D + // g_tTex3df4[c3] = float4(1,2,3,4); + // g_tTex3di4[c3] = int4(1,2,3,4); + // g_tTex3du4[c3] = uint4(1,2,3,4); + + // // Test function calling + Fn1(g_tTex1df4[c1]); // in + Fn1(g_tTex1di4[c1]); // in + Fn1(g_tTex1du4[c1]); // in + + // Fn2(g_tTex1df4[c1]); // out + // Fn2(g_tTex1di4[c1]); // out + // Fn2(g_tTex1du4[c1]); // out + + // // Test increment operators + // g_tTex1df4[c1]++; + // g_tTex1di4[c1]++; + // g_tTex1du4[c1]++; + + // g_tTex1df4[c1]--; + // g_tTex1di4[c1]--; + // g_tTex1du4[c1]--; + + // ++g_tTex1df4[c1]; + // ++g_tTex1di4[c1]; + // ++g_tTex1du4[c1]; + + // --g_tTex1df4[c1]; + // --g_tTex1di4[c1]; + // --g_tTex1du4[c1]; + + psout.Color = 1.0; + + return psout; +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 7b642171..9a160cf4 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -147,6 +147,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, {"hlsl.promotions.frag", "main"}, + {"hlsl.rw.bracket.frag", "main"}, {"hlsl.sample.array.dx10.frag", "main"}, {"hlsl.sample.basic.dx10.frag", "main"}, {"hlsl.sample.offset.dx10.frag", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 4eda44d7..204e9f08 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -297,12 +297,40 @@ TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, TSymbol* s return node; } +// +// Handle operator[] on any objects it applies to. Currently: +// Textures +// Buffers +// +TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) +{ + // handle r-value operator[] on textures and images. l-values will be processed later. + if (base->getType().getBasicType() == EbtSampler && !base->isArray()) { + const TSampler& sampler = base->getType().getSampler(); + if (sampler.isImage() || sampler.isTexture()) { + const int vecSize = 4; // TODO: handle arbitrary sizes (get from qualifier) + TIntermAggregate* load = new TIntermAggregate(EOpImageLoad); + + load->setType(TType(sampler.type, EvqTemporary, vecSize)); + load->setLoc(loc); + load->getSequence().push_back(base); + load->getSequence().push_back(index); + return load; + } + } + + return nullptr; +} + // // Handle seeing a base[index] dereference in the grammar. // TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) { - TIntermTyped* result = nullptr; + TIntermTyped* result = handleBracketOperator(loc, base, index); + + if (result != nullptr) + return result; // it was handled as an operator[] bool flattened = false; int indexValue = 0; @@ -425,10 +453,10 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt field == "SampleLevel") { // If it's not a method on a sampler object, we fall through in case it is a struct member. if (base->getType().getBasicType() == EbtSampler) { - const TSampler& texType = base->getType().getSampler(); - if (! texType.isPureSampler()) { - const int vecSize = texType.isShadow() ? 1 : 4; - return intermediate.addMethod(base, TType(texType.type, EvqTemporary, vecSize), &field, loc); + const TSampler& sampler = base->getType().getSampler(); + if (! sampler.isPureSampler()) { + const int vecSize = sampler.isShadow() ? 1 : 4; // TODO: handle arbitrary sample return sizes + return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc); } } } @@ -1261,7 +1289,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType case Esd2D: numDims = 2; break; // W, H case Esd3D: numDims = 3; break; // W, H, D case EsdCube: numDims = 2; break; // W, H (cube) - case EsdBuffer: numDims = 1; break; // buffers + case EsdBuffer: numDims = 1; break; // W (buffers) default: assert(0 && "unhandled texture dimension"); } diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index c8ebdbe8..78beadb3 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -61,6 +61,7 @@ public: void handlePragma(const TSourceLoc&, const TVector&); TIntermTyped* handleVariable(const TSourceLoc&, TSymbol* symbol, const TString* string); TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); + TIntermTyped* handleBracketOperator(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void checkIndex(const TSourceLoc&, const TType&, int& index); TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right); From 90707966eae3622d7d87d67a3cf8f163bd81320d Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 7 Oct 2016 19:35:40 -0600 Subject: [PATCH 047/130] HLSL: phase 2b: add l-value operator[] for RWTexture/RWBuffer This commit adds l-value support for RW texture and buffer objects. Supported are: - pre and post inc/decrement - function out parameters - op-assignments, such as *=, +-, etc. - result values from op-assignments. e.g, val=(MyRwTex[loc] *= 2); Not supported are: - Function inout parameters - multiple post-inc/decrement operators. E.g, MyRWTex[loc]++++; --- Test/baseResults/hlsl.rw.bracket.frag.out | 2997 +++++++++++++++---- Test/hlsl.rw.bracket.frag | 87 +- glslang/MachineIndependent/Intermediate.cpp | 4 + hlsl/hlslGrammar.cpp | 4 + hlsl/hlslParseHelper.cpp | 252 +- hlsl/hlslParseHelper.h | 8 +- 6 files changed, 2766 insertions(+), 586 deletions(-) diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out index 7c72e98b..b0dc68b7 100644 --- a/Test/baseResults/hlsl.rw.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -2,187 +2,836 @@ hlsl.rw.bracket.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) -0:38 Function Parameters: -0:38 'x' (in 4-component vector of int) -0:? Sequence -0:38 Branch: Return with expression -0:38 'x' (in 4-component vector of int) -0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) -0:39 Function Parameters: -0:39 'x' (in 4-component vector of uint) -0:? Sequence -0:39 Branch: Return with expression -0:39 'x' (in 4-component vector of uint) -0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) -0:40 Function Parameters: -0:40 'x' (in 4-component vector of float) -0:? Sequence -0:40 Branch: Return with expression -0:40 'x' (in 4-component vector of float) -0:42 Function Definition: Fn2(vi4; (temp void) +0:42 Function Definition: Fn1(vi4; (temp 4-component vector of int) 0:42 Function Parameters: -0:42 'x' (out 4-component vector of int) +0:42 'x' (in 4-component vector of int) 0:? Sequence -0:42 move second child to first child (temp 4-component vector of int) -0:42 'x' (out 4-component vector of int) -0:42 Constant: -0:42 0 (const int) -0:42 0 (const int) -0:42 0 (const int) -0:42 0 (const int) -0:43 Function Definition: Fn2(vu4; (temp void) +0:42 Branch: Return with expression +0:42 'x' (in 4-component vector of int) +0:43 Function Definition: Fn1(vu4; (temp 4-component vector of uint) 0:43 Function Parameters: -0:43 'x' (out 4-component vector of uint) +0:43 'x' (in 4-component vector of uint) 0:? Sequence -0:43 move second child to first child (temp 4-component vector of uint) -0:43 'x' (out 4-component vector of uint) -0:43 Constant: -0:43 0 (const uint) -0:43 0 (const uint) -0:43 0 (const uint) -0:43 0 (const uint) -0:44 Function Definition: Fn2(vf4; (temp void) +0:43 Branch: Return with expression +0:43 'x' (in 4-component vector of uint) +0:44 Function Definition: Fn1(vf4; (temp 4-component vector of float) 0:44 Function Parameters: -0:44 'x' (out 4-component vector of float) +0:44 'x' (in 4-component vector of float) 0:? Sequence -0:44 move second child to first child (temp 4-component vector of float) -0:44 'x' (out 4-component vector of float) -0:44 Constant: -0:44 0.000000 -0:44 0.000000 -0:44 0.000000 -0:44 0.000000 -0:47 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:44 Branch: Return with expression +0:44 'x' (in 4-component vector of float) +0:46 Function Definition: Fn2(vi4; (temp void) +0:46 Function Parameters: +0:46 'x' (out 4-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 4-component vector of int) +0:46 'x' (out 4-component vector of int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:47 Function Definition: Fn2(vu4; (temp void) 0:47 Function Parameters: +0:47 'x' (out 4-component vector of uint) 0:? Sequence -0:53 imageLoad (temp 4-component vector of float) -0:53 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) -0:53 c1: direct index for structure (layout(offset=0 ) uniform int) -0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:53 Constant: -0:53 0 (const uint) -0:55 Sequence -0:55 move second child to first child (temp 4-component vector of float) -0:55 'r00' (temp 4-component vector of float) -0:55 imageLoad (temp 4-component vector of float) -0:55 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) -0:55 c1: direct index for structure (layout(offset=0 ) uniform int) -0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:55 Constant: -0:55 0 (const uint) -0:56 Sequence -0:56 move second child to first child (temp 4-component vector of int) -0:56 'r01' (temp 4-component vector of int) -0:56 imageLoad (temp 4-component vector of int) -0:56 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) -0:56 c1: direct index for structure (layout(offset=0 ) uniform int) -0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:56 Constant: -0:56 0 (const uint) -0:57 Sequence -0:57 move second child to first child (temp 4-component vector of uint) -0:57 'r02' (temp 4-component vector of uint) -0:57 imageLoad (temp 4-component vector of uint) -0:57 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) -0:57 c1: direct index for structure (layout(offset=0 ) uniform int) -0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:57 Constant: -0:57 0 (const uint) +0:47 move second child to first child (temp 4-component vector of uint) +0:47 'x' (out 4-component vector of uint) +0:47 Constant: +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:48 Function Definition: Fn2(vf4; (temp void) +0:48 Function Parameters: +0:48 'x' (out 4-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:48 'x' (out 4-component vector of float) +0:48 Constant: +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp 4-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 4-component vector of float) +0:50 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:50 Constant: +0:50 3 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 4-component vector of float) +0:57 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of float) +0:59 'r00' (temp 4-component vector of float) +0:59 imageLoad (temp 4-component vector of float) +0:59 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:59 Constant: +0:59 0 (const uint) 0:60 Sequence -0:60 move second child to first child (temp 4-component vector of float) -0:60 'r10' (temp 4-component vector of float) -0:60 imageLoad (temp 4-component vector of float) -0:60 'g_tTex2df4' (layout(rgba32f ) uniform image2D) -0:60 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) -0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 move second child to first child (temp 4-component vector of int) +0:60 'r01' (temp 4-component vector of int) +0:60 imageLoad (temp 4-component vector of int) +0:60 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:60 Constant: -0:60 1 (const uint) +0:60 0 (const uint) 0:61 Sequence -0:61 move second child to first child (temp 4-component vector of int) -0:61 'r11' (temp 4-component vector of int) -0:61 imageLoad (temp 4-component vector of int) -0:61 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) -0:61 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) -0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 move second child to first child (temp 4-component vector of uint) +0:61 'r02' (temp 4-component vector of uint) +0:61 imageLoad (temp 4-component vector of uint) +0:61 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:61 Constant: -0:61 1 (const uint) -0:62 Sequence -0:62 move second child to first child (temp 4-component vector of uint) -0:62 'r12' (temp 4-component vector of uint) -0:62 imageLoad (temp 4-component vector of uint) -0:62 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) -0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) -0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:62 Constant: -0:62 1 (const uint) +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of float) +0:64 'r10' (temp 4-component vector of float) +0:64 imageLoad (temp 4-component vector of float) +0:64 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:64 Constant: +0:64 1 (const uint) 0:65 Sequence -0:65 move second child to first child (temp 4-component vector of float) -0:65 'r20' (temp 4-component vector of float) -0:65 imageLoad (temp 4-component vector of float) -0:65 'g_tTex3df4' (layout(rgba32f ) uniform image3D) -0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) -0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:65 move second child to first child (temp 4-component vector of int) +0:65 'r11' (temp 4-component vector of int) +0:65 imageLoad (temp 4-component vector of int) +0:65 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:65 Constant: -0:65 2 (const uint) +0:65 1 (const uint) 0:66 Sequence -0:66 move second child to first child (temp 4-component vector of int) -0:66 'r21' (temp 4-component vector of int) -0:66 imageLoad (temp 4-component vector of int) -0:66 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) -0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) -0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 move second child to first child (temp 4-component vector of uint) +0:66 'r12' (temp 4-component vector of uint) +0:66 imageLoad (temp 4-component vector of uint) +0:66 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:66 Constant: -0:66 2 (const uint) -0:67 Sequence -0:67 move second child to first child (temp 4-component vector of uint) -0:67 'r22' (temp 4-component vector of uint) -0:67 imageLoad (temp 4-component vector of uint) -0:67 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) -0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) -0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:67 Constant: -0:67 2 (const uint) -0:86 Function Call: Fn1(vf4; (temp 4-component vector of float) -0:86 imageLoad (temp 4-component vector of float) -0:86 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) -0:86 c1: direct index for structure (layout(offset=0 ) uniform int) -0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:86 Constant: -0:86 0 (const uint) -0:87 Function Call: Fn1(vi4; (temp 4-component vector of int) -0:87 imageLoad (temp 4-component vector of int) -0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 4-component vector of float) +0:69 'r20' (temp 4-component vector of float) +0:69 imageLoad (temp 4-component vector of float) +0:69 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of int) +0:70 'r21' (temp 4-component vector of int) +0:70 imageLoad (temp 4-component vector of int) +0:70 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of uint) +0:71 'r22' (temp 4-component vector of uint) +0:71 imageLoad (temp 4-component vector of uint) +0:71 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 4-component vector of float) +0:73 'lf4' (temp 4-component vector of float) +0:73 uf4: direct index for structure (layout(offset=96 ) uniform 4-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 Function Call: SomeValue( (temp 4-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf4' (temp 4-component vector of float) +0:78 'lf4' (temp 4-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of float) +0:83 'val1' (temp 4-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 imageLoad (temp 4-component vector of float) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 imageLoad (temp 4-component vector of float) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 imageLoad (temp 4-component vector of float) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) 0:87 c1: direct index for structure (layout(offset=0 ) uniform int) -0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:87 Constant: 0:87 0 (const uint) -0:88 Function Call: Fn1(vu4; (temp 4-component vector of uint) -0:88 imageLoad (temp 4-component vector of uint) -0:88 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:87 move second child to first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 imageLoad (temp 4-component vector of int) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) 0:88 c1: direct index for structure (layout(offset=0 ) uniform int) -0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:88 Constant: 0:88 0 (const uint) -0:111 move second child to first child (temp 4-component vector of float) -0:111 Color: direct index for structure (temp 4-component vector of float) -0:111 'psout' (temp structure{temp 4-component vector of float Color}) -0:111 Constant: -0:111 0 (const int) -0:111 Constant: -0:111 1.000000 -0:111 1.000000 -0:111 1.000000 -0:111 1.000000 -0:113 Sequence +0:88 move second child to first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 imageLoad (temp 4-component vector of int) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 imageLoad (temp 4-component vector of int) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 imageLoad (temp 4-component vector of int) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 imageLoad (temp 4-component vector of int) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 imageLoad (temp 4-component vector of int) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 Function Call: SomeValue( (temp 4-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf4' (temp 4-component vector of float) +0:96 'lf4' (temp 4-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 Function Call: SomeValue( (temp 4-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf4' (temp 4-component vector of float) +0:102 'lf4' (temp 4-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:? 7 (const int) +0:? 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:107 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:107 imageLoad (temp 4-component vector of float) +0:107 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:108 imageLoad (temp 4-component vector of int) +0:108 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:109 imageLoad (temp 4-component vector of uint) +0:109 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf4; (temp void) +0:111 'tempArg' (temp 4-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 4-component vector of float) +0:111 'tempArg' (temp 4-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi4; (temp void) +0:112 'tempArg' (temp 4-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 4-component vector of int) +0:112 'tempArg' (temp 4-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu4; (temp void) +0:113 'tempArg' (temp 4-component vector of uint) 0:113 Sequence -0:113 move second child to first child (temp 4-component vector of float) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:113 Color: direct index for structure (temp 4-component vector of float) -0:113 'psout' (temp structure{temp 4-component vector of float Color}) +0:113 imageStore (temp void) +0:113 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:113 Constant: -0:113 0 (const int) -0:113 Branch: Return +0:113 0 (const uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageLoad (temp 4-component vector of float) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageLoad (temp 4-component vector of int) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageLoad (temp 4-component vector of uint) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageLoad (temp 4-component vector of float) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageLoad (temp 4-component vector of int) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageLoad (temp 4-component vector of uint) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 imageLoad (temp 4-component vector of float) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 Post-Increment (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 imageLoad (temp 4-component vector of uint) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 Post-Decrement (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 imageLoad (temp 4-component vector of int) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 Post-Increment (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 imageLoad (temp 4-component vector of float) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 Post-Decrement (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 imageLoad (temp 4-component vector of int) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 Post-Increment (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 imageLoad (temp 4-component vector of uint) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 Post-Decrement (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:134 move second child to first child (temp 4-component vector of float) +0:134 Color: direct index for structure (temp 4-component vector of float) +0:134 'psout' (temp structure{temp 4-component vector of float Color}) +0:134 Constant: +0:134 0 (const int) +0:134 Constant: +0:134 1.000000 +0:134 1.000000 +0:134 1.000000 +0:134 1.000000 +0:136 Sequence +0:136 Sequence +0:136 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:136 Color: direct index for structure (temp 4-component vector of float) +0:136 'psout' (temp structure{temp 4-component vector of float Color}) +0:136 Constant: +0:136 0 (const int) +0:136 Branch: Return 0:? Linker Objects 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) @@ -200,7 +849,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) @@ -210,187 +859,836 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) -0:38 Function Parameters: -0:38 'x' (in 4-component vector of int) -0:? Sequence -0:38 Branch: Return with expression -0:38 'x' (in 4-component vector of int) -0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) -0:39 Function Parameters: -0:39 'x' (in 4-component vector of uint) -0:? Sequence -0:39 Branch: Return with expression -0:39 'x' (in 4-component vector of uint) -0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) -0:40 Function Parameters: -0:40 'x' (in 4-component vector of float) -0:? Sequence -0:40 Branch: Return with expression -0:40 'x' (in 4-component vector of float) -0:42 Function Definition: Fn2(vi4; (temp void) +0:42 Function Definition: Fn1(vi4; (temp 4-component vector of int) 0:42 Function Parameters: -0:42 'x' (out 4-component vector of int) +0:42 'x' (in 4-component vector of int) 0:? Sequence -0:42 move second child to first child (temp 4-component vector of int) -0:42 'x' (out 4-component vector of int) -0:42 Constant: -0:42 0 (const int) -0:42 0 (const int) -0:42 0 (const int) -0:42 0 (const int) -0:43 Function Definition: Fn2(vu4; (temp void) +0:42 Branch: Return with expression +0:42 'x' (in 4-component vector of int) +0:43 Function Definition: Fn1(vu4; (temp 4-component vector of uint) 0:43 Function Parameters: -0:43 'x' (out 4-component vector of uint) +0:43 'x' (in 4-component vector of uint) 0:? Sequence -0:43 move second child to first child (temp 4-component vector of uint) -0:43 'x' (out 4-component vector of uint) -0:43 Constant: -0:43 0 (const uint) -0:43 0 (const uint) -0:43 0 (const uint) -0:43 0 (const uint) -0:44 Function Definition: Fn2(vf4; (temp void) +0:43 Branch: Return with expression +0:43 'x' (in 4-component vector of uint) +0:44 Function Definition: Fn1(vf4; (temp 4-component vector of float) 0:44 Function Parameters: -0:44 'x' (out 4-component vector of float) +0:44 'x' (in 4-component vector of float) 0:? Sequence -0:44 move second child to first child (temp 4-component vector of float) -0:44 'x' (out 4-component vector of float) -0:44 Constant: -0:44 0.000000 -0:44 0.000000 -0:44 0.000000 -0:44 0.000000 -0:47 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:44 Branch: Return with expression +0:44 'x' (in 4-component vector of float) +0:46 Function Definition: Fn2(vi4; (temp void) +0:46 Function Parameters: +0:46 'x' (out 4-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 4-component vector of int) +0:46 'x' (out 4-component vector of int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:47 Function Definition: Fn2(vu4; (temp void) 0:47 Function Parameters: +0:47 'x' (out 4-component vector of uint) 0:? Sequence -0:53 imageLoad (temp 4-component vector of float) -0:53 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) -0:53 c1: direct index for structure (layout(offset=0 ) uniform int) -0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:53 Constant: -0:53 0 (const uint) -0:55 Sequence -0:55 move second child to first child (temp 4-component vector of float) -0:55 'r00' (temp 4-component vector of float) -0:55 imageLoad (temp 4-component vector of float) -0:55 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) -0:55 c1: direct index for structure (layout(offset=0 ) uniform int) -0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:55 Constant: -0:55 0 (const uint) -0:56 Sequence -0:56 move second child to first child (temp 4-component vector of int) -0:56 'r01' (temp 4-component vector of int) -0:56 imageLoad (temp 4-component vector of int) -0:56 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) -0:56 c1: direct index for structure (layout(offset=0 ) uniform int) -0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:56 Constant: -0:56 0 (const uint) -0:57 Sequence -0:57 move second child to first child (temp 4-component vector of uint) -0:57 'r02' (temp 4-component vector of uint) -0:57 imageLoad (temp 4-component vector of uint) -0:57 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) -0:57 c1: direct index for structure (layout(offset=0 ) uniform int) -0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:57 Constant: -0:57 0 (const uint) +0:47 move second child to first child (temp 4-component vector of uint) +0:47 'x' (out 4-component vector of uint) +0:47 Constant: +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:48 Function Definition: Fn2(vf4; (temp void) +0:48 Function Parameters: +0:48 'x' (out 4-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:48 'x' (out 4-component vector of float) +0:48 Constant: +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp 4-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 4-component vector of float) +0:50 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:50 Constant: +0:50 3 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 4-component vector of float) +0:57 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of float) +0:59 'r00' (temp 4-component vector of float) +0:59 imageLoad (temp 4-component vector of float) +0:59 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:59 Constant: +0:59 0 (const uint) 0:60 Sequence -0:60 move second child to first child (temp 4-component vector of float) -0:60 'r10' (temp 4-component vector of float) -0:60 imageLoad (temp 4-component vector of float) -0:60 'g_tTex2df4' (layout(rgba32f ) uniform image2D) -0:60 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) -0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 move second child to first child (temp 4-component vector of int) +0:60 'r01' (temp 4-component vector of int) +0:60 imageLoad (temp 4-component vector of int) +0:60 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:60 Constant: -0:60 1 (const uint) +0:60 0 (const uint) 0:61 Sequence -0:61 move second child to first child (temp 4-component vector of int) -0:61 'r11' (temp 4-component vector of int) -0:61 imageLoad (temp 4-component vector of int) -0:61 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) -0:61 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) -0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 move second child to first child (temp 4-component vector of uint) +0:61 'r02' (temp 4-component vector of uint) +0:61 imageLoad (temp 4-component vector of uint) +0:61 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:61 Constant: -0:61 1 (const uint) -0:62 Sequence -0:62 move second child to first child (temp 4-component vector of uint) -0:62 'r12' (temp 4-component vector of uint) -0:62 imageLoad (temp 4-component vector of uint) -0:62 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) -0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) -0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:62 Constant: -0:62 1 (const uint) +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of float) +0:64 'r10' (temp 4-component vector of float) +0:64 imageLoad (temp 4-component vector of float) +0:64 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:64 Constant: +0:64 1 (const uint) 0:65 Sequence -0:65 move second child to first child (temp 4-component vector of float) -0:65 'r20' (temp 4-component vector of float) -0:65 imageLoad (temp 4-component vector of float) -0:65 'g_tTex3df4' (layout(rgba32f ) uniform image3D) -0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) -0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:65 move second child to first child (temp 4-component vector of int) +0:65 'r11' (temp 4-component vector of int) +0:65 imageLoad (temp 4-component vector of int) +0:65 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:65 Constant: -0:65 2 (const uint) +0:65 1 (const uint) 0:66 Sequence -0:66 move second child to first child (temp 4-component vector of int) -0:66 'r21' (temp 4-component vector of int) -0:66 imageLoad (temp 4-component vector of int) -0:66 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) -0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) -0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 move second child to first child (temp 4-component vector of uint) +0:66 'r12' (temp 4-component vector of uint) +0:66 imageLoad (temp 4-component vector of uint) +0:66 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:66 Constant: -0:66 2 (const uint) -0:67 Sequence -0:67 move second child to first child (temp 4-component vector of uint) -0:67 'r22' (temp 4-component vector of uint) -0:67 imageLoad (temp 4-component vector of uint) -0:67 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) -0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) -0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:67 Constant: -0:67 2 (const uint) -0:86 Function Call: Fn1(vf4; (temp 4-component vector of float) -0:86 imageLoad (temp 4-component vector of float) -0:86 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) -0:86 c1: direct index for structure (layout(offset=0 ) uniform int) -0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:86 Constant: -0:86 0 (const uint) -0:87 Function Call: Fn1(vi4; (temp 4-component vector of int) -0:87 imageLoad (temp 4-component vector of int) -0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 4-component vector of float) +0:69 'r20' (temp 4-component vector of float) +0:69 imageLoad (temp 4-component vector of float) +0:69 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of int) +0:70 'r21' (temp 4-component vector of int) +0:70 imageLoad (temp 4-component vector of int) +0:70 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of uint) +0:71 'r22' (temp 4-component vector of uint) +0:71 imageLoad (temp 4-component vector of uint) +0:71 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 4-component vector of float) +0:73 'lf4' (temp 4-component vector of float) +0:73 uf4: direct index for structure (layout(offset=96 ) uniform 4-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 Function Call: SomeValue( (temp 4-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf4' (temp 4-component vector of float) +0:78 'lf4' (temp 4-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of float) +0:83 'val1' (temp 4-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 imageLoad (temp 4-component vector of float) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 imageLoad (temp 4-component vector of float) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 imageLoad (temp 4-component vector of float) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) 0:87 c1: direct index for structure (layout(offset=0 ) uniform int) -0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:87 Constant: 0:87 0 (const uint) -0:88 Function Call: Fn1(vu4; (temp 4-component vector of uint) -0:88 imageLoad (temp 4-component vector of uint) -0:88 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:87 move second child to first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 imageLoad (temp 4-component vector of int) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) 0:88 c1: direct index for structure (layout(offset=0 ) uniform int) -0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:88 Constant: 0:88 0 (const uint) -0:111 move second child to first child (temp 4-component vector of float) -0:111 Color: direct index for structure (temp 4-component vector of float) -0:111 'psout' (temp structure{temp 4-component vector of float Color}) -0:111 Constant: -0:111 0 (const int) -0:111 Constant: -0:111 1.000000 -0:111 1.000000 -0:111 1.000000 -0:111 1.000000 -0:113 Sequence +0:88 move second child to first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 imageLoad (temp 4-component vector of int) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 imageLoad (temp 4-component vector of int) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 imageLoad (temp 4-component vector of int) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 imageLoad (temp 4-component vector of int) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 imageLoad (temp 4-component vector of int) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 Function Call: SomeValue( (temp 4-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf4' (temp 4-component vector of float) +0:96 'lf4' (temp 4-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 Function Call: SomeValue( (temp 4-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf4' (temp 4-component vector of float) +0:102 'lf4' (temp 4-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:? 7 (const int) +0:? 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:107 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:107 imageLoad (temp 4-component vector of float) +0:107 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:108 imageLoad (temp 4-component vector of int) +0:108 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:109 imageLoad (temp 4-component vector of uint) +0:109 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf4; (temp void) +0:111 'tempArg' (temp 4-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 4-component vector of float) +0:111 'tempArg' (temp 4-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi4; (temp void) +0:112 'tempArg' (temp 4-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 4-component vector of int) +0:112 'tempArg' (temp 4-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu4; (temp void) +0:113 'tempArg' (temp 4-component vector of uint) 0:113 Sequence -0:113 move second child to first child (temp 4-component vector of float) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:113 Color: direct index for structure (temp 4-component vector of float) -0:113 'psout' (temp structure{temp 4-component vector of float Color}) +0:113 imageStore (temp void) +0:113 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:113 Constant: -0:113 0 (const int) -0:113 Branch: Return +0:113 0 (const uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageLoad (temp 4-component vector of float) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageLoad (temp 4-component vector of int) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageLoad (temp 4-component vector of uint) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageLoad (temp 4-component vector of float) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageLoad (temp 4-component vector of int) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageLoad (temp 4-component vector of uint) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 imageLoad (temp 4-component vector of float) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 Post-Increment (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 imageLoad (temp 4-component vector of uint) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 Post-Decrement (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 imageLoad (temp 4-component vector of int) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 Post-Increment (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 imageLoad (temp 4-component vector of float) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 Post-Decrement (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 imageLoad (temp 4-component vector of int) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 Post-Increment (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 imageLoad (temp 4-component vector of uint) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 Post-Decrement (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:134 move second child to first child (temp 4-component vector of float) +0:134 Color: direct index for structure (temp 4-component vector of float) +0:134 'psout' (temp structure{temp 4-component vector of float Color}) +0:134 Constant: +0:134 0 (const int) +0:134 Constant: +0:134 1.000000 +0:134 1.000000 +0:134 1.000000 +0:134 1.000000 +0:136 Sequence +0:136 Sequence +0:136 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:136 Color: direct index for structure (temp 4-component vector of float) +0:136 'psout' (temp structure{temp 4-component vector of float Color}) +0:136 Constant: +0:136 0 (const int) +0:136 Branch: Return 0:? Linker Objects 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) @@ -408,18 +1706,18 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 190 +// Id's are bound by 596 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 165 + EntryPoint Fragment 4 "main" 571 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 11 "Fn1(vi4;" @@ -434,77 +1732,149 @@ gl_FragCoord origin is upper left Name 32 "x" Name 37 "Fn2(vf4;" Name 36 "x" - Name 56 "g_tTex1df4" - Name 60 "$Global" - MemberName 60($Global) 0 "c1" - MemberName 60($Global) 1 "c2" - MemberName 60($Global) 2 "c3" - MemberName 60($Global) 3 "c4" - MemberName 60($Global) 4 "o1" - MemberName 60($Global) 5 "o2" - MemberName 60($Global) 6 "o3" - MemberName 60($Global) 7 "o4" - Name 62 "" - Name 67 "r00" - Name 72 "r01" - Name 75 "g_tTex1di4" - Name 80 "r02" - Name 83 "g_tTex1du4" - Name 88 "r10" - Name 91 "g_tTex2df4" - Name 98 "r11" - Name 101 "g_tTex2di4" - Name 106 "r12" - Name 109 "g_tTex2du4" - Name 114 "r20" - Name 117 "g_tTex3df4" - Name 124 "r21" - Name 127 "g_tTex3di4" - Name 132 "r22" - Name 135 "g_tTex3du4" - Name 144 "param" - Name 150 "param" - Name 156 "param" - Name 158 "PS_OUTPUT" - MemberName 158(PS_OUTPUT) 0 "Color" - Name 160 "psout" - Name 165 "Color" - Name 171 "g_sSamp" - Name 174 "g_tTex1df4a" - Name 177 "g_tTex1di4a" - Name 180 "g_tTex1du4a" - Name 183 "g_tTex2df4a" - Name 186 "g_tTex2di4a" - Name 189 "g_tTex2du4a" - Decorate 56(g_tTex1df4) DescriptorSet 0 - Decorate 56(g_tTex1df4) Binding 0 - MemberDecorate 60($Global) 0 Offset 0 - MemberDecorate 60($Global) 1 Offset 8 - MemberDecorate 60($Global) 2 Offset 16 - MemberDecorate 60($Global) 3 Offset 32 - MemberDecorate 60($Global) 4 Offset 48 - MemberDecorate 60($Global) 5 Offset 56 - MemberDecorate 60($Global) 6 Offset 64 - MemberDecorate 60($Global) 7 Offset 80 - Decorate 60($Global) Block - Decorate 62 DescriptorSet 0 - Decorate 75(g_tTex1di4) DescriptorSet 0 - Decorate 83(g_tTex1du4) DescriptorSet 0 - Decorate 91(g_tTex2df4) DescriptorSet 0 - Decorate 101(g_tTex2di4) DescriptorSet 0 - Decorate 109(g_tTex2du4) DescriptorSet 0 - Decorate 117(g_tTex3df4) DescriptorSet 0 - Decorate 127(g_tTex3di4) DescriptorSet 0 - Decorate 135(g_tTex3du4) DescriptorSet 0 - Decorate 165(Color) Location 0 - Decorate 171(g_sSamp) DescriptorSet 0 - Decorate 171(g_sSamp) Binding 0 - Decorate 174(g_tTex1df4a) DescriptorSet 0 - Decorate 177(g_tTex1di4a) DescriptorSet 0 - Decorate 180(g_tTex1du4a) DescriptorSet 0 - Decorate 183(g_tTex2df4a) DescriptorSet 0 - Decorate 186(g_tTex2di4a) DescriptorSet 0 - Decorate 189(g_tTex2du4a) DescriptorSet 0 + Name 40 "SomeValue(" + Name 59 "$Global" + MemberName 59($Global) 0 "c1" + MemberName 59($Global) 1 "c2" + MemberName 59($Global) 2 "c3" + MemberName 59($Global) 3 "c4" + MemberName 59($Global) 4 "o1" + MemberName 59($Global) 5 "o2" + MemberName 59($Global) 6 "o3" + MemberName 59($Global) 7 "o4" + MemberName 59($Global) 8 "uf4" + MemberName 59($Global) 9 "ui4" + MemberName 59($Global) 10 "uu4" + Name 61 "" + Name 71 "g_tTex1df4" + Name 77 "r00" + Name 82 "r01" + Name 85 "g_tTex1di4" + Name 90 "r02" + Name 93 "g_tTex1du4" + Name 98 "r10" + Name 101 "g_tTex2df4" + Name 108 "r11" + Name 111 "g_tTex2di4" + Name 116 "r12" + Name 119 "g_tTex2du4" + Name 124 "r20" + Name 127 "g_tTex3df4" + Name 134 "r21" + Name 137 "g_tTex3di4" + Name 142 "r22" + Name 145 "g_tTex3du4" + Name 150 "lf4" + Name 155 "storeTemp" + Name 165 "storeTemp" + Name 172 "storeTemp" + Name 181 "val1" + Name 183 "coordTemp" + Name 186 "storeTemp" + Name 197 "coordTemp" + Name 200 "storeTemp" + Name 211 "coordTemp" + Name 214 "storeTemp" + Name 225 "coordTemp" + Name 228 "storeTemp" + Name 238 "coordTemp" + Name 241 "storeTemp" + Name 251 "coordTemp" + Name 254 "storeTemp" + Name 265 "coordTemp" + Name 268 "storeTemp" + Name 279 "coordTemp" + Name 282 "storeTemp" + Name 292 "coordTemp" + Name 295 "storeTemp" + Name 305 "storeTemp" + Name 315 "storeTemp" + Name 322 "storeTemp" + Name 329 "storeTemp" + Name 339 "storeTemp" + Name 347 "storeTemp" + Name 358 "param" + Name 364 "param" + Name 370 "param" + Name 372 "tempArg" + Name 373 "param" + Name 380 "tempArg" + Name 381 "param" + Name 388 "tempArg" + Name 389 "param" + Name 396 "coordTemp" + Name 399 "storeTemp" + Name 410 "coordTemp" + Name 413 "storeTemp" + Name 423 "coordTemp" + Name 426 "storeTemp" + Name 436 "coordTemp" + Name 439 "storeTemp" + Name 449 "coordTemp" + Name 452 "storeTemp" + Name 462 "coordTemp" + Name 465 "storeTemp" + Name 475 "coordTemp" + Name 478 "storeTempPre" + Name 482 "storeTempPost" + Name 490 "coordTemp" + Name 493 "storeTempPre" + Name 497 "storeTempPost" + Name 505 "coordTemp" + Name 508 "storeTempPre" + Name 512 "storeTempPost" + Name 520 "coordTemp" + Name 523 "storeTempPre" + Name 527 "storeTempPost" + Name 535 "coordTemp" + Name 538 "storeTempPre" + Name 542 "storeTempPost" + Name 550 "coordTemp" + Name 553 "storeTempPre" + Name 557 "storeTempPost" + Name 565 "PS_OUTPUT" + MemberName 565(PS_OUTPUT) 0 "Color" + Name 567 "psout" + Name 571 "Color" + Name 577 "g_sSamp" + Name 580 "g_tTex1df4a" + Name 583 "g_tTex1di4a" + Name 586 "g_tTex1du4a" + Name 589 "g_tTex2df4a" + Name 592 "g_tTex2di4a" + Name 595 "g_tTex2du4a" + MemberDecorate 59($Global) 0 Offset 0 + MemberDecorate 59($Global) 1 Offset 8 + MemberDecorate 59($Global) 2 Offset 16 + MemberDecorate 59($Global) 3 Offset 32 + MemberDecorate 59($Global) 4 Offset 48 + MemberDecorate 59($Global) 5 Offset 56 + MemberDecorate 59($Global) 6 Offset 64 + MemberDecorate 59($Global) 7 Offset 80 + MemberDecorate 59($Global) 8 Offset 96 + MemberDecorate 59($Global) 9 Offset 112 + MemberDecorate 59($Global) 10 Offset 128 + Decorate 59($Global) Block + Decorate 61 DescriptorSet 0 + Decorate 71(g_tTex1df4) DescriptorSet 0 + Decorate 71(g_tTex1df4) Binding 0 + Decorate 85(g_tTex1di4) DescriptorSet 0 + Decorate 93(g_tTex1du4) DescriptorSet 0 + Decorate 101(g_tTex2df4) DescriptorSet 0 + Decorate 111(g_tTex2di4) DescriptorSet 0 + Decorate 119(g_tTex2du4) DescriptorSet 0 + Decorate 127(g_tTex3df4) DescriptorSet 0 + Decorate 137(g_tTex3di4) DescriptorSet 0 + Decorate 145(g_tTex3du4) DescriptorSet 0 + Decorate 571(Color) Location 0 + Decorate 577(g_sSamp) DescriptorSet 0 + Decorate 577(g_sSamp) Binding 0 + Decorate 580(g_tTex1df4a) DescriptorSet 0 + Decorate 583(g_tTex1di4a) DescriptorSet 0 + Decorate 586(g_tTex1du4a) DescriptorSet 0 + Decorate 589(g_tTex2df4a) DescriptorSet 0 + Decorate 592(g_tTex2di4a) DescriptorSet 0 + Decorate 595(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -522,198 +1892,723 @@ gl_FragCoord origin is upper left 27: TypeFunction 2 8(ptr) 31: TypeFunction 2 15(ptr) 35: TypeFunction 2 22(ptr) - 48: 6(int) Constant 0 - 49: 7(ivec4) ConstantComposite 48 48 48 48 - 50: 13(int) Constant 0 - 51: 14(ivec4) ConstantComposite 50 50 50 50 - 52: 20(float) Constant 0 - 53: 21(fvec4) ConstantComposite 52 52 52 52 - 54: TypeImage 20(float) 1D nonsampled format:Rgba32f - 55: TypePointer UniformConstant 54 - 56(g_tTex1df4): 55(ptr) Variable UniformConstant - 58: TypeVector 6(int) 2 - 59: TypeVector 6(int) 3 - 60($Global): TypeStruct 6(int) 58(ivec2) 59(ivec3) 7(ivec4) 6(int) 58(ivec2) 59(ivec3) 7(ivec4) - 61: TypePointer Uniform 60($Global) - 62: 61(ptr) Variable Uniform - 63: TypePointer Uniform 6(int) - 73: TypeImage 6(int) 1D nonsampled format:Rgba32i - 74: TypePointer UniformConstant 73 - 75(g_tTex1di4): 74(ptr) Variable UniformConstant - 81: TypeImage 13(int) 1D nonsampled format:Rgba32ui - 82: TypePointer UniformConstant 81 - 83(g_tTex1du4): 82(ptr) Variable UniformConstant - 89: TypeImage 20(float) 2D nonsampled format:Rgba32f - 90: TypePointer UniformConstant 89 - 91(g_tTex2df4): 90(ptr) Variable UniformConstant - 93: 6(int) Constant 1 - 94: TypePointer Uniform 58(ivec2) - 99: TypeImage 6(int) 2D nonsampled format:Rgba32i + 39: TypeFunction 21(fvec4) + 51: 6(int) Constant 0 + 52: 7(ivec4) ConstantComposite 51 51 51 51 + 53: 13(int) Constant 0 + 54: 14(ivec4) ConstantComposite 53 53 53 53 + 55: 20(float) Constant 0 + 56: 21(fvec4) ConstantComposite 55 55 55 55 + 57: TypeVector 6(int) 2 + 58: TypeVector 6(int) 3 + 59($Global): TypeStruct 6(int) 57(ivec2) 58(ivec3) 7(ivec4) 6(int) 57(ivec2) 58(ivec3) 7(ivec4) 21(fvec4) 7(ivec4) 14(ivec4) + 60: TypePointer Uniform 59($Global) + 61: 60(ptr) Variable Uniform + 62: 6(int) Constant 3 + 63: TypePointer Uniform 7(ivec4) + 69: TypeImage 20(float) 1D nonsampled format:Rgba32f + 70: TypePointer UniformConstant 69 + 71(g_tTex1df4): 70(ptr) Variable UniformConstant + 73: TypePointer Uniform 6(int) + 83: TypeImage 6(int) 1D nonsampled format:Rgba32i + 84: TypePointer UniformConstant 83 + 85(g_tTex1di4): 84(ptr) Variable UniformConstant + 91: TypeImage 13(int) 1D nonsampled format:Rgba32ui + 92: TypePointer UniformConstant 91 + 93(g_tTex1du4): 92(ptr) Variable UniformConstant + 99: TypeImage 20(float) 2D nonsampled format:Rgba32f 100: TypePointer UniformConstant 99 - 101(g_tTex2di4): 100(ptr) Variable UniformConstant - 107: TypeImage 13(int) 2D nonsampled format:Rgba32ui - 108: TypePointer UniformConstant 107 - 109(g_tTex2du4): 108(ptr) Variable UniformConstant - 115: TypeImage 20(float) 3D nonsampled format:Rgba32f - 116: TypePointer UniformConstant 115 - 117(g_tTex3df4): 116(ptr) Variable UniformConstant - 119: 6(int) Constant 2 - 120: TypePointer Uniform 59(ivec3) - 125: TypeImage 6(int) 3D nonsampled format:Rgba32i + 101(g_tTex2df4): 100(ptr) Variable UniformConstant + 103: 6(int) Constant 1 + 104: TypePointer Uniform 57(ivec2) + 109: TypeImage 6(int) 2D nonsampled format:Rgba32i + 110: TypePointer UniformConstant 109 + 111(g_tTex2di4): 110(ptr) Variable UniformConstant + 117: TypeImage 13(int) 2D nonsampled format:Rgba32ui + 118: TypePointer UniformConstant 117 + 119(g_tTex2du4): 118(ptr) Variable UniformConstant + 125: TypeImage 20(float) 3D nonsampled format:Rgba32f 126: TypePointer UniformConstant 125 - 127(g_tTex3di4): 126(ptr) Variable UniformConstant - 133: TypeImage 13(int) 3D nonsampled format:Rgba32ui - 134: TypePointer UniformConstant 133 - 135(g_tTex3du4): 134(ptr) Variable UniformConstant - 158(PS_OUTPUT): TypeStruct 21(fvec4) - 159: TypePointer Function 158(PS_OUTPUT) - 161: 20(float) Constant 1065353216 - 162: 21(fvec4) ConstantComposite 161 161 161 161 - 164: TypePointer Output 21(fvec4) - 165(Color): 164(ptr) Variable Output - 169: TypeSampler - 170: TypePointer UniformConstant 169 - 171(g_sSamp): 170(ptr) Variable UniformConstant - 172: TypeImage 20(float) 1D array nonsampled format:Rgba32f - 173: TypePointer UniformConstant 172 -174(g_tTex1df4a): 173(ptr) Variable UniformConstant - 175: TypeImage 6(int) 1D array nonsampled format:Rgba32i - 176: TypePointer UniformConstant 175 -177(g_tTex1di4a): 176(ptr) Variable UniformConstant - 178: TypeImage 13(int) 1D array nonsampled format:Rgba32ui - 179: TypePointer UniformConstant 178 -180(g_tTex1du4a): 179(ptr) Variable UniformConstant - 181: TypeImage 20(float) 2D array nonsampled format:Rgba32f - 182: TypePointer UniformConstant 181 -183(g_tTex2df4a): 182(ptr) Variable UniformConstant - 184: TypeImage 6(int) 2D array nonsampled format:Rgba32i - 185: TypePointer UniformConstant 184 -186(g_tTex2di4a): 185(ptr) Variable UniformConstant - 187: TypeImage 13(int) 2D array nonsampled format:Rgba32ui - 188: TypePointer UniformConstant 187 -189(g_tTex2du4a): 188(ptr) Variable UniformConstant + 127(g_tTex3df4): 126(ptr) Variable UniformConstant + 129: 6(int) Constant 2 + 130: TypePointer Uniform 58(ivec3) + 135: TypeImage 6(int) 3D nonsampled format:Rgba32i + 136: TypePointer UniformConstant 135 + 137(g_tTex3di4): 136(ptr) Variable UniformConstant + 143: TypeImage 13(int) 3D nonsampled format:Rgba32ui + 144: TypePointer UniformConstant 143 + 145(g_tTex3du4): 144(ptr) Variable UniformConstant + 151: 6(int) Constant 8 + 152: TypePointer Uniform 21(fvec4) + 166: 6(int) Constant 4 + 167: 7(ivec4) ConstantComposite 129 129 62 166 + 173: 13(int) Constant 3 + 174: 13(int) Constant 2 + 175: 13(int) Constant 4 + 176: 14(ivec4) ConstantComposite 173 174 173 175 + 182: TypePointer Function 6(int) + 190: 20(float) Constant 1073741824 + 204: 20(float) Constant 1077936128 + 218: 20(float) Constant 1082130432 + 258: 6(int) Constant 65535 + 272: 6(int) Constant 61680 + 316: 6(int) Constant 5 + 317: 7(ivec4) ConstantComposite 316 129 62 166 + 323: 13(int) Constant 6 + 324: 14(ivec4) ConstantComposite 323 174 173 175 + 340: 6(int) Constant 6 + 341: 6(int) Constant 7 + 342: 7(ivec4) ConstantComposite 151 340 341 151 + 348: 13(int) Constant 9 + 349: 14(ivec4) ConstantComposite 348 174 173 175 + 404: 20(float) Constant 1065353216 + 565(PS_OUTPUT): TypeStruct 21(fvec4) + 566: TypePointer Function 565(PS_OUTPUT) + 568: 21(fvec4) ConstantComposite 404 404 404 404 + 570: TypePointer Output 21(fvec4) + 571(Color): 570(ptr) Variable Output + 575: TypeSampler + 576: TypePointer UniformConstant 575 + 577(g_sSamp): 576(ptr) Variable UniformConstant + 578: TypeImage 20(float) 1D array nonsampled format:Rgba32f + 579: TypePointer UniformConstant 578 +580(g_tTex1df4a): 579(ptr) Variable UniformConstant + 581: TypeImage 6(int) 1D array nonsampled format:Rgba32i + 582: TypePointer UniformConstant 581 +583(g_tTex1di4a): 582(ptr) Variable UniformConstant + 584: TypeImage 13(int) 1D array nonsampled format:Rgba32ui + 585: TypePointer UniformConstant 584 +586(g_tTex1du4a): 585(ptr) Variable UniformConstant + 587: TypeImage 20(float) 2D array nonsampled format:Rgba32f + 588: TypePointer UniformConstant 587 +589(g_tTex2df4a): 588(ptr) Variable UniformConstant + 590: TypeImage 6(int) 2D array nonsampled format:Rgba32i + 591: TypePointer UniformConstant 590 +592(g_tTex2di4a): 591(ptr) Variable UniformConstant + 593: TypeImage 13(int) 2D array nonsampled format:Rgba32ui + 594: TypePointer UniformConstant 593 +595(g_tTex2du4a): 594(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 67(r00): 22(ptr) Variable Function - 72(r01): 8(ptr) Variable Function - 80(r02): 15(ptr) Variable Function - 88(r10): 22(ptr) Variable Function - 98(r11): 8(ptr) Variable Function - 106(r12): 15(ptr) Variable Function - 114(r20): 22(ptr) Variable Function - 124(r21): 8(ptr) Variable Function - 132(r22): 15(ptr) Variable Function - 144(param): 22(ptr) Variable Function - 150(param): 8(ptr) Variable Function - 156(param): 15(ptr) Variable Function - 160(psout): 159(ptr) Variable Function - 57: 54 Load 56(g_tTex1df4) - 64: 63(ptr) AccessChain 62 48 - 65: 6(int) Load 64 - 66: 21(fvec4) ImageRead 57 65 - 68: 54 Load 56(g_tTex1df4) - 69: 63(ptr) AccessChain 62 48 - 70: 6(int) Load 69 - 71: 21(fvec4) ImageRead 68 70 - Store 67(r00) 71 - 76: 73 Load 75(g_tTex1di4) - 77: 63(ptr) AccessChain 62 48 - 78: 6(int) Load 77 - 79: 7(ivec4) ImageRead 76 78 - Store 72(r01) 79 - 84: 81 Load 83(g_tTex1du4) - 85: 63(ptr) AccessChain 62 48 - 86: 6(int) Load 85 - 87: 14(ivec4) ImageRead 84 86 - Store 80(r02) 87 - 92: 89 Load 91(g_tTex2df4) - 95: 94(ptr) AccessChain 62 93 - 96: 58(ivec2) Load 95 - 97: 21(fvec4) ImageRead 92 96 - Store 88(r10) 97 - 102: 99 Load 101(g_tTex2di4) - 103: 94(ptr) AccessChain 62 93 - 104: 58(ivec2) Load 103 - 105: 7(ivec4) ImageRead 102 104 - Store 98(r11) 105 - 110: 107 Load 109(g_tTex2du4) - 111: 94(ptr) AccessChain 62 93 - 112: 58(ivec2) Load 111 - 113: 14(ivec4) ImageRead 110 112 - Store 106(r12) 113 - 118: 115 Load 117(g_tTex3df4) - 121: 120(ptr) AccessChain 62 119 - 122: 59(ivec3) Load 121 - 123: 21(fvec4) ImageRead 118 122 - Store 114(r20) 123 - 128: 125 Load 127(g_tTex3di4) - 129: 120(ptr) AccessChain 62 119 - 130: 59(ivec3) Load 129 - 131: 7(ivec4) ImageRead 128 130 - Store 124(r21) 131 - 136: 133 Load 135(g_tTex3du4) - 137: 120(ptr) AccessChain 62 119 - 138: 59(ivec3) Load 137 - 139: 14(ivec4) ImageRead 136 138 - Store 132(r22) 139 - 140: 54 Load 56(g_tTex1df4) - 141: 63(ptr) AccessChain 62 48 - 142: 6(int) Load 141 - 143: 21(fvec4) ImageRead 140 142 - Store 144(param) 143 - 145: 21(fvec4) FunctionCall 25(Fn1(vf4;) 144(param) - 146: 73 Load 75(g_tTex1di4) - 147: 63(ptr) AccessChain 62 48 - 148: 6(int) Load 147 - 149: 7(ivec4) ImageRead 146 148 - Store 150(param) 149 - 151: 7(ivec4) FunctionCall 11(Fn1(vi4;) 150(param) - 152: 81 Load 83(g_tTex1du4) - 153: 63(ptr) AccessChain 62 48 - 154: 6(int) Load 153 - 155: 14(ivec4) ImageRead 152 154 - Store 156(param) 155 - 157: 14(ivec4) FunctionCall 18(Fn1(vu4;) 156(param) - 163: 22(ptr) AccessChain 160(psout) 48 - Store 163 162 - 166: 22(ptr) AccessChain 160(psout) 48 - 167: 21(fvec4) Load 166 - Store 165(Color) 167 + 77(r00): 22(ptr) Variable Function + 82(r01): 8(ptr) Variable Function + 90(r02): 15(ptr) Variable Function + 98(r10): 22(ptr) Variable Function + 108(r11): 8(ptr) Variable Function + 116(r12): 15(ptr) Variable Function + 124(r20): 22(ptr) Variable Function + 134(r21): 8(ptr) Variable Function + 142(r22): 15(ptr) Variable Function + 150(lf4): 22(ptr) Variable Function + 155(storeTemp): 22(ptr) Variable Function + 165(storeTemp): 8(ptr) Variable Function + 172(storeTemp): 15(ptr) Variable Function + 181(val1): 22(ptr) Variable Function + 183(coordTemp): 182(ptr) Variable Function + 186(storeTemp): 22(ptr) Variable Function + 197(coordTemp): 182(ptr) Variable Function + 200(storeTemp): 22(ptr) Variable Function + 211(coordTemp): 182(ptr) Variable Function + 214(storeTemp): 22(ptr) Variable Function + 225(coordTemp): 182(ptr) Variable Function + 228(storeTemp): 8(ptr) Variable Function + 238(coordTemp): 182(ptr) Variable Function + 241(storeTemp): 8(ptr) Variable Function + 251(coordTemp): 182(ptr) Variable Function + 254(storeTemp): 8(ptr) Variable Function + 265(coordTemp): 182(ptr) Variable Function + 268(storeTemp): 8(ptr) Variable Function + 279(coordTemp): 182(ptr) Variable Function + 282(storeTemp): 8(ptr) Variable Function + 292(coordTemp): 182(ptr) Variable Function + 295(storeTemp): 8(ptr) Variable Function + 305(storeTemp): 22(ptr) Variable Function + 315(storeTemp): 8(ptr) Variable Function + 322(storeTemp): 15(ptr) Variable Function + 329(storeTemp): 22(ptr) Variable Function + 339(storeTemp): 8(ptr) Variable Function + 347(storeTemp): 15(ptr) Variable Function + 358(param): 22(ptr) Variable Function + 364(param): 8(ptr) Variable Function + 370(param): 15(ptr) Variable Function + 372(tempArg): 22(ptr) Variable Function + 373(param): 22(ptr) Variable Function + 380(tempArg): 8(ptr) Variable Function + 381(param): 8(ptr) Variable Function + 388(tempArg): 15(ptr) Variable Function + 389(param): 15(ptr) Variable Function + 396(coordTemp): 182(ptr) Variable Function + 399(storeTemp): 22(ptr) Variable Function + 410(coordTemp): 182(ptr) Variable Function + 413(storeTemp): 8(ptr) Variable Function + 423(coordTemp): 182(ptr) Variable Function + 426(storeTemp): 15(ptr) Variable Function + 436(coordTemp): 182(ptr) Variable Function + 439(storeTemp): 22(ptr) Variable Function + 449(coordTemp): 182(ptr) Variable Function + 452(storeTemp): 8(ptr) Variable Function + 462(coordTemp): 182(ptr) Variable Function + 465(storeTemp): 15(ptr) Variable Function + 475(coordTemp): 182(ptr) Variable Function +478(storeTempPre): 22(ptr) Variable Function +482(storeTempPost): 22(ptr) Variable Function + 490(coordTemp): 182(ptr) Variable Function +493(storeTempPre): 15(ptr) Variable Function +497(storeTempPost): 15(ptr) Variable Function + 505(coordTemp): 182(ptr) Variable Function +508(storeTempPre): 8(ptr) Variable Function +512(storeTempPost): 8(ptr) Variable Function + 520(coordTemp): 182(ptr) Variable Function +523(storeTempPre): 22(ptr) Variable Function +527(storeTempPost): 22(ptr) Variable Function + 535(coordTemp): 182(ptr) Variable Function +538(storeTempPre): 8(ptr) Variable Function +542(storeTempPost): 8(ptr) Variable Function + 550(coordTemp): 182(ptr) Variable Function +553(storeTempPre): 15(ptr) Variable Function +557(storeTempPost): 15(ptr) Variable Function + 567(psout): 566(ptr) Variable Function + 72: 69 Load 71(g_tTex1df4) + 74: 73(ptr) AccessChain 61 51 + 75: 6(int) Load 74 + 76: 21(fvec4) ImageRead 72 75 + 78: 69 Load 71(g_tTex1df4) + 79: 73(ptr) AccessChain 61 51 + 80: 6(int) Load 79 + 81: 21(fvec4) ImageRead 78 80 + Store 77(r00) 81 + 86: 83 Load 85(g_tTex1di4) + 87: 73(ptr) AccessChain 61 51 + 88: 6(int) Load 87 + 89: 7(ivec4) ImageRead 86 88 + Store 82(r01) 89 + 94: 91 Load 93(g_tTex1du4) + 95: 73(ptr) AccessChain 61 51 + 96: 6(int) Load 95 + 97: 14(ivec4) ImageRead 94 96 + Store 90(r02) 97 + 102: 99 Load 101(g_tTex2df4) + 105: 104(ptr) AccessChain 61 103 + 106: 57(ivec2) Load 105 + 107: 21(fvec4) ImageRead 102 106 + Store 98(r10) 107 + 112: 109 Load 111(g_tTex2di4) + 113: 104(ptr) AccessChain 61 103 + 114: 57(ivec2) Load 113 + 115: 7(ivec4) ImageRead 112 114 + Store 108(r11) 115 + 120: 117 Load 119(g_tTex2du4) + 121: 104(ptr) AccessChain 61 103 + 122: 57(ivec2) Load 121 + 123: 14(ivec4) ImageRead 120 122 + Store 116(r12) 123 + 128: 125 Load 127(g_tTex3df4) + 131: 130(ptr) AccessChain 61 129 + 132: 58(ivec3) Load 131 + 133: 21(fvec4) ImageRead 128 132 + Store 124(r20) 133 + 138: 135 Load 137(g_tTex3di4) + 139: 130(ptr) AccessChain 61 129 + 140: 58(ivec3) Load 139 + 141: 7(ivec4) ImageRead 138 140 + Store 134(r21) 141 + 146: 143 Load 145(g_tTex3du4) + 147: 130(ptr) AccessChain 61 129 + 148: 58(ivec3) Load 147 + 149: 14(ivec4) ImageRead 146 148 + Store 142(r22) 149 + 153: 152(ptr) AccessChain 61 151 + 154: 21(fvec4) Load 153 + Store 150(lf4) 154 + 156: 21(fvec4) FunctionCall 40(SomeValue() + Store 155(storeTemp) 156 + 157: 69 Load 71(g_tTex1df4) + 158: 73(ptr) AccessChain 61 51 + 159: 6(int) Load 158 + 160: 21(fvec4) Load 155(storeTemp) + ImageWrite 157 159 160 + 161: 69 Load 71(g_tTex1df4) + 162: 73(ptr) AccessChain 61 51 + 163: 6(int) Load 162 + 164: 21(fvec4) Load 150(lf4) + ImageWrite 161 163 164 + Store 165(storeTemp) 167 + 168: 83 Load 85(g_tTex1di4) + 169: 73(ptr) AccessChain 61 51 + 170: 6(int) Load 169 + 171: 7(ivec4) Load 165(storeTemp) + ImageWrite 168 170 171 + Store 172(storeTemp) 176 + 177: 91 Load 93(g_tTex1du4) + 178: 73(ptr) AccessChain 61 51 + 179: 6(int) Load 178 + 180: 14(ivec4) Load 172(storeTemp) + ImageWrite 177 179 180 + 184: 73(ptr) AccessChain 61 51 + 185: 6(int) Load 184 + Store 183(coordTemp) 185 + 187: 69 Load 71(g_tTex1df4) + 188: 6(int) Load 183(coordTemp) + 189: 21(fvec4) ImageRead 187 188 + Store 186(storeTemp) 189 + 191: 21(fvec4) Load 186(storeTemp) + 192: 21(fvec4) VectorTimesScalar 191 190 + Store 186(storeTemp) 192 + 193: 69 Load 71(g_tTex1df4) + 194: 6(int) Load 183(coordTemp) + 195: 21(fvec4) Load 186(storeTemp) + ImageWrite 193 194 195 + 196: 21(fvec4) Load 186(storeTemp) + Store 181(val1) 196 + 198: 73(ptr) AccessChain 61 51 + 199: 6(int) Load 198 + Store 197(coordTemp) 199 + 201: 69 Load 71(g_tTex1df4) + 202: 6(int) Load 197(coordTemp) + 203: 21(fvec4) ImageRead 201 202 + Store 200(storeTemp) 203 + 205: 21(fvec4) Load 200(storeTemp) + 206: 21(fvec4) CompositeConstruct 204 204 204 204 + 207: 21(fvec4) FSub 205 206 + Store 200(storeTemp) 207 + 208: 69 Load 71(g_tTex1df4) + 209: 6(int) Load 197(coordTemp) + 210: 21(fvec4) Load 200(storeTemp) + ImageWrite 208 209 210 + 212: 73(ptr) AccessChain 61 51 + 213: 6(int) Load 212 + Store 211(coordTemp) 213 + 215: 69 Load 71(g_tTex1df4) + 216: 6(int) Load 211(coordTemp) + 217: 21(fvec4) ImageRead 215 216 + Store 214(storeTemp) 217 + 219: 21(fvec4) Load 214(storeTemp) + 220: 21(fvec4) CompositeConstruct 218 218 218 218 + 221: 21(fvec4) FAdd 219 220 + Store 214(storeTemp) 221 + 222: 69 Load 71(g_tTex1df4) + 223: 6(int) Load 211(coordTemp) + 224: 21(fvec4) Load 214(storeTemp) + ImageWrite 222 223 224 + 226: 73(ptr) AccessChain 61 51 + 227: 6(int) Load 226 + Store 225(coordTemp) 227 + 229: 83 Load 85(g_tTex1di4) + 230: 6(int) Load 225(coordTemp) + 231: 7(ivec4) ImageRead 229 230 + Store 228(storeTemp) 231 + 232: 7(ivec4) Load 228(storeTemp) + 233: 7(ivec4) CompositeConstruct 129 129 129 129 + 234: 7(ivec4) SDiv 232 233 + Store 228(storeTemp) 234 + 235: 83 Load 85(g_tTex1di4) + 236: 6(int) Load 225(coordTemp) + 237: 7(ivec4) Load 228(storeTemp) + ImageWrite 235 236 237 + 239: 73(ptr) AccessChain 61 51 + 240: 6(int) Load 239 + Store 238(coordTemp) 240 + 242: 83 Load 85(g_tTex1di4) + 243: 6(int) Load 238(coordTemp) + 244: 7(ivec4) ImageRead 242 243 + Store 241(storeTemp) 244 + 245: 7(ivec4) Load 241(storeTemp) + 246: 7(ivec4) CompositeConstruct 129 129 129 129 + 247: 7(ivec4) SMod 245 246 + Store 241(storeTemp) 247 + 248: 83 Load 85(g_tTex1di4) + 249: 6(int) Load 238(coordTemp) + 250: 7(ivec4) Load 241(storeTemp) + ImageWrite 248 249 250 + 252: 73(ptr) AccessChain 61 51 + 253: 6(int) Load 252 + Store 251(coordTemp) 253 + 255: 83 Load 85(g_tTex1di4) + 256: 6(int) Load 251(coordTemp) + 257: 7(ivec4) ImageRead 255 256 + Store 254(storeTemp) 257 + 259: 7(ivec4) Load 254(storeTemp) + 260: 7(ivec4) CompositeConstruct 258 258 258 258 + 261: 7(ivec4) BitwiseAnd 259 260 + Store 254(storeTemp) 261 + 262: 83 Load 85(g_tTex1di4) + 263: 6(int) Load 251(coordTemp) + 264: 7(ivec4) Load 254(storeTemp) + ImageWrite 262 263 264 + 266: 73(ptr) AccessChain 61 51 + 267: 6(int) Load 266 + Store 265(coordTemp) 267 + 269: 83 Load 85(g_tTex1di4) + 270: 6(int) Load 265(coordTemp) + 271: 7(ivec4) ImageRead 269 270 + Store 268(storeTemp) 271 + 273: 7(ivec4) Load 268(storeTemp) + 274: 7(ivec4) CompositeConstruct 272 272 272 272 + 275: 7(ivec4) BitwiseOr 273 274 + Store 268(storeTemp) 275 + 276: 83 Load 85(g_tTex1di4) + 277: 6(int) Load 265(coordTemp) + 278: 7(ivec4) Load 268(storeTemp) + ImageWrite 276 277 278 + 280: 73(ptr) AccessChain 61 51 + 281: 6(int) Load 280 + Store 279(coordTemp) 281 + 283: 83 Load 85(g_tTex1di4) + 284: 6(int) Load 279(coordTemp) + 285: 7(ivec4) ImageRead 283 284 + Store 282(storeTemp) 285 + 286: 7(ivec4) Load 282(storeTemp) + 287: 7(ivec4) CompositeConstruct 129 129 129 129 + 288: 7(ivec4) ShiftLeftLogical 286 287 + Store 282(storeTemp) 288 + 289: 83 Load 85(g_tTex1di4) + 290: 6(int) Load 279(coordTemp) + 291: 7(ivec4) Load 282(storeTemp) + ImageWrite 289 290 291 + 293: 73(ptr) AccessChain 61 51 + 294: 6(int) Load 293 + Store 292(coordTemp) 294 + 296: 83 Load 85(g_tTex1di4) + 297: 6(int) Load 292(coordTemp) + 298: 7(ivec4) ImageRead 296 297 + Store 295(storeTemp) 298 + 299: 7(ivec4) Load 295(storeTemp) + 300: 7(ivec4) CompositeConstruct 129 129 129 129 + 301: 7(ivec4) ShiftRightArithmetic 299 300 + Store 295(storeTemp) 301 + 302: 83 Load 85(g_tTex1di4) + 303: 6(int) Load 292(coordTemp) + 304: 7(ivec4) Load 295(storeTemp) + ImageWrite 302 303 304 + 306: 21(fvec4) FunctionCall 40(SomeValue() + Store 305(storeTemp) 306 + 307: 99 Load 101(g_tTex2df4) + 308: 104(ptr) AccessChain 61 103 + 309: 57(ivec2) Load 308 + 310: 21(fvec4) Load 305(storeTemp) + ImageWrite 307 309 310 + 311: 99 Load 101(g_tTex2df4) + 312: 104(ptr) AccessChain 61 103 + 313: 57(ivec2) Load 312 + 314: 21(fvec4) Load 150(lf4) + ImageWrite 311 313 314 + Store 315(storeTemp) 317 + 318: 109 Load 111(g_tTex2di4) + 319: 104(ptr) AccessChain 61 103 + 320: 57(ivec2) Load 319 + 321: 7(ivec4) Load 315(storeTemp) + ImageWrite 318 320 321 + Store 322(storeTemp) 324 + 325: 117 Load 119(g_tTex2du4) + 326: 104(ptr) AccessChain 61 103 + 327: 57(ivec2) Load 326 + 328: 14(ivec4) Load 322(storeTemp) + ImageWrite 325 327 328 + 330: 21(fvec4) FunctionCall 40(SomeValue() + Store 329(storeTemp) 330 + 331: 125 Load 127(g_tTex3df4) + 332: 130(ptr) AccessChain 61 129 + 333: 58(ivec3) Load 332 + 334: 21(fvec4) Load 329(storeTemp) + ImageWrite 331 333 334 + 335: 125 Load 127(g_tTex3df4) + 336: 130(ptr) AccessChain 61 129 + 337: 58(ivec3) Load 336 + 338: 21(fvec4) Load 150(lf4) + ImageWrite 335 337 338 + Store 339(storeTemp) 342 + 343: 135 Load 137(g_tTex3di4) + 344: 130(ptr) AccessChain 61 129 + 345: 58(ivec3) Load 344 + 346: 7(ivec4) Load 339(storeTemp) + ImageWrite 343 345 346 + Store 347(storeTemp) 349 + 350: 143 Load 145(g_tTex3du4) + 351: 130(ptr) AccessChain 61 129 + 352: 58(ivec3) Load 351 + 353: 14(ivec4) Load 347(storeTemp) + ImageWrite 350 352 353 + 354: 69 Load 71(g_tTex1df4) + 355: 73(ptr) AccessChain 61 51 + 356: 6(int) Load 355 + 357: 21(fvec4) ImageRead 354 356 + Store 358(param) 357 + 359: 21(fvec4) FunctionCall 25(Fn1(vf4;) 358(param) + 360: 83 Load 85(g_tTex1di4) + 361: 73(ptr) AccessChain 61 51 + 362: 6(int) Load 361 + 363: 7(ivec4) ImageRead 360 362 + Store 364(param) 363 + 365: 7(ivec4) FunctionCall 11(Fn1(vi4;) 364(param) + 366: 91 Load 93(g_tTex1du4) + 367: 73(ptr) AccessChain 61 51 + 368: 6(int) Load 367 + 369: 14(ivec4) ImageRead 366 368 + Store 370(param) 369 + 371: 14(ivec4) FunctionCall 18(Fn1(vu4;) 370(param) + 374: 2 FunctionCall 37(Fn2(vf4;) 373(param) + 375: 21(fvec4) Load 373(param) + Store 372(tempArg) 375 + 376: 69 Load 71(g_tTex1df4) + 377: 73(ptr) AccessChain 61 51 + 378: 6(int) Load 377 + 379: 21(fvec4) Load 372(tempArg) + ImageWrite 376 378 379 + 382: 2 FunctionCall 29(Fn2(vi4;) 381(param) + 383: 7(ivec4) Load 381(param) + Store 380(tempArg) 383 + 384: 83 Load 85(g_tTex1di4) + 385: 73(ptr) AccessChain 61 51 + 386: 6(int) Load 385 + 387: 7(ivec4) Load 380(tempArg) + ImageWrite 384 386 387 + 390: 2 FunctionCall 33(Fn2(vu4;) 389(param) + 391: 14(ivec4) Load 389(param) + Store 388(tempArg) 391 + 392: 91 Load 93(g_tTex1du4) + 393: 73(ptr) AccessChain 61 51 + 394: 6(int) Load 393 + 395: 14(ivec4) Load 388(tempArg) + ImageWrite 392 394 395 + 397: 73(ptr) AccessChain 61 51 + 398: 6(int) Load 397 + Store 396(coordTemp) 398 + 400: 69 Load 71(g_tTex1df4) + 401: 6(int) Load 396(coordTemp) + 402: 21(fvec4) ImageRead 400 401 + Store 399(storeTemp) 402 + 403: 21(fvec4) Load 399(storeTemp) + 405: 21(fvec4) CompositeConstruct 404 404 404 404 + 406: 21(fvec4) FAdd 403 405 + Store 399(storeTemp) 406 + 407: 69 Load 71(g_tTex1df4) + 408: 6(int) Load 396(coordTemp) + 409: 21(fvec4) Load 399(storeTemp) + ImageWrite 407 408 409 + 411: 73(ptr) AccessChain 61 51 + 412: 6(int) Load 411 + Store 410(coordTemp) 412 + 414: 83 Load 85(g_tTex1di4) + 415: 6(int) Load 410(coordTemp) + 416: 7(ivec4) ImageRead 414 415 + Store 413(storeTemp) 416 + 417: 7(ivec4) Load 413(storeTemp) + 418: 7(ivec4) CompositeConstruct 103 103 103 103 + 419: 7(ivec4) IAdd 417 418 + Store 413(storeTemp) 419 + 420: 83 Load 85(g_tTex1di4) + 421: 6(int) Load 410(coordTemp) + 422: 7(ivec4) Load 413(storeTemp) + ImageWrite 420 421 422 + 424: 73(ptr) AccessChain 61 51 + 425: 6(int) Load 424 + Store 423(coordTemp) 425 + 427: 91 Load 93(g_tTex1du4) + 428: 6(int) Load 423(coordTemp) + 429: 14(ivec4) ImageRead 427 428 + Store 426(storeTemp) 429 + 430: 14(ivec4) Load 426(storeTemp) + 431: 7(ivec4) CompositeConstruct 103 103 103 103 + 432: 14(ivec4) IAdd 430 431 + Store 426(storeTemp) 432 + 433: 91 Load 93(g_tTex1du4) + 434: 6(int) Load 423(coordTemp) + 435: 14(ivec4) Load 426(storeTemp) + ImageWrite 433 434 435 + 437: 73(ptr) AccessChain 61 51 + 438: 6(int) Load 437 + Store 436(coordTemp) 438 + 440: 69 Load 71(g_tTex1df4) + 441: 6(int) Load 436(coordTemp) + 442: 21(fvec4) ImageRead 440 441 + Store 439(storeTemp) 442 + 443: 21(fvec4) Load 439(storeTemp) + 444: 21(fvec4) CompositeConstruct 404 404 404 404 + 445: 21(fvec4) FSub 443 444 + Store 439(storeTemp) 445 + 446: 69 Load 71(g_tTex1df4) + 447: 6(int) Load 436(coordTemp) + 448: 21(fvec4) Load 439(storeTemp) + ImageWrite 446 447 448 + 450: 73(ptr) AccessChain 61 51 + 451: 6(int) Load 450 + Store 449(coordTemp) 451 + 453: 83 Load 85(g_tTex1di4) + 454: 6(int) Load 449(coordTemp) + 455: 7(ivec4) ImageRead 453 454 + Store 452(storeTemp) 455 + 456: 7(ivec4) Load 452(storeTemp) + 457: 7(ivec4) CompositeConstruct 103 103 103 103 + 458: 7(ivec4) ISub 456 457 + Store 452(storeTemp) 458 + 459: 83 Load 85(g_tTex1di4) + 460: 6(int) Load 449(coordTemp) + 461: 7(ivec4) Load 452(storeTemp) + ImageWrite 459 460 461 + 463: 73(ptr) AccessChain 61 51 + 464: 6(int) Load 463 + Store 462(coordTemp) 464 + 466: 91 Load 93(g_tTex1du4) + 467: 6(int) Load 462(coordTemp) + 468: 14(ivec4) ImageRead 466 467 + Store 465(storeTemp) 468 + 469: 14(ivec4) Load 465(storeTemp) + 470: 7(ivec4) CompositeConstruct 103 103 103 103 + 471: 14(ivec4) ISub 469 470 + Store 465(storeTemp) 471 + 472: 91 Load 93(g_tTex1du4) + 473: 6(int) Load 462(coordTemp) + 474: 14(ivec4) Load 465(storeTemp) + ImageWrite 472 473 474 + 476: 73(ptr) AccessChain 61 51 + 477: 6(int) Load 476 + Store 475(coordTemp) 477 + 479: 69 Load 71(g_tTex1df4) + 480: 6(int) Load 475(coordTemp) + 481: 21(fvec4) ImageRead 479 480 + Store 478(storeTempPre) 481 + 483: 21(fvec4) Load 478(storeTempPre) + Store 482(storeTempPost) 483 + 484: 21(fvec4) Load 482(storeTempPost) + 485: 21(fvec4) CompositeConstruct 404 404 404 404 + 486: 21(fvec4) FAdd 484 485 + Store 482(storeTempPost) 486 + 487: 69 Load 71(g_tTex1df4) + 488: 6(int) Load 475(coordTemp) + 489: 21(fvec4) Load 482(storeTempPost) + ImageWrite 487 488 489 + 491: 73(ptr) AccessChain 61 51 + 492: 6(int) Load 491 + Store 490(coordTemp) 492 + 494: 91 Load 93(g_tTex1du4) + 495: 6(int) Load 490(coordTemp) + 496: 14(ivec4) ImageRead 494 495 + Store 493(storeTempPre) 496 + 498: 14(ivec4) Load 493(storeTempPre) + Store 497(storeTempPost) 498 + 499: 14(ivec4) Load 497(storeTempPost) + 500: 7(ivec4) CompositeConstruct 103 103 103 103 + 501: 14(ivec4) ISub 499 500 + Store 497(storeTempPost) 501 + 502: 91 Load 93(g_tTex1du4) + 503: 6(int) Load 490(coordTemp) + 504: 14(ivec4) Load 497(storeTempPost) + ImageWrite 502 503 504 + 506: 73(ptr) AccessChain 61 51 + 507: 6(int) Load 506 + Store 505(coordTemp) 507 + 509: 83 Load 85(g_tTex1di4) + 510: 6(int) Load 505(coordTemp) + 511: 7(ivec4) ImageRead 509 510 + Store 508(storeTempPre) 511 + 513: 7(ivec4) Load 508(storeTempPre) + Store 512(storeTempPost) 513 + 514: 7(ivec4) Load 512(storeTempPost) + 515: 7(ivec4) CompositeConstruct 103 103 103 103 + 516: 7(ivec4) IAdd 514 515 + Store 512(storeTempPost) 516 + 517: 83 Load 85(g_tTex1di4) + 518: 6(int) Load 505(coordTemp) + 519: 7(ivec4) Load 512(storeTempPost) + ImageWrite 517 518 519 + 521: 73(ptr) AccessChain 61 51 + 522: 6(int) Load 521 + Store 520(coordTemp) 522 + 524: 69 Load 71(g_tTex1df4) + 525: 6(int) Load 520(coordTemp) + 526: 21(fvec4) ImageRead 524 525 + Store 523(storeTempPre) 526 + 528: 21(fvec4) Load 523(storeTempPre) + Store 527(storeTempPost) 528 + 529: 21(fvec4) Load 527(storeTempPost) + 530: 21(fvec4) CompositeConstruct 404 404 404 404 + 531: 21(fvec4) FSub 529 530 + Store 527(storeTempPost) 531 + 532: 69 Load 71(g_tTex1df4) + 533: 6(int) Load 520(coordTemp) + 534: 21(fvec4) Load 527(storeTempPost) + ImageWrite 532 533 534 + 536: 73(ptr) AccessChain 61 51 + 537: 6(int) Load 536 + Store 535(coordTemp) 537 + 539: 83 Load 85(g_tTex1di4) + 540: 6(int) Load 535(coordTemp) + 541: 7(ivec4) ImageRead 539 540 + Store 538(storeTempPre) 541 + 543: 7(ivec4) Load 538(storeTempPre) + Store 542(storeTempPost) 543 + 544: 7(ivec4) Load 542(storeTempPost) + 545: 7(ivec4) CompositeConstruct 103 103 103 103 + 546: 7(ivec4) IAdd 544 545 + Store 542(storeTempPost) 546 + 547: 83 Load 85(g_tTex1di4) + 548: 6(int) Load 535(coordTemp) + 549: 7(ivec4) Load 542(storeTempPost) + ImageWrite 547 548 549 + 551: 73(ptr) AccessChain 61 51 + 552: 6(int) Load 551 + Store 550(coordTemp) 552 + 554: 91 Load 93(g_tTex1du4) + 555: 6(int) Load 550(coordTemp) + 556: 14(ivec4) ImageRead 554 555 + Store 553(storeTempPre) 556 + 558: 14(ivec4) Load 553(storeTempPre) + Store 557(storeTempPost) 558 + 559: 14(ivec4) Load 557(storeTempPost) + 560: 7(ivec4) CompositeConstruct 103 103 103 103 + 561: 14(ivec4) ISub 559 560 + Store 557(storeTempPost) 561 + 562: 91 Load 93(g_tTex1du4) + 563: 6(int) Load 550(coordTemp) + 564: 14(ivec4) Load 557(storeTempPost) + ImageWrite 562 563 564 + 569: 22(ptr) AccessChain 567(psout) 51 + Store 569 568 + 572: 22(ptr) AccessChain 567(psout) 51 + 573: 21(fvec4) Load 572 + Store 571(Color) 573 Return FunctionEnd 11(Fn1(vi4;): 7(ivec4) Function None 9 10(x): 8(ptr) FunctionParameter 12: Label - 39: 7(ivec4) Load 10(x) - ReturnValue 39 + 42: 7(ivec4) Load 10(x) + ReturnValue 42 FunctionEnd 18(Fn1(vu4;): 14(ivec4) Function None 16 17(x): 15(ptr) FunctionParameter 19: Label - 42: 14(ivec4) Load 17(x) - ReturnValue 42 + 45: 14(ivec4) Load 17(x) + ReturnValue 45 FunctionEnd 25(Fn1(vf4;): 21(fvec4) Function None 23 24(x): 22(ptr) FunctionParameter 26: Label - 45: 21(fvec4) Load 24(x) - ReturnValue 45 + 48: 21(fvec4) Load 24(x) + ReturnValue 48 FunctionEnd 29(Fn2(vi4;): 2 Function None 27 28(x): 8(ptr) FunctionParameter 30: Label - Store 28(x) 49 + Store 28(x) 52 Return FunctionEnd 33(Fn2(vu4;): 2 Function None 31 32(x): 15(ptr) FunctionParameter 34: Label - Store 32(x) 51 + Store 32(x) 54 Return FunctionEnd 37(Fn2(vf4;): 2 Function None 35 36(x): 22(ptr) FunctionParameter 38: Label - Store 36(x) 53 + Store 36(x) 56 Return FunctionEnd + 40(SomeValue(): 21(fvec4) Function None 39 + 41: Label + 64: 63(ptr) AccessChain 61 62 + 65: 7(ivec4) Load 64 + 66: 21(fvec4) ConvertSToF 65 + ReturnValue 66 + FunctionEnd diff --git a/Test/hlsl.rw.bracket.frag b/Test/hlsl.rw.bracket.frag index e435b91d..650b5674 100644 --- a/Test/hlsl.rw.bracket.frag +++ b/Test/hlsl.rw.bracket.frag @@ -35,6 +35,10 @@ uniform int2 o2; uniform int3 o3; uniform int4 o4; +uniform float4 uf4; +uniform int4 ui4; +uniform uint4 uu4; + int4 Fn1(in int4 x) { return x; } uint4 Fn1(in uint4 x) { return x; } float4 Fn1(in float4 x) { return x; } @@ -43,19 +47,19 @@ void Fn2(out int4 x) { x = int4(0); } void Fn2(out uint4 x) { x = uint4(0); } void Fn2(out float4 x) { x = float4(0); } +float4 SomeValue() { return c4; } + PS_OUTPUT main() { PS_OUTPUT psout; - // Test as R-values - // 1D g_tTex1df4[c1]; float4 r00 = g_tTex1df4[c1]; int4 r01 = g_tTex1di4[c1]; uint4 r02 = g_tTex1du4[c1]; - + // 2D float4 r10 = g_tTex2df4[c2]; int4 r11 = g_tTex2di4[c2]; @@ -66,47 +70,66 @@ PS_OUTPUT main() int4 r21 = g_tTex3di4[c3]; uint4 r22 = g_tTex3du4[c3]; - // // Test as L-values - // // 1D - // g_tTex1df4[c1] = float4(1,2,3,4); - // g_tTex1di4[c1] = int4(1,2,3,4); - // g_tTex1du4[c1] = uint4(1,2,3,4); + float4 lf4 = uf4; + + // Test as L-values + // 1D + g_tTex1df4[c1] = SomeValue(); // complex L-value + g_tTex1df4[c1] = lf4; + g_tTex1di4[c1] = int4(2,2,3,4); + g_tTex1du4[c1] = uint4(3,2,3,4); + + // Test some operator= things, which need to do both a load and a store. + float4 val1 = (g_tTex1df4[c1] *= 2.0); + g_tTex1df4[c1] -= 3.0; + g_tTex1df4[c1] += 4.0; - // // 2D - // g_tTex2df4[c2] = float4(1,2,3,4); - // g_tTex2di4[c2] = int4(1,2,3,4); - // g_tTex2du4[c2] = uint4(1,2,3,4); + g_tTex1di4[c1] /= 2; + g_tTex1di4[c1] %= 2; + g_tTex1di4[c1] &= 0xffff; + g_tTex1di4[c1] |= 0xf0f0; + g_tTex1di4[c1] <<= 2; + g_tTex1di4[c1] >>= 2; + + // 2D + g_tTex2df4[c2] = SomeValue(); // complex L-value + g_tTex2df4[c2] = lf4; + g_tTex2di4[c2] = int4(5,2,3,4); + g_tTex2du4[c2] = uint4(6,2,3,4); - // // 3D - // g_tTex3df4[c3] = float4(1,2,3,4); - // g_tTex3di4[c3] = int4(1,2,3,4); - // g_tTex3du4[c3] = uint4(1,2,3,4); + // 3D + g_tTex3df4[c3] = SomeValue(); // complex L-value + g_tTex3df4[c3] = lf4; + g_tTex3di4[c3] = int4(8,6,7,8); + g_tTex3du4[c3] = uint4(9,2,3,4); // // Test function calling Fn1(g_tTex1df4[c1]); // in Fn1(g_tTex1di4[c1]); // in Fn1(g_tTex1du4[c1]); // in - // Fn2(g_tTex1df4[c1]); // out - // Fn2(g_tTex1di4[c1]); // out - // Fn2(g_tTex1du4[c1]); // out + Fn2(g_tTex1df4[c1]); // out + Fn2(g_tTex1di4[c1]); // out + Fn2(g_tTex1du4[c1]); // out - // // Test increment operators - // g_tTex1df4[c1]++; - // g_tTex1di4[c1]++; - // g_tTex1du4[c1]++; + // Test increment operators + // pre-ops + ++g_tTex1df4[c1]; + ++g_tTex1di4[c1]; + ++g_tTex1du4[c1]; - // g_tTex1df4[c1]--; - // g_tTex1di4[c1]--; - // g_tTex1du4[c1]--; + --g_tTex1df4[c1]; + --g_tTex1di4[c1]; + --g_tTex1du4[c1]; - // ++g_tTex1df4[c1]; - // ++g_tTex1di4[c1]; - // ++g_tTex1du4[c1]; + // post-ops + g_tTex1df4[c1]++; + g_tTex1du4[c1]--; + g_tTex1di4[c1]++; - // --g_tTex1df4[c1]; - // --g_tTex1di4[c1]; - // --g_tTex1du4[c1]; + g_tTex1df4[c1]--; + g_tTex1di4[c1]++; + g_tTex1du4[c1]--; psout.Color = 1.0; diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 58bc8a5b..96e5c348 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2045,6 +2045,10 @@ bool TIntermBinary::promote() } break; + case EOpVectorTimesScalarAssign: + if (left->isVector() && right->isScalar()) + return true; + default: return false; } diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 626d2991..5dc25fc5 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -1783,6 +1783,8 @@ bool HlslGrammar::acceptAssignmentExpression(TIntermTyped*& node) } node = parseContext.handleAssign(loc, assignOp, node, rightNode); + node = parseContext.handleLvalue(loc, "assign", node); + if (node == nullptr) { parseContext.error(loc, "could not create assignment", "", ""); return false; @@ -1946,6 +1948,7 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node) return true; node = intermediate.addUnaryMath(unaryOp, node, loc); + node = parseContext.handleLvalue(loc, "", node); return node != nullptr; } @@ -2061,6 +2064,7 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) case EOpPostDecrement: // DEC_OP node = intermediate.addUnaryMath(postOp, node, loc); + node = parseContext.handleLvalue(loc, "", node); break; default: assert(0); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 204e9f08..5eccf61c 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -130,6 +130,249 @@ bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& return numErrors == 0; } +bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const +{ + if (node == nullptr) + return false; + + const TIntermAggregate* lhsAsAggregate = node->getAsAggregate(); + if (lhsAsAggregate != nullptr && lhsAsAggregate->getOp() == EOpImageLoad) + return true; + + return false; +} + + +// +// This function handles l-value conversions and verifications. It uses, but is not synonymous +// with lValueErrorCheck. That function accepts an l-value directly, while this one must be +// given the surrounding tree - e.g, with an assignment, so we can convert the assign into a +// series of other image operations. +// +// Most things are passed through unmodified, except for error checking. +// +TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* op, TIntermTyped* node) +{ + TIntermBinary* nodeAsBinary = node->getAsBinaryNode(); + TIntermUnary* nodeAsUnary = node->getAsUnaryNode(); + TIntermAggregate* sequence = nullptr; + + TIntermTyped* lhs = nodeAsUnary ? nodeAsUnary->getOperand() : + nodeAsBinary ? nodeAsBinary->getLeft() : + nullptr; + + + // Early bail out if there is no conversion to apply + if (!shouldConvertLValue(lhs)) { + // TODO: >.. + // if (lhs != nullptr) + // if (lValueErrorCheck(loc, op, lhs)) + // return nullptr; + return node; + } + + // *** If we get here, we're going to apply some conversion to an l-value. + + // Helper to create a load. + const auto makeLoad = [&](TIntermSymbol* rhsTmp, TIntermTyped* object, TIntermTyped* coord, const TType& derefType) { + TIntermAggregate* loadOp = new TIntermAggregate(EOpImageLoad); + loadOp->setLoc(loc); + loadOp->getSequence().push_back(object); + loadOp->getSequence().push_back(intermediate.addSymbol(*coord->getAsSymbolNode())); + loadOp->setType(derefType); + + sequence = intermediate.growAggregate(sequence, + intermediate.addAssign(EOpAssign, rhsTmp, loadOp, loc), + loc); + }; + + // Helper to create a store. + const auto makeStore = [&](TIntermTyped* object, TIntermTyped* coord, TIntermSymbol* rhsTmp) { + TIntermAggregate* storeOp = new TIntermAggregate(EOpImageStore); + storeOp->getSequence().push_back(object); + storeOp->getSequence().push_back(coord); + storeOp->getSequence().push_back(intermediate.addSymbol(*rhsTmp)); + storeOp->setLoc(loc); + storeOp->setType(TType(EbtVoid)); + + sequence = intermediate.growAggregate(sequence, storeOp); + }; + + // Helper to create an assign. + const auto makeAssign = [&](TOperator assignOp, TIntermTyped* lhs, TIntermTyped* rhs) { + sequence = intermediate.growAggregate(sequence, + intermediate.addAssign(assignOp, lhs, rhs, loc), + loc); + }; + + // Helper to complete sequence by adding trailing variable, so we evaluate to the right value. + const auto finishSequence = [&](TIntermSymbol* rhsTmp, const TType& derefType) { + // Add a trailing use of the temp, so the sequence returns the proper value. + sequence = intermediate.growAggregate(sequence, intermediate.addSymbol(*rhsTmp)); + sequence->setOperator(EOpSequence); + sequence->setLoc(loc); + sequence->setType(derefType); + + return sequence; + }; + + // Helper to add unary op + const auto addUnary = [&](TOperator op, TIntermSymbol* rhsTmp) { + sequence = intermediate.growAggregate(sequence, + intermediate.addUnaryMath(op, intermediate.addSymbol(*rhsTmp), loc), + loc); + }; + + // helper to create a temporary variable + const auto addTmpVar = [&](const char* name, const TType& derefType) { + TVariable* tmpVar = makeInternalVariable(name, derefType); + tmpVar->getWritableType().getQualifier().makeTemporary(); + return intermediate.addSymbol(*tmpVar, loc); + }; + + TIntermAggregate* lhsAsAggregate = lhs->getAsAggregate(); + TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* coord = lhsAsAggregate->getSequence()[1]->getAsTyped(); + + const TLayoutFormat fmt = object->getType().getQualifier().layoutFormat; + // We only handle 4 component formats at the moment. + + assert(fmt == ElfRgba32f || fmt == ElfRgba32i || fmt == ElfRgba32ui); + const TType objDerefType(object->getType().getSampler().type, EvqTemporary, 4); + + if (nodeAsBinary) { + TIntermTyped* rhs = nodeAsBinary->getRight(); + const TOperator assignOp = nodeAsBinary->getOp(); + + bool isModifyOp = false; + + switch (assignOp) { + case EOpAddAssign: + case EOpSubAssign: + case EOpMulAssign: + case EOpVectorTimesMatrixAssign: + case EOpVectorTimesScalarAssign: + case EOpMatrixTimesScalarAssign: + case EOpMatrixTimesMatrixAssign: + case EOpDivAssign: + case EOpModAssign: + case EOpAndAssign: + case EOpInclusiveOrAssign: + case EOpExclusiveOrAssign: + case EOpLeftShiftAssign: + case EOpRightShiftAssign: + isModifyOp = true; + // fall through... + case EOpAssign: + { + // Since this is an lvalue, we'll convert an image load to a sequence like this (to still provide the value): + // OpSequence + // OpImageStore(object, lhs, rhs) + // rhs + // But if it's not a simple symbol RHS (say, a fn call), we don't want to duplicate the RHS, so we'll convert + // instead to this: + // OpSequence + // rhsTmp = rhs + // OpImageStore(object, coord, rhsTmp) + // rhsTmp + // If this is a read-modify-write op, like +=, we issue: + // OpSequence + // coordtmp = load's param1 + // rhsTmp = OpImageLoad(object, coordTmp) + // rhsTmp op= rhs + // OpImageStore(object, coordTmp, rhsTmp) + // rhsTmp + + TIntermSymbol* rhsTmp = rhs->getAsSymbolNode(); + TIntermTyped* coordTmp = coord; + + if (rhsTmp == nullptr || isModifyOp) { + rhsTmp = addTmpVar("storeTemp", objDerefType); + + // Assign storeTemp = rhs + if (isModifyOp) { + // We have to make a temp var for the coordinate, to avoid evaluating it twice. + coordTmp = addTmpVar("coordTemp", coord->getType()); + makeAssign(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) + } + + // rhsTmp op= rhs. + makeAssign(assignOp, intermediate.addSymbol(*rhsTmp), rhs); + } + + makeStore(object, coordTmp, rhsTmp); // add a store + return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence + } + + default: + break; + } + } + + if (nodeAsUnary) { + const TOperator assignOp = nodeAsUnary->getOp(); + + switch (assignOp) { + case EOpPreIncrement: + case EOpPreDecrement: + { + // We turn this into: + // OpSequence + // coordtmp = load's param1 + // rhsTmp = OpImageLoad(object, coordTmp) + // rhsTmp op + // OpImageStore(object, coordTmp, rhsTmp) + // rhsTmp + + TIntermSymbol* rhsTmp = addTmpVar("storeTemp", objDerefType); + TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType()); + + makeAssign(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) + addUnary(assignOp, rhsTmp); // op rhsTmp + makeStore(object, coordTmp, rhsTmp); // OpImageStore(object, coordTmp, rhsTmp) + return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence + } + + case EOpPostIncrement: + case EOpPostDecrement: + { + // We turn this into: + // OpSequence + // coordtmp = load's param1 + // rhsTmp1 = OpImageLoad(object, coordTmp) + // rhsTmp2 = rhsTmp1 + // rhsTmp2 op + // OpImageStore(object, coordTmp, rhsTmp2) + // rhsTmp1 (pre-op value) + TIntermSymbol* rhsTmp1 = addTmpVar("storeTempPre", objDerefType); + TIntermSymbol* rhsTmp2 = addTmpVar("storeTempPost", objDerefType); + TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType()); + + makeAssign(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeLoad(rhsTmp1, object, coordTmp, objDerefType); // rhsTmp1 = OpImageLoad(object, coordTmp) + makeAssign(EOpAssign, rhsTmp2, rhsTmp1); // rhsTmp2 = rhsTmp1 + addUnary(assignOp, rhsTmp2); // rhsTmp op + makeStore(object, coordTmp, rhsTmp2); // OpImageStore(object, coordTmp, rhsTmp2) + return finishSequence(rhsTmp1, objDerefType); // return rhsTmp from sequence + + break; + } + + default: + break; + } + } + + // TODO: + // if (lhs) + // if (lValueErrorCheck(loc, op, lhs)) + // return nullptr; + + return node; +} + void HlslParseContext::handlePragma(const TSourceLoc& loc, const TVector& tokens) { if (pragmaCallback) @@ -965,6 +1208,9 @@ void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped* // to intermediate.addAssign(). TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) const { + if (left == nullptr || right == nullptr) + return nullptr; + const auto mustFlatten = [&](const TIntermTyped& node) { return shouldFlatten(node.getType()) && node.getAsSymbolNode() && flattenMap.find(node.getAsSymbolNode()->getId()) != flattenMap.end(); @@ -2288,12 +2534,13 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI // // Returns a node of a subtree that evaluates to the return value of the function. // -TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const +TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) { TIntermSequence& arguments = intermNode.getSequence(); const auto needsConversion = [&](int argNum) { return function[argNum].type->getQualifier().isParamOutput() && (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() || + shouldConvertLValue(arguments[argNum]) || shouldFlatten(arguments[argNum]->getAsTyped()->getType())); }; @@ -2341,7 +2588,8 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc()); // This makes the deepest level, the member-wise copy - TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode)->getAsAggregate(); + TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode); + tempAssign = handleLvalue(arguments[i]->getLoc(), "assign", tempAssign); conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); // replace the argument with another node for the same tempArg variable diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 78beadb3..8dcfe840 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -81,7 +81,7 @@ public: void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); void addInputArgumentConversions(const TFunction&, TIntermNode*&) const; - TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const; + TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&); void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); TFunction* handleConstructorCall(const TSourceLoc&, const TType&); void handleSemantic(TSourceLoc, TQualifier&, const TString& semantic); @@ -152,6 +152,9 @@ public: void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); } void popSwitchSequence() { switchSequenceStack.pop_back(); } + // Apply L-value conversions. E.g, turning a write to a RWTexture into an ImageStore. + TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped* node); + protected: void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; @@ -161,6 +164,9 @@ protected: TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); + // Return true if this node requires L-value conversion (e.g, to an imageStore). + bool shouldConvertLValue(const TIntermNode*) const; + // Array and struct flattening bool shouldFlatten(const TType& type) const { return shouldFlattenIO(type) || shouldFlattenUniform(type); } TIntermTyped* flattenAccess(TIntermTyped* base, int member); From 0de16da2c065501862c24b881d259a2479bc3f50 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Sat, 8 Oct 2016 10:54:52 -0600 Subject: [PATCH 048/130] HLSL: phase 2c: use lValueErrorCheck in HLSL FE This commit splits lValueErrorCheck into machine dependent and independent parts. The GLSL form in TParseContext inherits from and invokes the machine dependent part in TParseContextBase. The base form checks language independent things. This split does not change the set of errors tested for: the test results are identical. The new base class interface is now used from the HLSL FE to test lvalues. There was one test diff due to this, where the test was writing to a uniform. It still does the same indirections, but does not attempt a uniform write. --- Test/baseResults/hlsl.struct.frag.out | 120 +++++++++--------- Test/hlsl.struct.frag | 4 +- .../MachineIndependent/ParseContextBase.cpp | 108 ++++++++++++++++ glslang/MachineIndependent/ParseHelper.cpp | 71 +++-------- glslang/MachineIndependent/ParseHelper.h | 7 +- hlsl/hlslParseHelper.cpp | 41 ++++-- hlsl/hlslParseHelper.h | 1 + 7 files changed, 222 insertions(+), 130 deletions(-) diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index 04117d73..7605543f 100755 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -14,15 +14,14 @@ gl_FragCoord origin is upper left 0:39 Compare Equal (temp bool) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) -0:40 move second child to first child (temp 4-component vector of float) -0:40 i: direct index for structure (temp 4-component vector of float) -0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) -0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) -0:40 Constant: -0:40 1 (const uint) +0:40 i: direct index for structure (temp 4-component vector of float) +0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:40 Constant: -0:40 0 (const int) -0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) +0:40 1 (const uint) +0:40 Constant: +0:40 0 (const int) +0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -56,15 +55,14 @@ gl_FragCoord origin is upper left 0:39 Compare Equal (temp bool) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) -0:40 move second child to first child (temp 4-component vector of float) -0:40 i: direct index for structure (temp 4-component vector of float) -0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) -0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) -0:40 Constant: -0:40 1 (const uint) +0:40 i: direct index for structure (temp 4-component vector of float) +0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:40 Constant: -0:40 0 (const int) -0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) +0:40 1 (const uint) +0:40 Constant: +0:40 0 (const int) +0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -85,12 +83,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 49 +// Id's are bound by 46 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 29 34 35 38 40 42 45 46 47 48 + EntryPoint Fragment 4 "PixelShaderFunction" 29 31 32 35 37 39 42 43 44 45 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 8 "FS" @@ -110,15 +108,15 @@ gl_FragCoord origin is upper left MemberName 22($Global) 3 "ff6" Name 24 "" Name 29 "ff4" - Name 34 "@entryPointOutput" - Name 35 "input" - Name 38 "a" - Name 40 "b" - Name 42 "c" - Name 45 "d" - Name 46 "ff1" - Name 47 "ff2" - Name 48 "ff3" + Name 31 "@entryPointOutput" + Name 32 "input" + Name 35 "a" + Name 37 "b" + Name 39 "c" + Name 42 "d" + Name 43 "ff1" + Name 44 "ff2" + Name 45 "ff3" MemberDecorate 20(myS) 0 Offset 0 MemberDecorate 20(myS) 1 Offset 4 MemberDecorate 20(myS) 2 Offset 16 @@ -133,22 +131,22 @@ gl_FragCoord origin is upper left Decorate 29(ff4) Offset 4 Decorate 29(ff4) Location 7 Decorate 29(ff4) Binding 0 - Decorate 34(@entryPointOutput) Location 0 - Decorate 35(input) Location 0 - Decorate 38(a) Location 1 - Decorate 40(b) Flat - Decorate 40(b) Location 2 - Decorate 42(c) NoPerspective - Decorate 42(c) Centroid - Decorate 42(c) Location 3 - Decorate 45(d) Centroid - Decorate 45(d) Location 4 - Decorate 46(ff1) BuiltIn FrontFacing - Decorate 47(ff2) Offset 4 - Decorate 47(ff2) Location 5 - Decorate 48(ff3) Offset 4 - Decorate 48(ff3) Location 6 - Decorate 48(ff3) Binding 0 + Decorate 31(@entryPointOutput) Location 0 + Decorate 32(input) Location 0 + Decorate 35(a) Location 1 + Decorate 37(b) Flat + Decorate 37(b) Location 2 + Decorate 39(c) NoPerspective + Decorate 39(c) Centroid + Decorate 39(c) Location 3 + Decorate 42(d) Centroid + Decorate 42(d) Location 4 + Decorate 43(ff1) BuiltIn FrontFacing + Decorate 44(ff2) Offset 4 + Decorate 44(ff2) Location 5 + Decorate 45(ff3) Offset 4 + Decorate 45(ff3) Location 6 + Decorate 45(ff3) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool @@ -168,21 +166,20 @@ gl_FragCoord origin is upper left 27: 25(int) Constant 0 28: TypePointer Input 19(fvec4) 29(ff4): 28(ptr) Variable Input - 31: TypePointer Uniform 19(fvec4) - 33: TypePointer Output 19(fvec4) -34(@entryPointOutput): 33(ptr) Variable Output - 35(input): 28(ptr) Variable Input - 38(a): 28(ptr) Variable Input - 39: TypePointer Input 6(bool) - 40(b): 39(ptr) Variable Input - 41: TypePointer Input 18(float) - 42(c): 41(ptr) Variable Input - 43: TypeVector 18(float) 2 - 44: TypePointer Input 43(fvec2) - 45(d): 44(ptr) Variable Input - 46(ff1): 39(ptr) Variable Input - 47(ff2): 39(ptr) Variable Input - 48(ff3): 39(ptr) Variable Input + 30: TypePointer Output 19(fvec4) +31(@entryPointOutput): 30(ptr) Variable Output + 32(input): 28(ptr) Variable Input + 35(a): 28(ptr) Variable Input + 36: TypePointer Input 6(bool) + 37(b): 36(ptr) Variable Input + 38: TypePointer Input 18(float) + 39(c): 38(ptr) Variable Input + 40: TypeVector 18(float) 2 + 41: TypePointer Input 40(fvec2) + 42(d): 41(ptr) Variable Input + 43(ff1): 36(ptr) Variable Input + 44(ff2): 36(ptr) Variable Input + 45(ff3): 36(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 10(s3): 9(ptr) Variable Function @@ -192,10 +189,7 @@ gl_FragCoord origin is upper left 14: 7(bvec3) CompositeExtract 12 0 15: 7(bvec3) LogicalEqual 13 14 16: 6(bool) All 15 - 30: 19(fvec4) Load 29(ff4) - 32: 31(ptr) AccessChain 24 26 27 - Store 32 30 - 36: 19(fvec4) Load 35(input) - Store 34(@entryPointOutput) 36 + 33: 19(fvec4) Load 32(input) + Store 31(@entryPointOutput) 33 Return FunctionEnd diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag index 2c511a6e..456c9ef7 100644 --- a/Test/hlsl.struct.frag +++ b/Test/hlsl.struct.frag @@ -37,7 +37,7 @@ float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0 } s3; s3 == s3; - s2.i = s.ff4; + s2.i; s.ff4; // no assignments to uniforms, but preserve indirections. return input; -} \ No newline at end of file +} diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index fe2b8e6b..45bb1689 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -113,6 +113,114 @@ void C_DECL TParseContextBase::ppWarn(const TSourceLoc& loc, const char* szReaso va_end(args); } +// +// 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. +// +// Returns true if there was an error. +// +bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) +{ + TIntermBinary* binaryNode = node->getAsBinaryNode(); + + if (binaryNode) { + switch(binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: // fall through + case EOpIndexDirectStruct: // fall through + case EOpVectorSwizzle: + return lValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } + error(loc, " l-value required", op, "", ""); + + return true; + } + + const char* symbol = nullptr; + TIntermSymbol* symNode = node->getAsSymbolNode(); + if (symNode != nullptr) + symbol = symNode->getName().c_str(); + + const char* message = nullptr; + switch (node->getQualifier().storage) { + 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; + case EvqBuffer: + if (node->getQualifier().readonly) + message = "can't modify a readonly buffer"; + break; + + default: + // + // Type that can't be written to? + // + switch (node->getBasicType()) { + case EbtSampler: + message = "can't modify a sampler"; + break; + case EbtAtomicUint: + message = "can't modify an atomic_uint"; + break; + case EbtVoid: + message = "can't modify void"; + break; + default: + break; + } + } + + if (message == nullptr && binaryNode == nullptr && symNode == nullptr) { + error(loc, " l-value required", op, "", ""); + + return true; + } + + // + // Everything else is okay, no error. + // + if (message == nullptr) + return false; + + // + // If we get here, we have an error and a message. + // + if (symNode) + error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message); + else + error(loc, " l-value required", op, "(%s)", message); + + return true; +} + +// 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) +{ + if (! node) + return; + + TIntermBinary* binaryNode = node->getAsBinaryNode(); + if (binaryNode) { + switch(binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: + case EOpIndexDirectStruct: + case EOpVectorSwizzle: + rValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } + + return; + } + + TIntermSymbol* symNode = node->getAsSymbolNode(); + if (symNode && symNode->getQualifier().writeonly) + error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); +} + // Make a shared symbol have a non-shared version that can be edited by the current // compile, such that editing its type will not change the shared version and will // effect all nodes sharing it. diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 949ba007..de1e8ca7 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1902,14 +1902,14 @@ void TParseContext::variableCheck(TIntermTyped*& nodePtr) // 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. // -// Returns true if the was an error. +// Returns true if there was an error. // bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { TIntermBinary* binaryNode = node->getAsBinaryNode(); if (binaryNode) { - bool errorReturn; + bool errorReturn = false; switch(binaryNode->getOp()) { case EOpIndexDirect: @@ -1928,9 +1928,9 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt } } - // fall through + break; // left node is checked by base class case EOpIndexDirectStruct: - return lValueErrorCheck(loc, op, binaryNode->getLeft()); + break; // left node is checked by base class case EOpVectorSwizzle: errorReturn = lValueErrorCheck(loc, op, binaryNode->getLeft()); if (!errorReturn) { @@ -1955,12 +1955,18 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt default: break; } - error(loc, " l-value required", op, "", ""); - return true; + if (errorReturn) { + error(loc, " l-value required", op, "", ""); + return true; + } } + // Let the base class check errors + if (TParseContextBase::lValueErrorCheck(loc, op, node)) + return true; + // GLSL specific const char* symbol = nullptr; TIntermSymbol* symNode = node->getAsSymbolNode(); if (symNode != nullptr) @@ -1968,19 +1974,12 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt const char* message = nullptr; switch (node->getQualifier().storage) { - case EvqConst: message = "can't modify a const"; break; - case EvqConstReadOnly: message = "can't modify a const"; break; case EvqVaryingIn: message = "can't modify shader input"; break; case EvqInstanceId: message = "can't modify gl_InstanceID"; break; case EvqVertexId: message = "can't modify gl_VertexID"; break; case EvqFace: message = "can't modify gl_FrontFace"; break; case EvqFragCoord: message = "can't modify gl_FragCoord"; break; case EvqPointCoord: message = "can't modify gl_PointCoord"; break; - case EvqUniform: message = "can't modify a uniform"; break; - case EvqBuffer: - if (node->getQualifier().readonly) - message = "can't modify a readonly buffer"; - break; case EvqFragDepth: intermediate.setDepthReplacing(); // "In addition, it is an error to statically write to gl_FragDepth in the fragment shader." @@ -1989,22 +1988,7 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt break; default: - // - // Type that can't be written to? - // - switch (node->getBasicType()) { - case EbtSampler: - message = "can't modify a sampler"; - break; - case EbtAtomicUint: - message = "can't modify an atomic_uint"; - break; - case EbtVoid: - message = "can't modify void"; - break; - default: - break; - } + break; } if (message == nullptr && binaryNode == nullptr && symNode == nullptr) { @@ -2013,7 +1997,6 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt return true; } - // // Everything else is okay, no error. // @@ -2034,30 +2017,14 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt // Test for and give an error if the node can't be read from. void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { - if (! node) - return; + // Let the base class check errors + TParseContextBase::rValueErrorCheck(loc, op, node); - TIntermBinary* binaryNode = node->getAsBinaryNode(); - if (binaryNode) { - switch(binaryNode->getOp()) { - case EOpIndexDirect: - case EOpIndexIndirect: - case EOpIndexDirectStruct: - case EOpVectorSwizzle: - rValueErrorCheck(loc, op, binaryNode->getLeft()); - default: - break; - } - - return; - } - - TIntermSymbol* symNode = node->getAsSymbolNode(); - if (symNode && symNode->getQualifier().writeonly) - error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); #ifdef AMD_EXTENSIONS - else if (symNode && symNode->getQualifier().explicitInterp) - error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); + TIntermSymbol* symNode = node->getAsSymbolNode(); + if (!(symNode && symNode->getQualifier().writeonly)) // base class checks + if (symNode && symNode->getQualifier().explicitInterp) + error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); #endif } diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index eab78359..0f60ff7f 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -143,6 +143,9 @@ public: virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName); virtual bool insertGlobalUniformBlock(); + virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); + virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); + protected: TParseContextBase(TParseContextBase&); TParseContextBase& operator=(TParseContextBase&); @@ -278,8 +281,8 @@ public: void unaryOpError(const TSourceLoc&, const char* op, TString operand); void binaryOpError(const TSourceLoc&, const char* op, TString left, TString right); void variableCheck(TIntermTyped*& nodePtr); - bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); - void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); + bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; + void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; void constantValueCheck(TIntermTyped* node, const char* token); void integerCheck(const TIntermTyped* node, const char* token); void globalCheck(const TSourceLoc&, const char* token); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 5eccf61c..5c1fd059 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -136,12 +136,36 @@ bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const return false; const TIntermAggregate* lhsAsAggregate = node->getAsAggregate(); + if (lhsAsAggregate != nullptr && lhsAsAggregate->getOp() == EOpImageLoad) return true; return false; } +// +// 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. +// +// Returns true if there was an error. +// +bool HlslParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) +{ + if (shouldConvertLValue(node)) { + // if we're writing to a texture, it must be an RW form. + + TIntermAggregate* lhsAsAggregate = node->getAsAggregate(); + TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped(); + + if (!object->getType().getSampler().isImage()) { + error(loc, "operator[] on a non-RW texture must be an r-value", "", ""); + return true; + } + } + + // Let the base class check errors + return TParseContextBase::lValueErrorCheck(loc, op, node); +} // // This function handles l-value conversions and verifications. It uses, but is not synonymous @@ -161,13 +185,11 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* nodeAsBinary ? nodeAsBinary->getLeft() : nullptr; - // Early bail out if there is no conversion to apply if (!shouldConvertLValue(lhs)) { - // TODO: >.. - // if (lhs != nullptr) - // if (lValueErrorCheck(loc, op, lhs)) - // return nullptr; + if (lhs != nullptr) + if (lValueErrorCheck(loc, op, lhs)) + return nullptr; return node; } @@ -356,8 +378,6 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* addUnary(assignOp, rhsTmp2); // rhsTmp op makeStore(object, coordTmp, rhsTmp2); // OpImageStore(object, coordTmp, rhsTmp2) return finishSequence(rhsTmp1, objDerefType); // return rhsTmp from sequence - - break; } default: @@ -365,10 +385,9 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* } } - // TODO: - // if (lhs) - // if (lValueErrorCheck(loc, op, lhs)) - // return nullptr; + if (lhs) + if (lValueErrorCheck(loc, op, lhs)) + return nullptr; return node; } diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 8dcfe840..d8e75466 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -154,6 +154,7 @@ public: // Apply L-value conversions. E.g, turning a write to a RWTexture into an ImageStore. TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped* node); + bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; protected: void inheritGlobalDefaults(TQualifier& dst) const; From 07830e805b6c4c65ce9bf275c186e84ab2335200 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Mon, 10 Oct 2016 10:00:14 -0600 Subject: [PATCH 049/130] HLSL: phase 2d: minor cleanup, & allow operator[] on non-rw textures Improve comments. A few tweaked lines allow [] on non-rw tx. Add test case for this. Improve VectorTimesScalar handling. --- Test/baseResults/hlsl.rw.bracket.frag.out | 207 +++--- Test/baseResults/hlsl.tx.bracket.frag.out | 702 ++++++++++++++++++++ Test/hlsl.rw.bracket.frag | 7 +- Test/hlsl.tx.bracket.frag | 73 ++ glslang/MachineIndependent/Intermediate.cpp | 6 +- gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 4 +- hlsl/hlslParseHelper.cpp | 15 +- 8 files changed, 923 insertions(+), 92 deletions(-) create mode 100644 Test/baseResults/hlsl.tx.bracket.frag.out create mode 100644 Test/hlsl.tx.bracket.frag diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out index b0dc68b7..c6e3c89e 100644 --- a/Test/baseResults/hlsl.rw.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -813,25 +813,39 @@ gl_FragCoord origin is upper left 0:132 'coordTemp' (temp int) 0:132 'storeTempPost' (temp 4-component vector of uint) 0:132 'storeTempPre' (temp 4-component vector of uint) -0:134 move second child to first child (temp 4-component vector of float) -0:134 Color: direct index for structure (temp 4-component vector of float) -0:134 'psout' (temp structure{temp 4-component vector of float Color}) -0:134 Constant: -0:134 0 (const int) -0:134 Constant: -0:134 1.000000 -0:134 1.000000 -0:134 1.000000 -0:134 1.000000 -0:136 Sequence -0:136 Sequence -0:136 move second child to first child (temp 4-component vector of float) +0:135 Sequence +0:135 move second child to first child (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:? imageLoad (temp 4-component vector of float) +0:135 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:136 Color: direct index for structure (temp 4-component vector of float) -0:136 'psout' (temp structure{temp 4-component vector of float Color}) -0:136 Constant: -0:136 0 (const int) -0:136 Branch: Return +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return 0:? Linker Objects 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) @@ -1670,25 +1684,39 @@ gl_FragCoord origin is upper left 0:132 'coordTemp' (temp int) 0:132 'storeTempPost' (temp 4-component vector of uint) 0:132 'storeTempPre' (temp 4-component vector of uint) -0:134 move second child to first child (temp 4-component vector of float) -0:134 Color: direct index for structure (temp 4-component vector of float) -0:134 'psout' (temp structure{temp 4-component vector of float Color}) -0:134 Constant: -0:134 0 (const int) -0:134 Constant: -0:134 1.000000 -0:134 1.000000 -0:134 1.000000 -0:134 1.000000 -0:136 Sequence -0:136 Sequence -0:136 move second child to first child (temp 4-component vector of float) +0:135 Sequence +0:135 move second child to first child (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:? imageLoad (temp 4-component vector of float) +0:135 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:136 Color: direct index for structure (temp 4-component vector of float) -0:136 'psout' (temp structure{temp 4-component vector of float Color}) -0:136 Constant: -0:136 0 (const int) -0:136 Branch: Return +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return 0:? Linker Objects 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) @@ -1711,13 +1739,13 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 596 +// Id's are bound by 602 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 571 + EntryPoint Fragment 4 "main" 577 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 11 "Fn1(vi4;" @@ -1832,17 +1860,18 @@ gl_FragCoord origin is upper left Name 550 "coordTemp" Name 553 "storeTempPre" Name 557 "storeTempPost" - Name 565 "PS_OUTPUT" - MemberName 565(PS_OUTPUT) 0 "Color" - Name 567 "psout" - Name 571 "Color" - Name 577 "g_sSamp" - Name 580 "g_tTex1df4a" - Name 583 "g_tTex1di4a" - Name 586 "g_tTex1du4a" - Name 589 "g_tTex2df4a" - Name 592 "g_tTex2di4a" - Name 595 "g_tTex2du4a" + Name 565 "storeTemp" + Name 571 "PS_OUTPUT" + MemberName 571(PS_OUTPUT) 0 "Color" + Name 573 "psout" + Name 577 "Color" + Name 583 "g_sSamp" + Name 586 "g_tTex1df4a" + Name 589 "g_tTex1di4a" + Name 592 "g_tTex1du4a" + Name 595 "g_tTex2df4a" + Name 598 "g_tTex2di4a" + Name 601 "g_tTex2du4a" MemberDecorate 59($Global) 0 Offset 0 MemberDecorate 59($Global) 1 Offset 8 MemberDecorate 59($Global) 2 Offset 16 @@ -1866,15 +1895,15 @@ gl_FragCoord origin is upper left Decorate 127(g_tTex3df4) DescriptorSet 0 Decorate 137(g_tTex3di4) DescriptorSet 0 Decorate 145(g_tTex3du4) DescriptorSet 0 - Decorate 571(Color) Location 0 - Decorate 577(g_sSamp) DescriptorSet 0 - Decorate 577(g_sSamp) Binding 0 - Decorate 580(g_tTex1df4a) DescriptorSet 0 - Decorate 583(g_tTex1di4a) DescriptorSet 0 - Decorate 586(g_tTex1du4a) DescriptorSet 0 - Decorate 589(g_tTex2df4a) DescriptorSet 0 - Decorate 592(g_tTex2di4a) DescriptorSet 0 - Decorate 595(g_tTex2du4a) DescriptorSet 0 + Decorate 577(Color) Location 0 + Decorate 583(g_sSamp) DescriptorSet 0 + Decorate 583(g_sSamp) Binding 0 + Decorate 586(g_tTex1df4a) DescriptorSet 0 + Decorate 589(g_tTex1di4a) DescriptorSet 0 + Decorate 592(g_tTex1du4a) DescriptorSet 0 + Decorate 595(g_tTex2df4a) DescriptorSet 0 + Decorate 598(g_tTex2di4a) DescriptorSet 0 + Decorate 601(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -1962,32 +1991,33 @@ gl_FragCoord origin is upper left 348: 13(int) Constant 9 349: 14(ivec4) ConstantComposite 348 174 173 175 404: 20(float) Constant 1065353216 - 565(PS_OUTPUT): TypeStruct 21(fvec4) - 566: TypePointer Function 565(PS_OUTPUT) - 568: 21(fvec4) ConstantComposite 404 404 404 404 - 570: TypePointer Output 21(fvec4) - 571(Color): 570(ptr) Variable Output - 575: TypeSampler - 576: TypePointer UniformConstant 575 - 577(g_sSamp): 576(ptr) Variable UniformConstant - 578: TypeImage 20(float) 1D array nonsampled format:Rgba32f - 579: TypePointer UniformConstant 578 -580(g_tTex1df4a): 579(ptr) Variable UniformConstant - 581: TypeImage 6(int) 1D array nonsampled format:Rgba32i + 567: 57(ivec2) ConstantComposite 129 62 + 571(PS_OUTPUT): TypeStruct 21(fvec4) + 572: TypePointer Function 571(PS_OUTPUT) + 574: 21(fvec4) ConstantComposite 404 404 404 404 + 576: TypePointer Output 21(fvec4) + 577(Color): 576(ptr) Variable Output + 581: TypeSampler 582: TypePointer UniformConstant 581 -583(g_tTex1di4a): 582(ptr) Variable UniformConstant - 584: TypeImage 13(int) 1D array nonsampled format:Rgba32ui + 583(g_sSamp): 582(ptr) Variable UniformConstant + 584: TypeImage 20(float) 1D array nonsampled format:Rgba32f 585: TypePointer UniformConstant 584 -586(g_tTex1du4a): 585(ptr) Variable UniformConstant - 587: TypeImage 20(float) 2D array nonsampled format:Rgba32f +586(g_tTex1df4a): 585(ptr) Variable UniformConstant + 587: TypeImage 6(int) 1D array nonsampled format:Rgba32i 588: TypePointer UniformConstant 587 -589(g_tTex2df4a): 588(ptr) Variable UniformConstant - 590: TypeImage 6(int) 2D array nonsampled format:Rgba32i +589(g_tTex1di4a): 588(ptr) Variable UniformConstant + 590: TypeImage 13(int) 1D array nonsampled format:Rgba32ui 591: TypePointer UniformConstant 590 -592(g_tTex2di4a): 591(ptr) Variable UniformConstant - 593: TypeImage 13(int) 2D array nonsampled format:Rgba32ui +592(g_tTex1du4a): 591(ptr) Variable UniformConstant + 593: TypeImage 20(float) 2D array nonsampled format:Rgba32f 594: TypePointer UniformConstant 593 -595(g_tTex2du4a): 594(ptr) Variable UniformConstant +595(g_tTex2df4a): 594(ptr) Variable UniformConstant + 596: TypeImage 6(int) 2D array nonsampled format:Rgba32i + 597: TypePointer UniformConstant 596 +598(g_tTex2di4a): 597(ptr) Variable UniformConstant + 599: TypeImage 13(int) 2D array nonsampled format:Rgba32ui + 600: TypePointer UniformConstant 599 +601(g_tTex2du4a): 600(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 77(r00): 22(ptr) Variable Function @@ -2067,7 +2097,8 @@ gl_FragCoord origin is upper left 550(coordTemp): 182(ptr) Variable Function 553(storeTempPre): 15(ptr) Variable Function 557(storeTempPost): 15(ptr) Variable Function - 567(psout): 566(ptr) Variable Function + 565(storeTemp): 22(ptr) Variable Function + 573(psout): 572(ptr) Variable Function 72: 69 Load 71(g_tTex1df4) 74: 73(ptr) AccessChain 61 51 75: 6(int) Load 74 @@ -2562,11 +2593,17 @@ gl_FragCoord origin is upper left 563: 6(int) Load 550(coordTemp) 564: 14(ivec4) Load 557(storeTempPost) ImageWrite 562 563 564 - 569: 22(ptr) AccessChain 567(psout) 51 - Store 569 568 - 572: 22(ptr) AccessChain 567(psout) 51 - 573: 21(fvec4) Load 572 - Store 571(Color) 573 + 566: 99 Load 101(g_tTex2df4) + 568: 21(fvec4) ImageRead 566 567 + Store 565(storeTemp) 568 + 569: 69 Load 71(g_tTex1df4) + 570: 21(fvec4) Load 565(storeTemp) + ImageWrite 569 103 570 + 575: 22(ptr) AccessChain 573(psout) 51 + Store 575 574 + 578: 22(ptr) AccessChain 573(psout) 51 + 579: 21(fvec4) Load 578 + Store 577(Color) 579 Return FunctionEnd 11(Fn1(vi4;): 7(ivec4) Function None 9 diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out new file mode 100644 index 00000000..0769cde4 --- /dev/null +++ b/Test/baseResults/hlsl.tx.bracket.frag.out @@ -0,0 +1,702 @@ +hlsl.tx.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:38 Function Parameters: +0:38 'x' (in 4-component vector of int) +0:? Sequence +0:38 Branch: Return with expression +0:38 'x' (in 4-component vector of int) +0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:39 Function Parameters: +0:39 'x' (in 4-component vector of uint) +0:? Sequence +0:39 Branch: Return with expression +0:39 'x' (in 4-component vector of uint) +0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'x' (in 4-component vector of float) +0:? Sequence +0:40 Branch: Return with expression +0:40 'x' (in 4-component vector of float) +0:42 Function Definition: SomeValue( (temp 4-component vector of float) +0:42 Function Parameters: +0:? Sequence +0:42 Branch: Return with expression +0:42 Convert int to float (temp 4-component vector of float) +0:42 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 3 (const uint) +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:49 textureFetch (temp 4-component vector of float) +0:49 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:49 c1: direct index for structure (layout(offset=0 ) uniform int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 0 (const uint) +0:49 Constant: +0:49 0 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'r00' (temp 4-component vector of float) +0:51 textureFetch (temp 4-component vector of float) +0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:51 c1: direct index for structure (layout(offset=0 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 0 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'r01' (temp 4-component vector of int) +0:52 textureFetch (temp 4-component vector of int) +0:52 'g_tTex1di4' (uniform itexture1D) +0:52 c1: direct index for structure (layout(offset=0 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 0 (const uint) +0:52 Constant: +0:52 0 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'r02' (temp 4-component vector of uint) +0:53 textureFetch (temp 4-component vector of uint) +0:53 'g_tTex1du4' (uniform utexture1D) +0:53 c1: direct index for structure (layout(offset=0 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 0 (const uint) +0:53 Constant: +0:53 0 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:56 'r10' (temp 4-component vector of float) +0:56 textureFetch (temp 4-component vector of float) +0:56 'g_tTex2df4' (uniform texture2D) +0:56 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 1 (const uint) +0:56 Constant: +0:56 0 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of int) +0:57 'r11' (temp 4-component vector of int) +0:57 textureFetch (temp 4-component vector of int) +0:57 'g_tTex2di4' (uniform itexture2D) +0:57 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 1 (const uint) +0:57 Constant: +0:57 0 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of uint) +0:58 'r12' (temp 4-component vector of uint) +0:58 textureFetch (temp 4-component vector of uint) +0:58 'g_tTex2du4' (uniform utexture2D) +0:58 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 1 (const uint) +0:58 Constant: +0:58 0 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:61 'r20' (temp 4-component vector of float) +0:61 textureFetch (temp 4-component vector of float) +0:61 'g_tTex3df4' (uniform texture3D) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Constant: +0:61 0 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of int) +0:62 'r21' (temp 4-component vector of int) +0:62 textureFetch (temp 4-component vector of int) +0:62 'g_tTex3di4' (uniform itexture3D) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Constant: +0:62 0 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of uint) +0:63 'r22' (temp 4-component vector of uint) +0:63 textureFetch (temp 4-component vector of uint) +0:63 'g_tTex3du4' (uniform utexture3D) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 2 (const uint) +0:63 Constant: +0:63 0 (const int) +0:66 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:66 textureFetch (temp 4-component vector of float) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:66 c1: direct index for structure (layout(offset=0 ) uniform int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 0 (const uint) +0:66 Constant: +0:66 0 (const int) +0:67 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:67 textureFetch (temp 4-component vector of int) +0:67 'g_tTex1di4' (uniform itexture1D) +0:67 c1: direct index for structure (layout(offset=0 ) uniform int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 0 (const uint) +0:67 Constant: +0:67 0 (const int) +0:68 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:68 textureFetch (temp 4-component vector of uint) +0:68 'g_tTex1du4' (uniform utexture1D) +0:68 c1: direct index for structure (layout(offset=0 ) uniform int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 0 (const uint) +0:68 Constant: +0:68 0 (const int) +0:70 move second child to first child (temp 4-component vector of float) +0:70 Color: direct index for structure (temp 4-component vector of float) +0:70 'psout' (temp structure{temp 4-component vector of float Color}) +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:72 Sequence +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:72 Color: direct index for structure (temp 4-component vector of float) +0:72 'psout' (temp structure{temp 4-component vector of float Color}) +0:72 Constant: +0:72 0 (const int) +0:72 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:38 Function Parameters: +0:38 'x' (in 4-component vector of int) +0:? Sequence +0:38 Branch: Return with expression +0:38 'x' (in 4-component vector of int) +0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:39 Function Parameters: +0:39 'x' (in 4-component vector of uint) +0:? Sequence +0:39 Branch: Return with expression +0:39 'x' (in 4-component vector of uint) +0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'x' (in 4-component vector of float) +0:? Sequence +0:40 Branch: Return with expression +0:40 'x' (in 4-component vector of float) +0:42 Function Definition: SomeValue( (temp 4-component vector of float) +0:42 Function Parameters: +0:? Sequence +0:42 Branch: Return with expression +0:42 Convert int to float (temp 4-component vector of float) +0:42 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 3 (const uint) +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:49 textureFetch (temp 4-component vector of float) +0:49 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:49 c1: direct index for structure (layout(offset=0 ) uniform int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 0 (const uint) +0:49 Constant: +0:49 0 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'r00' (temp 4-component vector of float) +0:51 textureFetch (temp 4-component vector of float) +0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:51 c1: direct index for structure (layout(offset=0 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 0 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'r01' (temp 4-component vector of int) +0:52 textureFetch (temp 4-component vector of int) +0:52 'g_tTex1di4' (uniform itexture1D) +0:52 c1: direct index for structure (layout(offset=0 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 0 (const uint) +0:52 Constant: +0:52 0 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'r02' (temp 4-component vector of uint) +0:53 textureFetch (temp 4-component vector of uint) +0:53 'g_tTex1du4' (uniform utexture1D) +0:53 c1: direct index for structure (layout(offset=0 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 0 (const uint) +0:53 Constant: +0:53 0 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:56 'r10' (temp 4-component vector of float) +0:56 textureFetch (temp 4-component vector of float) +0:56 'g_tTex2df4' (uniform texture2D) +0:56 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 1 (const uint) +0:56 Constant: +0:56 0 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of int) +0:57 'r11' (temp 4-component vector of int) +0:57 textureFetch (temp 4-component vector of int) +0:57 'g_tTex2di4' (uniform itexture2D) +0:57 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 1 (const uint) +0:57 Constant: +0:57 0 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of uint) +0:58 'r12' (temp 4-component vector of uint) +0:58 textureFetch (temp 4-component vector of uint) +0:58 'g_tTex2du4' (uniform utexture2D) +0:58 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 1 (const uint) +0:58 Constant: +0:58 0 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:61 'r20' (temp 4-component vector of float) +0:61 textureFetch (temp 4-component vector of float) +0:61 'g_tTex3df4' (uniform texture3D) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Constant: +0:61 0 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of int) +0:62 'r21' (temp 4-component vector of int) +0:62 textureFetch (temp 4-component vector of int) +0:62 'g_tTex3di4' (uniform itexture3D) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Constant: +0:62 0 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of uint) +0:63 'r22' (temp 4-component vector of uint) +0:63 textureFetch (temp 4-component vector of uint) +0:63 'g_tTex3du4' (uniform utexture3D) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 2 (const uint) +0:63 Constant: +0:63 0 (const int) +0:66 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:66 textureFetch (temp 4-component vector of float) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:66 c1: direct index for structure (layout(offset=0 ) uniform int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 0 (const uint) +0:66 Constant: +0:66 0 (const int) +0:67 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:67 textureFetch (temp 4-component vector of int) +0:67 'g_tTex1di4' (uniform itexture1D) +0:67 c1: direct index for structure (layout(offset=0 ) uniform int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 0 (const uint) +0:67 Constant: +0:67 0 (const int) +0:68 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:68 textureFetch (temp 4-component vector of uint) +0:68 'g_tTex1du4' (uniform utexture1D) +0:68 c1: direct index for structure (layout(offset=0 ) uniform int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 0 (const uint) +0:68 Constant: +0:68 0 (const int) +0:70 move second child to first child (temp 4-component vector of float) +0:70 Color: direct index for structure (temp 4-component vector of float) +0:70 'psout' (temp structure{temp 4-component vector of float Color}) +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:72 Sequence +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:72 Color: direct index for structure (temp 4-component vector of float) +0:72 'psout' (temp structure{temp 4-component vector of float Color}) +0:72 Constant: +0:72 0 (const int) +0:72 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 183 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 158 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "Fn1(vi4;" + Name 10 "x" + Name 18 "Fn1(vu4;" + Name 17 "x" + Name 25 "Fn1(vf4;" + Name 24 "x" + Name 28 "SomeValue(" + Name 41 "$Global" + MemberName 41($Global) 0 "c1" + MemberName 41($Global) 1 "c2" + MemberName 41($Global) 2 "c3" + MemberName 41($Global) 3 "c4" + MemberName 41($Global) 4 "o1" + MemberName 41($Global) 5 "o2" + MemberName 41($Global) 6 "o3" + MemberName 41($Global) 7 "o4" + Name 43 "" + Name 53 "g_tTex1df4" + Name 60 "r00" + Name 65 "r01" + Name 68 "g_tTex1di4" + Name 73 "r02" + Name 76 "g_tTex1du4" + Name 81 "r10" + Name 84 "g_tTex2df4" + Name 91 "r11" + Name 94 "g_tTex2di4" + Name 99 "r12" + Name 102 "g_tTex2du4" + Name 107 "r20" + Name 110 "g_tTex3df4" + Name 117 "r21" + Name 120 "g_tTex3di4" + Name 125 "r22" + Name 128 "g_tTex3du4" + Name 137 "param" + Name 143 "param" + Name 149 "param" + Name 151 "PS_OUTPUT" + MemberName 151(PS_OUTPUT) 0 "Color" + Name 153 "psout" + Name 158 "Color" + Name 164 "g_sSamp" + Name 167 "g_tTex1df4a" + Name 170 "g_tTex1di4a" + Name 173 "g_tTex1du4a" + Name 176 "g_tTex2df4a" + Name 179 "g_tTex2di4a" + Name 182 "g_tTex2du4a" + MemberDecorate 41($Global) 0 Offset 0 + MemberDecorate 41($Global) 1 Offset 8 + MemberDecorate 41($Global) 2 Offset 16 + MemberDecorate 41($Global) 3 Offset 32 + MemberDecorate 41($Global) 4 Offset 48 + MemberDecorate 41($Global) 5 Offset 56 + MemberDecorate 41($Global) 6 Offset 64 + MemberDecorate 41($Global) 7 Offset 80 + Decorate 41($Global) Block + Decorate 43 DescriptorSet 0 + Decorate 53(g_tTex1df4) DescriptorSet 0 + Decorate 53(g_tTex1df4) Binding 0 + Decorate 68(g_tTex1di4) DescriptorSet 0 + Decorate 76(g_tTex1du4) DescriptorSet 0 + Decorate 84(g_tTex2df4) DescriptorSet 0 + Decorate 94(g_tTex2di4) DescriptorSet 0 + Decorate 102(g_tTex2du4) DescriptorSet 0 + Decorate 110(g_tTex3df4) DescriptorSet 0 + Decorate 120(g_tTex3di4) DescriptorSet 0 + Decorate 128(g_tTex3du4) DescriptorSet 0 + Decorate 158(Color) Location 0 + Decorate 164(g_sSamp) DescriptorSet 0 + Decorate 164(g_sSamp) Binding 0 + Decorate 167(g_tTex1df4a) DescriptorSet 0 + Decorate 170(g_tTex1di4a) DescriptorSet 0 + Decorate 173(g_tTex1du4a) DescriptorSet 0 + Decorate 176(g_tTex2df4a) DescriptorSet 0 + Decorate 179(g_tTex2di4a) DescriptorSet 0 + Decorate 182(g_tTex2du4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 4 + 8: TypePointer Function 7(ivec4) + 9: TypeFunction 7(ivec4) 8(ptr) + 13: TypeInt 32 0 + 14: TypeVector 13(int) 4 + 15: TypePointer Function 14(ivec4) + 16: TypeFunction 14(ivec4) 15(ptr) + 20: TypeFloat 32 + 21: TypeVector 20(float) 4 + 22: TypePointer Function 21(fvec4) + 23: TypeFunction 21(fvec4) 22(ptr) + 27: TypeFunction 21(fvec4) + 39: TypeVector 6(int) 2 + 40: TypeVector 6(int) 3 + 41($Global): TypeStruct 6(int) 39(ivec2) 40(ivec3) 7(ivec4) 6(int) 39(ivec2) 40(ivec3) 7(ivec4) + 42: TypePointer Uniform 41($Global) + 43: 42(ptr) Variable Uniform + 44: 6(int) Constant 3 + 45: TypePointer Uniform 7(ivec4) + 51: TypeImage 20(float) 1D sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex1df4): 52(ptr) Variable UniformConstant + 55: 6(int) Constant 0 + 56: TypePointer Uniform 6(int) + 66: TypeImage 6(int) 1D sampled format:Unknown + 67: TypePointer UniformConstant 66 + 68(g_tTex1di4): 67(ptr) Variable UniformConstant + 74: TypeImage 13(int) 1D sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex1du4): 75(ptr) Variable UniformConstant + 82: TypeImage 20(float) 2D sampled format:Unknown + 83: TypePointer UniformConstant 82 + 84(g_tTex2df4): 83(ptr) Variable UniformConstant + 86: 6(int) Constant 1 + 87: TypePointer Uniform 39(ivec2) + 92: TypeImage 6(int) 2D sampled format:Unknown + 93: TypePointer UniformConstant 92 + 94(g_tTex2di4): 93(ptr) Variable UniformConstant + 100: TypeImage 13(int) 2D sampled format:Unknown + 101: TypePointer UniformConstant 100 + 102(g_tTex2du4): 101(ptr) Variable UniformConstant + 108: TypeImage 20(float) 3D sampled format:Unknown + 109: TypePointer UniformConstant 108 + 110(g_tTex3df4): 109(ptr) Variable UniformConstant + 112: 6(int) Constant 2 + 113: TypePointer Uniform 40(ivec3) + 118: TypeImage 6(int) 3D sampled format:Unknown + 119: TypePointer UniformConstant 118 + 120(g_tTex3di4): 119(ptr) Variable UniformConstant + 126: TypeImage 13(int) 3D sampled format:Unknown + 127: TypePointer UniformConstant 126 + 128(g_tTex3du4): 127(ptr) Variable UniformConstant + 151(PS_OUTPUT): TypeStruct 21(fvec4) + 152: TypePointer Function 151(PS_OUTPUT) + 154: 20(float) Constant 1065353216 + 155: 21(fvec4) ConstantComposite 154 154 154 154 + 157: TypePointer Output 21(fvec4) + 158(Color): 157(ptr) Variable Output + 162: TypeSampler + 163: TypePointer UniformConstant 162 + 164(g_sSamp): 163(ptr) Variable UniformConstant + 165: TypeImage 20(float) 1D array sampled format:Unknown + 166: TypePointer UniformConstant 165 +167(g_tTex1df4a): 166(ptr) Variable UniformConstant + 168: TypeImage 6(int) 1D array sampled format:Unknown + 169: TypePointer UniformConstant 168 +170(g_tTex1di4a): 169(ptr) Variable UniformConstant + 171: TypeImage 13(int) 1D array sampled format:Unknown + 172: TypePointer UniformConstant 171 +173(g_tTex1du4a): 172(ptr) Variable UniformConstant + 174: TypeImage 20(float) 2D array sampled format:Unknown + 175: TypePointer UniformConstant 174 +176(g_tTex2df4a): 175(ptr) Variable UniformConstant + 177: TypeImage 6(int) 2D array sampled format:Unknown + 178: TypePointer UniformConstant 177 +179(g_tTex2di4a): 178(ptr) Variable UniformConstant + 180: TypeImage 13(int) 2D array sampled format:Unknown + 181: TypePointer UniformConstant 180 +182(g_tTex2du4a): 181(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 60(r00): 22(ptr) Variable Function + 65(r01): 8(ptr) Variable Function + 73(r02): 15(ptr) Variable Function + 81(r10): 22(ptr) Variable Function + 91(r11): 8(ptr) Variable Function + 99(r12): 15(ptr) Variable Function + 107(r20): 22(ptr) Variable Function + 117(r21): 8(ptr) Variable Function + 125(r22): 15(ptr) Variable Function + 137(param): 22(ptr) Variable Function + 143(param): 8(ptr) Variable Function + 149(param): 15(ptr) Variable Function + 153(psout): 152(ptr) Variable Function + 54: 51 Load 53(g_tTex1df4) + 57: 56(ptr) AccessChain 43 55 + 58: 6(int) Load 57 + 59: 21(fvec4) ImageFetch 54 58 Lod 55 + 61: 51 Load 53(g_tTex1df4) + 62: 56(ptr) AccessChain 43 55 + 63: 6(int) Load 62 + 64: 21(fvec4) ImageFetch 61 63 Lod 55 + Store 60(r00) 64 + 69: 66 Load 68(g_tTex1di4) + 70: 56(ptr) AccessChain 43 55 + 71: 6(int) Load 70 + 72: 7(ivec4) ImageFetch 69 71 Lod 55 + Store 65(r01) 72 + 77: 74 Load 76(g_tTex1du4) + 78: 56(ptr) AccessChain 43 55 + 79: 6(int) Load 78 + 80: 14(ivec4) ImageFetch 77 79 Lod 55 + Store 73(r02) 80 + 85: 82 Load 84(g_tTex2df4) + 88: 87(ptr) AccessChain 43 86 + 89: 39(ivec2) Load 88 + 90: 21(fvec4) ImageFetch 85 89 Lod 55 + Store 81(r10) 90 + 95: 92 Load 94(g_tTex2di4) + 96: 87(ptr) AccessChain 43 86 + 97: 39(ivec2) Load 96 + 98: 7(ivec4) ImageFetch 95 97 Lod 55 + Store 91(r11) 98 + 103: 100 Load 102(g_tTex2du4) + 104: 87(ptr) AccessChain 43 86 + 105: 39(ivec2) Load 104 + 106: 14(ivec4) ImageFetch 103 105 Lod 55 + Store 99(r12) 106 + 111: 108 Load 110(g_tTex3df4) + 114: 113(ptr) AccessChain 43 112 + 115: 40(ivec3) Load 114 + 116: 21(fvec4) ImageFetch 111 115 Lod 55 + Store 107(r20) 116 + 121: 118 Load 120(g_tTex3di4) + 122: 113(ptr) AccessChain 43 112 + 123: 40(ivec3) Load 122 + 124: 7(ivec4) ImageFetch 121 123 Lod 55 + Store 117(r21) 124 + 129: 126 Load 128(g_tTex3du4) + 130: 113(ptr) AccessChain 43 112 + 131: 40(ivec3) Load 130 + 132: 14(ivec4) ImageFetch 129 131 Lod 55 + Store 125(r22) 132 + 133: 51 Load 53(g_tTex1df4) + 134: 56(ptr) AccessChain 43 55 + 135: 6(int) Load 134 + 136: 21(fvec4) ImageFetch 133 135 Lod 55 + Store 137(param) 136 + 138: 21(fvec4) FunctionCall 25(Fn1(vf4;) 137(param) + 139: 66 Load 68(g_tTex1di4) + 140: 56(ptr) AccessChain 43 55 + 141: 6(int) Load 140 + 142: 7(ivec4) ImageFetch 139 141 Lod 55 + Store 143(param) 142 + 144: 7(ivec4) FunctionCall 11(Fn1(vi4;) 143(param) + 145: 74 Load 76(g_tTex1du4) + 146: 56(ptr) AccessChain 43 55 + 147: 6(int) Load 146 + 148: 14(ivec4) ImageFetch 145 147 Lod 55 + Store 149(param) 148 + 150: 14(ivec4) FunctionCall 18(Fn1(vu4;) 149(param) + 156: 22(ptr) AccessChain 153(psout) 55 + Store 156 155 + 159: 22(ptr) AccessChain 153(psout) 55 + 160: 21(fvec4) Load 159 + Store 158(Color) 160 + Return + FunctionEnd + 11(Fn1(vi4;): 7(ivec4) Function None 9 + 10(x): 8(ptr) FunctionParameter + 12: Label + 30: 7(ivec4) Load 10(x) + ReturnValue 30 + FunctionEnd + 18(Fn1(vu4;): 14(ivec4) Function None 16 + 17(x): 15(ptr) FunctionParameter + 19: Label + 33: 14(ivec4) Load 17(x) + ReturnValue 33 + FunctionEnd + 25(Fn1(vf4;): 21(fvec4) Function None 23 + 24(x): 22(ptr) FunctionParameter + 26: Label + 36: 21(fvec4) Load 24(x) + ReturnValue 36 + FunctionEnd + 28(SomeValue(): 21(fvec4) Function None 27 + 29: Label + 46: 45(ptr) AccessChain 43 44 + 47: 7(ivec4) Load 46 + 48: 21(fvec4) ConvertSToF 47 + ReturnValue 48 + FunctionEnd diff --git a/Test/hlsl.rw.bracket.frag b/Test/hlsl.rw.bracket.frag index 650b5674..9390e8de 100644 --- a/Test/hlsl.rw.bracket.frag +++ b/Test/hlsl.rw.bracket.frag @@ -74,7 +74,7 @@ PS_OUTPUT main() // Test as L-values // 1D - g_tTex1df4[c1] = SomeValue(); // complex L-value + g_tTex1df4[c1] = SomeValue(); // complex R-value g_tTex1df4[c1] = lf4; g_tTex1di4[c1] = int4(2,2,3,4); g_tTex1du4[c1] = uint4(3,2,3,4); @@ -103,7 +103,7 @@ PS_OUTPUT main() g_tTex3di4[c3] = int4(8,6,7,8); g_tTex3du4[c3] = uint4(9,2,3,4); - // // Test function calling + // Test function calling Fn1(g_tTex1df4[c1]); // in Fn1(g_tTex1di4[c1]); // in Fn1(g_tTex1du4[c1]); // in @@ -131,6 +131,9 @@ PS_OUTPUT main() g_tTex1di4[c1]++; g_tTex1du4[c1]--; + // read and write + g_tTex1df4[1] = g_tTex2df4[int2(2,3)]; + psout.Color = 1.0; return psout; diff --git a/Test/hlsl.tx.bracket.frag b/Test/hlsl.tx.bracket.frag new file mode 100644 index 00000000..0d3d81f8 --- /dev/null +++ b/Test/hlsl.tx.bracket.frag @@ -0,0 +1,73 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +int4 Fn1(in int4 x) { return x; } +uint4 Fn1(in uint4 x) { return x; } +float4 Fn1(in float4 x) { return x; } + +float4 SomeValue() { return c4; } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4[c1]; + + float4 r00 = g_tTex1df4[c1]; + int4 r01 = g_tTex1di4[c1]; + uint4 r02 = g_tTex1du4[c1]; + + // 2D + float4 r10 = g_tTex2df4[c2]; + int4 r11 = g_tTex2di4[c2]; + uint4 r12 = g_tTex2du4[c2]; + + // 3D + float4 r20 = g_tTex3df4[c3]; + int4 r21 = g_tTex3di4[c3]; + uint4 r22 = g_tTex3du4[c3]; + + // Test function calling + Fn1(g_tTex1df4[c1]); // in + Fn1(g_tTex1di4[c1]); // in + Fn1(g_tTex1du4[c1]); // in + + psout.Color = 1.0; + + return psout; +} diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 96e5c348..81fdedba 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2046,8 +2046,9 @@ bool TIntermBinary::promote() break; case EOpVectorTimesScalarAssign: - if (left->isVector() && right->isScalar()) - return true; + if (!left->isVector() || !right->isScalar()) + return false; + break; default: return false; @@ -2069,6 +2070,7 @@ bool TIntermBinary::promote() case EOpExclusiveOrAssign: case EOpLeftShiftAssign: case EOpRightShiftAssign: + case EOpVectorTimesScalarAssign: if (getType() != left->getType()) return false; break; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 9a160cf4..354a5dfe 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -191,6 +191,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.switch.frag", "PixelShaderFunction"}, {"hlsl.swizzle.frag", "PixelShaderFunction"}, {"hlsl.templatetypes.frag", "PixelShaderFunction"}, + {"hlsl.tx.bracket.frag", "main"}, {"hlsl.typedef.frag", "PixelShaderFunction"}, {"hlsl.whileLoop.frag", "PixelShaderFunction"}, {"hlsl.void.frag", "PixelShaderFunction"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 5dc25fc5..5f9ec267 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -1948,7 +1948,7 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node) return true; node = intermediate.addUnaryMath(unaryOp, node, loc); - node = parseContext.handleLvalue(loc, "", node); + node = parseContext.handleLvalue(loc, "unary operator", node); return node != nullptr; } @@ -2064,7 +2064,7 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) case EOpPostDecrement: // DEC_OP node = intermediate.addUnaryMath(postOp, node, loc); - node = parseContext.handleLvalue(loc, "", node); + node = parseContext.handleLvalue(loc, "unary operator", node); break; default: assert(0); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 5c1fd059..8d841592 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -130,6 +130,10 @@ bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& return numErrors == 0; } +// +// Return true if this l-value node should be converted in some manner. +// For instance: turning a load aggregate into a store in an l-value. +// bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const { if (node == nullptr) @@ -177,6 +181,9 @@ bool HlslParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, T // TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* op, TIntermTyped* node) { + if (node == nullptr) + return nullptr; + TIntermBinary* nodeAsBinary = node->getAsBinaryNode(); TIntermUnary* nodeAsUnary = node->getAsUnaryNode(); TIntermAggregate* sequence = nullptr; @@ -571,12 +578,18 @@ TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIn const TSampler& sampler = base->getType().getSampler(); if (sampler.isImage() || sampler.isTexture()) { const int vecSize = 4; // TODO: handle arbitrary sizes (get from qualifier) - TIntermAggregate* load = new TIntermAggregate(EOpImageLoad); + TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch); load->setType(TType(sampler.type, EvqTemporary, vecSize)); load->setLoc(loc); load->getSequence().push_back(base); load->getSequence().push_back(index); + + // Textures need a MIP. First indirection is always to mip 0. If there's another, we'll add it + // later. + if (sampler.isTexture()) + load->getSequence().push_back(intermediate.addConstantUnion(0, loc, true)); + return load; } } From b3da8a9cb30bee73e4646e50ff2ce6c21bef8ec1 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 12 Oct 2016 12:38:12 -0600 Subject: [PATCH 050/130] HLSL: phase 2e: introduce lower level addBinaryNode/UnaryNode fns - hlsl.struct.frag variable changed to static, assignment replacd. - Created new low level functions addBinaryNode and addUnaryNode. These are used by higher level functions such as addAssignment, and do not do any argument promotion or conversion of any sort. - Two functions above are now used in RWTexture lvalue conversions. Also, other direction creations of unary or binary nodes now use them, e.g, addIndex. This cleans up some existing code. - removed handling of EOpVectorTimesScalar from promote() - removed comment from ParseHelper.cpp --- Test/baseResults/hlsl.struct.frag.out | 193 +++++++++--------- Test/hlsl.struct.frag | 4 +- glslang/MachineIndependent/Intermediate.cpp | 98 +++++---- glslang/MachineIndependent/ParseHelper.cpp | 1 - .../MachineIndependent/localintermediate.h | 7 + hlsl/hlslParseHelper.cpp | 23 ++- 6 files changed, 170 insertions(+), 156 deletions(-) diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index 7605543f..5fef9599 100755 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -14,22 +14,21 @@ gl_FragCoord origin is upper left 0:39 Compare Equal (temp bool) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) -0:40 i: direct index for structure (temp 4-component vector of float) -0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) -0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +0:40 move second child to first child (temp 4-component vector of float) +0:40 i: direct index for structure (temp 4-component vector of float) +0:40 's2' (global structure{temp 4-component vector of float i}) 0:40 Constant: -0:40 1 (const uint) -0:40 Constant: -0:40 0 (const int) -0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) +0:40 0 (const int) +0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:42 'input' (layout(location=0 ) in 4-component vector of float) 0:42 Branch: Return 0:? Linker Objects +0:? 's2' (global structure{temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a' (layout(location=1 ) smooth in 4-component vector of float) 0:? 'b' (layout(location=2 ) flat in bool) @@ -55,22 +54,21 @@ gl_FragCoord origin is upper left 0:39 Compare Equal (temp bool) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) -0:40 i: direct index for structure (temp 4-component vector of float) -0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i}) -0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +0:40 move second child to first child (temp 4-component vector of float) +0:40 i: direct index for structure (temp 4-component vector of float) +0:40 's2' (global structure{temp 4-component vector of float i}) 0:40 Constant: -0:40 1 (const uint) -0:40 Constant: -0:40 0 (const int) -0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) +0:40 0 (const int) +0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:42 'input' (layout(location=0 ) in 4-component vector of float) 0:42 Branch: Return 0:? Linker Objects +0:? 's2' (global structure{temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a' (layout(location=1 ) smooth in 4-component vector of float) 0:? 'b' (layout(location=2 ) flat in bool) @@ -83,103 +81,95 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 46 +// Id's are bound by 49 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 29 31 32 35 37 39 42 43 44 45 + EntryPoint Fragment 4 "PixelShaderFunction" 25 30 31 38 40 42 45 46 47 48 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 8 "FS" MemberName 8(FS) 0 "b3" Name 10 "s3" - Name 20 "myS" - MemberName 20(myS) 0 "b" - MemberName 20(myS) 1 "c" - MemberName 20(myS) 2 "a" - MemberName 20(myS) 3 "d" - Name 21 "" - MemberName 21 0 "i" - Name 22 "$Global" - MemberName 22($Global) 0 "s1" - MemberName 22($Global) 1 "s2" - MemberName 22($Global) 2 "ff5" - MemberName 22($Global) 3 "ff6" - Name 24 "" - Name 29 "ff4" - Name 31 "@entryPointOutput" - Name 32 "input" - Name 35 "a" - Name 37 "b" - Name 39 "c" - Name 42 "d" - Name 43 "ff1" - Name 44 "ff2" - Name 45 "ff3" - MemberDecorate 20(myS) 0 Offset 0 - MemberDecorate 20(myS) 1 Offset 4 - MemberDecorate 20(myS) 2 Offset 16 - MemberDecorate 20(myS) 3 Offset 32 - MemberDecorate 21 0 Offset 0 - MemberDecorate 22($Global) 0 Offset 0 - MemberDecorate 22($Global) 1 Offset 48 - MemberDecorate 22($Global) 2 Offset 1620 - MemberDecorate 22($Global) 3 Offset 1636 - Decorate 22($Global) Block - Decorate 24 DescriptorSet 0 - Decorate 29(ff4) Offset 4 - Decorate 29(ff4) Location 7 - Decorate 29(ff4) Binding 0 - Decorate 31(@entryPointOutput) Location 0 - Decorate 32(input) Location 0 - Decorate 35(a) Location 1 - Decorate 37(b) Flat - Decorate 37(b) Location 2 - Decorate 39(c) NoPerspective - Decorate 39(c) Centroid - Decorate 39(c) Location 3 - Decorate 42(d) Centroid - Decorate 42(d) Location 4 - Decorate 43(ff1) BuiltIn FrontFacing - Decorate 44(ff2) Offset 4 - Decorate 44(ff2) Location 5 - Decorate 45(ff3) Offset 4 - Decorate 45(ff3) Location 6 - Decorate 45(ff3) Binding 0 + Name 19 "" + MemberName 19 0 "i" + Name 21 "s2" + Name 25 "ff4" + Name 30 "@entryPointOutput" + Name 31 "input" + Name 34 "myS" + MemberName 34(myS) 0 "b" + MemberName 34(myS) 1 "c" + MemberName 34(myS) 2 "a" + MemberName 34(myS) 3 "d" + Name 35 "$Global" + MemberName 35($Global) 0 "s1" + MemberName 35($Global) 1 "ff5" + MemberName 35($Global) 2 "ff6" + Name 37 "" + Name 38 "a" + Name 40 "b" + Name 42 "c" + Name 45 "d" + Name 46 "ff1" + Name 47 "ff2" + Name 48 "ff3" + Decorate 25(ff4) Offset 4 + Decorate 25(ff4) Location 7 + Decorate 25(ff4) Binding 0 + Decorate 30(@entryPointOutput) Location 0 + Decorate 31(input) Location 0 + Decorate 35($Global) Block + Decorate 37 DescriptorSet 0 + Decorate 38(a) Location 1 + Decorate 40(b) Flat + Decorate 40(b) Location 2 + Decorate 42(c) NoPerspective + Decorate 42(c) Centroid + Decorate 42(c) Location 3 + Decorate 45(d) Centroid + Decorate 45(d) Location 4 + Decorate 46(ff1) BuiltIn FrontFacing + Decorate 47(ff2) Offset 4 + Decorate 47(ff2) Location 5 + Decorate 48(ff3) Offset 4 + Decorate 48(ff3) Location 6 + Decorate 48(ff3) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool 7: TypeVector 6(bool) 3 8(FS): TypeStruct 7(bvec3) 9: TypePointer Function 8(FS) - 17: TypeInt 32 0 - 18: TypeFloat 32 - 19: TypeVector 18(float) 4 - 20(myS): TypeStruct 17(int) 17(int) 19(fvec4) 19(fvec4) - 21: TypeStruct 19(fvec4) - 22($Global): TypeStruct 20(myS) 21(struct) 18(float) 18(float) - 23: TypePointer Uniform 22($Global) - 24: 23(ptr) Variable Uniform - 25: TypeInt 32 1 - 26: 25(int) Constant 1 - 27: 25(int) Constant 0 - 28: TypePointer Input 19(fvec4) - 29(ff4): 28(ptr) Variable Input - 30: TypePointer Output 19(fvec4) -31(@entryPointOutput): 30(ptr) Variable Output - 32(input): 28(ptr) Variable Input - 35(a): 28(ptr) Variable Input - 36: TypePointer Input 6(bool) - 37(b): 36(ptr) Variable Input - 38: TypePointer Input 18(float) - 39(c): 38(ptr) Variable Input - 40: TypeVector 18(float) 2 - 41: TypePointer Input 40(fvec2) - 42(d): 41(ptr) Variable Input - 43(ff1): 36(ptr) Variable Input - 44(ff2): 36(ptr) Variable Input - 45(ff3): 36(ptr) Variable Input + 17: TypeFloat 32 + 18: TypeVector 17(float) 4 + 19: TypeStruct 18(fvec4) + 20: TypePointer Private 19(struct) + 21(s2): 20(ptr) Variable Private + 22: TypeInt 32 1 + 23: 22(int) Constant 0 + 24: TypePointer Input 18(fvec4) + 25(ff4): 24(ptr) Variable Input + 27: TypePointer Private 18(fvec4) + 29: TypePointer Output 18(fvec4) +30(@entryPointOutput): 29(ptr) Variable Output + 31(input): 24(ptr) Variable Input + 34(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4) + 35($Global): TypeStruct 34(myS) 17(float) 17(float) + 36: TypePointer Uniform 35($Global) + 37: 36(ptr) Variable Uniform + 38(a): 24(ptr) Variable Input + 39: TypePointer Input 6(bool) + 40(b): 39(ptr) Variable Input + 41: TypePointer Input 17(float) + 42(c): 41(ptr) Variable Input + 43: TypeVector 17(float) 2 + 44: TypePointer Input 43(fvec2) + 45(d): 44(ptr) Variable Input + 46(ff1): 39(ptr) Variable Input + 47(ff2): 39(ptr) Variable Input + 48(ff3): 39(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 10(s3): 9(ptr) Variable Function @@ -189,7 +179,10 @@ gl_FragCoord origin is upper left 14: 7(bvec3) CompositeExtract 12 0 15: 7(bvec3) LogicalEqual 13 14 16: 6(bool) All 15 - 33: 19(fvec4) Load 32(input) - Store 31(@entryPointOutput) 33 + 26: 18(fvec4) Load 25(ff4) + 28: 27(ptr) AccessChain 21(s2) 23 + Store 28 26 + 32: 18(fvec4) Load 31(input) + Store 30(@entryPointOutput) 32 Return FunctionEnd diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag index 456c9ef7..e602c9ed 100644 --- a/Test/hlsl.struct.frag +++ b/Test/hlsl.struct.frag @@ -12,7 +12,7 @@ struct myS { myS s1; -struct { +static struct { float4 i; } s2; @@ -37,7 +37,7 @@ float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0 } s3; s3 == s3; - s2.i; s.ff4; // no assignments to uniforms, but preserve indirections. + s2.i = s.ff4; return input; } diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 81fdedba..8e80bbd2 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -136,13 +136,7 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn // Need a new node holding things together. Make // one and promote it to the right type. // - TIntermBinary* node = new TIntermBinary(op); - if (loc.line == 0) - loc = right->getLoc(); - node->setLoc(loc); - - node->setLeft(left); - node->setRight(right); + TIntermBinary* node = addBinaryNode(op, left, right, loc); if (! node->promote()) return 0; @@ -172,6 +166,56 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn return node; } +// +// Low level: add binary node (no promotions or other argument modifications) +// +TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) const +{ + // build the node + TIntermBinary* node = new TIntermBinary(op); + if (loc.line == 0) + loc = left->getLoc(); + node->setLoc(loc); + node->setLeft(left); + node->setRight(right); + + return node; +} + +// +// like non-type form, but sets node's type. +// +TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc, const TType& type) const +{ + TIntermBinary* node = addBinaryNode(op, left, right, loc); + node->setType(type); + return node; +} + +// +// Low level: add unary node (no promotions or other argument modifications) +// +TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc) const +{ + TIntermUnary* node = new TIntermUnary(op); + if (loc.line == 0) + loc = child->getLoc(); + node->setLoc(loc); + node->setOperand(child); + + return node; +} + +// +// like non-type form, but sets node's type. +// +TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc, const TType& type) const +{ + TIntermUnary* node = addUnaryNode(op, child, loc); + node->setType(type); + return node; +} + // // Connect two nodes through an assignment. // @@ -200,12 +244,7 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm right = addShapeConversion(op, left->getType(), right); // build the node - TIntermBinary* node = new TIntermBinary(op); - if (loc.line == 0) - loc = left->getLoc(); - node->setLoc(loc); - node->setLeft(left); - node->setRight(right); + TIntermBinary* node = addBinaryNode(op, left, right, loc); if (! node->promote()) return nullptr; @@ -224,16 +263,8 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm // TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc loc) { - TIntermBinary* node = new TIntermBinary(op); - if (loc.line == 0) - loc = index->getLoc(); - node->setLoc(loc); - node->setLeft(base); - node->setRight(index); - // caller should set the type - - return node; + return addBinaryNode(op, base, index, loc); } // @@ -316,11 +347,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo // // Make a new node for the operator. // - TIntermUnary* node = new TIntermUnary(op); - if (loc.line == 0) - loc = child->getLoc(); - node->setLoc(loc); - node->setOperand(child); + TIntermUnary* node = addUnaryNode(op, child, loc); if (! node->promote()) return 0; @@ -357,12 +384,7 @@ TIntermTyped* TIntermediate::addBuiltInFunctionCall(const TSourceLoc& loc, TOper return folded; } - TIntermUnary* node = new TIntermUnary(op); - node->setLoc(child->getLoc()); - node->setOperand(child); - node->setType(returnType); - - return node; + return addUnaryNode(op, child, child->getLoc(), returnType); } else { // setAggregateOperater() calls fold() for constant folding TIntermTyped* node = setAggregateOperator(childNode, op, returnType, loc); @@ -725,9 +747,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt } TType newType(promoteTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows()); - newNode = new TIntermUnary(newOp, newType); - newNode->setLoc(node->getLoc()); - newNode->setOperand(node); + newNode = addUnaryNode(newOp, node, node->getLoc(), newType); // TODO: it seems that some unary folding operations should occur here, but are not @@ -2045,11 +2065,6 @@ bool TIntermBinary::promote() } break; - case EOpVectorTimesScalarAssign: - if (!left->isVector() || !right->isScalar()) - return false; - break; - default: return false; } @@ -2070,7 +2085,6 @@ bool TIntermBinary::promote() case EOpExclusiveOrAssign: case EOpLeftShiftAssign: case EOpRightShiftAssign: - case EOpVectorTimesScalarAssign: if (getType() != left->getType()) return false; break; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index de1e8ca7..3187ffcc 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1966,7 +1966,6 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt if (TParseContextBase::lValueErrorCheck(loc, op, node)) return true; - // GLSL specific const char* symbol = nullptr; TIntermSymbol* symNode = node->getAsSymbolNode(); if (symNode != nullptr) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index acfafb1e..348b78e0 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -236,6 +236,13 @@ public: TIntermBranch* addBranch(TOperator, TIntermTyped*, const TSourceLoc&); TIntermTyped* addSwizzle(TVectorFields&, const TSourceLoc&); + // Low level functions to add nodes (no conversions or other higher level transformations) + // If a type is provided, the node's type will be set to it. + TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc) const; + TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc, const TType&) const; + TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc) const; + TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc, const TType&) const; + // Constant folding (in Constant.cpp) TIntermTyped* fold(TIntermAggregate* aggrNode); TIntermTyped* foldConstructor(TIntermAggregate* aggrNode); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 8d841592..3137bedb 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -228,9 +228,9 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* }; // Helper to create an assign. - const auto makeAssign = [&](TOperator assignOp, TIntermTyped* lhs, TIntermTyped* rhs) { + const auto makeBinary = [&](TOperator op, TIntermTyped* lhs, TIntermTyped* rhs) { sequence = intermediate.growAggregate(sequence, - intermediate.addAssign(assignOp, lhs, rhs, loc), + intermediate.addBinaryNode(op, lhs, rhs, loc, lhs->getType()), loc); }; @@ -246,9 +246,10 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* }; // Helper to add unary op - const auto addUnary = [&](TOperator op, TIntermSymbol* rhsTmp) { + const auto makeUnary = [&](TOperator op, TIntermSymbol* rhsTmp) { sequence = intermediate.growAggregate(sequence, - intermediate.addUnaryMath(op, intermediate.addSymbol(*rhsTmp), loc), + intermediate.addUnaryNode(op, intermediate.addSymbol(*rhsTmp), loc, + rhsTmp->getType()), loc); }; @@ -322,12 +323,12 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* if (isModifyOp) { // We have to make a temp var for the coordinate, to avoid evaluating it twice. coordTmp = addTmpVar("coordTemp", coord->getType()); - makeAssign(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) } // rhsTmp op= rhs. - makeAssign(assignOp, intermediate.addSymbol(*rhsTmp), rhs); + makeBinary(assignOp, intermediate.addSymbol(*rhsTmp), rhs); } makeStore(object, coordTmp, rhsTmp); // add a store @@ -357,9 +358,9 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* TIntermSymbol* rhsTmp = addTmpVar("storeTemp", objDerefType); TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType()); - makeAssign(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) - addUnary(assignOp, rhsTmp); // op rhsTmp + makeUnary(assignOp, rhsTmp); // op rhsTmp makeStore(object, coordTmp, rhsTmp); // OpImageStore(object, coordTmp, rhsTmp) return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence } @@ -379,10 +380,10 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* TIntermSymbol* rhsTmp2 = addTmpVar("storeTempPost", objDerefType); TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType()); - makeAssign(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] makeLoad(rhsTmp1, object, coordTmp, objDerefType); // rhsTmp1 = OpImageLoad(object, coordTmp) - makeAssign(EOpAssign, rhsTmp2, rhsTmp1); // rhsTmp2 = rhsTmp1 - addUnary(assignOp, rhsTmp2); // rhsTmp op + makeBinary(EOpAssign, rhsTmp2, rhsTmp1); // rhsTmp2 = rhsTmp1 + makeUnary(assignOp, rhsTmp2); // rhsTmp op makeStore(object, coordTmp, rhsTmp2); // OpImageStore(object, coordTmp, rhsTmp2) return finishSequence(rhsTmp1, objDerefType); // return rhsTmp from sequence } From 54a28de4a97322fc5c9cc403e870f5f9b8df83ef Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:23:39 +0200 Subject: [PATCH 051/130] Give all complex lambdas an explicit return type --- glslang/MachineIndependent/ParseContextBase.cpp | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 4 ++-- hlsl/hlslParseHelper.cpp | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index fe2b8e6b..e46684fe 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -253,7 +253,7 @@ const TFunction* TParseContextBase::selectFunction( return viableCandidates.front(); // 4. find best... - auto betterParam = [&call, &better](const TFunction& can1, const TFunction& can2){ + auto betterParam = [&call, &better](const TFunction& can1, const TFunction& can2) -> bool { // is call -> can2 better than call -> can1 for any parameter bool hasBetterParam = false; for (int param = 0; param < call.getParamCount(); ++param) { diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 949ba007..2dfb9c72 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4907,7 +4907,7 @@ const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFu symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); // can 'from' convert to 'to'? - const auto convertible = [this](const TType& from, const TType& to) { + const auto convertible = [this](const TType& from, const TType& to) -> bool { if (from == to) return true; if (from.isArray() || to.isArray() || ! from.sameElementShape(to)) @@ -4918,7 +4918,7 @@ const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFu // Is 'to2' a better conversion than 'to1'? // Ties should not be considered as better. // Assumes 'convertible' already said true. - const auto better = [](const TType& from, const TType& to1, const TType& to2) { + const auto better = [](const TType& from, const TType& to1, const TType& to2) -> bool { // 1. exact match if (from == to2) return from != to1; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 4eda44d7..ca23ca39 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1001,7 +1001,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op const auto getMember = [&](bool flatten, TIntermTyped* node, const TVector& memberVariables, int member, - TOperator op, const TType& memberType) { + TOperator op, const TType& memberType) -> TIntermTyped * { TIntermTyped* subTree; if (flatten) subTree = intermediate.addSymbol(*memberVariables[member]); @@ -2693,7 +2693,7 @@ void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifi // space unsigned int setNumber; - const auto crackSpace = [&]() { + const auto crackSpace = [&]() -> bool { const int spaceLen = 5; if (spaceDesc->size() < spaceLen + 1) return false; @@ -3889,7 +3889,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); // can 'from' convert to 'to'? - const auto convertible = [this](const TType& from, const TType& to) { + const auto convertible = [this](const TType& from, const TType& to) -> bool { if (from == to) return true; @@ -3916,7 +3916,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu // Is 'to2' a better conversion than 'to1'? // Ties should not be considered as better. // Assumes 'convertible' already said true. - const auto better = [](const TType& from, const TType& to1, const TType& to2) { + const auto better = [](const TType& from, const TType& to1, const TType& to2) -> bool { // exact match is always better than mismatch if (from == to2) return from != to1; @@ -3943,7 +3943,7 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu // - 32 vs. 64 bit (or width in general) // - bool vs. non bool // - signed vs. not signed - const auto linearize = [](const TBasicType& basicType) { + const auto linearize = [](const TBasicType& basicType) -> int { switch (basicType) { case EbtBool: return 1; case EbtInt: return 10; From 75c3bf68e907d0f6d4ca279724e193addfcdb5f3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:24:23 +0200 Subject: [PATCH 052/130] Add strtoull wrapper for VS2010, pointing to MS implementation --- glslang/Include/Common.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index 636645e7..e082356c 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -68,6 +68,10 @@ 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); From ff160f15ef26c3727bc53e240454ee32061232e3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:24:42 +0200 Subject: [PATCH 053/130] Add #include for std::uint32_t usage --- SPIRV/SPVRemapper.h | 1 + 1 file changed, 1 insertion(+) diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index 43ec1ae7..b3c686aa 100755 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -75,6 +75,7 @@ public: #if !defined (use_cpp11) #include +#include namespace spv { class spirvbin_t : public spirvbin_base_t From 31d5d488125f784d0c7a64fb0af6e66e60033935 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:25:52 +0200 Subject: [PATCH 054/130] Change constructor to use ()s instead of {}s --- StandAlone/StandAlone.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 5d30ac2b..cc38f2c8 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -666,11 +666,11 @@ void CompileAndLinkShaderFiles() // they are all getting linked together.) glslang::TWorkItem* workItem; while (Worklist.remove(workItem)) { - ShaderCompUnit compUnit = { + ShaderCompUnit compUnit( FindLanguage(workItem->name), workItem->name, ReadFileData(workItem->name.c_str()) - }; + ); if (! compUnit.text) { usage(); From 033d3ef22ce3b53545098a1904db580d61d41367 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:28:20 +0200 Subject: [PATCH 055/130] Change enum class to plain enum --- SPIRV/SpvBuilder.cpp | 2 +- SPIRV/hex_float.h | 25 ++++++++++++------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index c19f3683..4703edc3 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -797,7 +797,7 @@ Id Builder::makeFloat16Constant(float f16, bool specConstant) spvutils::HexFloat> fVal(f16); spvutils::HexFloat> f16Val(0); - fVal.castTo(f16Val, spvutils::round_direction::kToZero); + fVal.castTo(f16Val, spvutils::kRoundToZero); unsigned value = f16Val.value().getAsFloat().get_value(); diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h index ac7e0027..ea403a77 100644 --- a/SPIRV/hex_float.h +++ b/SPIRV/hex_float.h @@ -226,12 +226,11 @@ struct HexFloatTraits> { static const uint_type exponent_bias = 15; }; -enum class round_direction { - kToZero, - kToNearestEven, - kToPositiveInfinity, - kToNegativeInfinity, - max = kToNegativeInfinity +enum round_direction { + kRoundToZero, + kRoundToNearestEven, + kRoundToPositiveInfinity, + kRoundToNegativeInfinity }; // Template class that houses a floating pointer number. @@ -520,15 +519,15 @@ class HexFloat { // We actually have to narrow the significand here, so we have to follow the // rounding rules. switch (dir) { - case round_direction::kToZero: + case kRoundToZero: break; - case round_direction::kToPositiveInfinity: + case kRoundToPositiveInfinity: round_away_from_zero = !isNegative(); break; - case round_direction::kToNegativeInfinity: + case kRoundToNegativeInfinity: round_away_from_zero = isNegative(); break; - case round_direction::kToNearestEven: + case kRoundToNearestEven: // Have to round down, round bit is 0 if ((first_rounded_bit & significand) == 0) { break; @@ -623,8 +622,8 @@ class HexFloat { } bool round_underflow_up = - isNegative() ? round_dir == round_direction::kToNegativeInfinity - : round_dir == round_direction::kToPositiveInfinity; + isNegative() ? round_dir == kRoundToNegativeInfinity + : round_dir == kRoundToPositiveInfinity; using other_int_type = typename other_T::int_type; // setFromSignUnbiasedExponentAndNormalizedSignificand will // zero out any underflowing value (but retain the sign). @@ -812,7 +811,7 @@ ParseNormalFloat, HexFloatTraits>>( // Then convert to 16-bit float, saturating at infinities, and // rounding toward zero. - float_val.castTo(value, round_direction::kToZero); + float_val.castTo(value, kRoundToZero); // Overflow on 16-bit behaves the same as for 32- and 64-bit: set the // fail bit and set the lowest or highest value. From 1a65fc269c4b50f01400e64140b96377d6b11d95 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:28:54 +0200 Subject: [PATCH 056/130] Add std::isnan and std::isinf wrappers for VS2010 that doesn't have them --- SPIRV/hex_float.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h index ea403a77..24a26079 100644 --- a/SPIRV/hex_float.h +++ b/SPIRV/hex_float.h @@ -23,6 +23,19 @@ #include #include +#if defined(_MSC_VER) && _MSC_VER < 1700 +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 a227d27227e003007fc67b40e9f3c17598dc2846 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:30:27 +0200 Subject: [PATCH 057/130] Explicitly implement default constructors --- SPIRV/hex_float.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h index 24a26079..3849eeff 100644 --- a/SPIRV/hex_float.h +++ b/SPIRV/hex_float.h @@ -43,7 +43,7 @@ namespace spvutils { class Float16 { public: Float16(uint16_t v) : val(v) {} - Float16() = default; + Float16() {} static bool isNan(const Float16& val) { return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) != 0); } @@ -118,7 +118,7 @@ class FloatProxy { // Since this is to act similar to the normal floats, // do not initialize the data by default. - FloatProxy() = default; + FloatProxy() {} // Intentionally non-explicit. This is a proxy type so // implicit conversions allow us to use it more transparently. From 7cac9e7245c6ce5cdc36f7a9473b994d239a2094 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:31:15 +0200 Subject: [PATCH 058/130] Change "using x = y;" to "typedef y x;" statements --- SPIRV/hex_float.h | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h index 3849eeff..4a26ad8c 100644 --- a/SPIRV/hex_float.h +++ b/SPIRV/hex_float.h @@ -69,12 +69,12 @@ class Float16 { // a value is Nan. template struct FloatProxyTraits { - using uint_type = void; + typedef void uint_type; }; template <> struct FloatProxyTraits { - using uint_type = uint32_t; + typedef uint32_t uint_type; static bool isNan(float f) { return std::isnan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(float f) { return std::isinf(f); } @@ -86,7 +86,7 @@ struct FloatProxyTraits { template <> struct FloatProxyTraits { - using uint_type = uint64_t; + typedef uint64_t uint_type; static bool isNan(double f) { return std::isnan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(double f) { return std::isinf(f); } @@ -98,7 +98,7 @@ struct FloatProxyTraits { template <> struct FloatProxyTraits { - using uint_type = uint16_t; + typedef uint16_t uint_type; static bool isNan(Float16 f) { return Float16::isNan(f); } // Returns true if the given value is any kind of infinity. static bool isInfinity(Float16 f) { return Float16::isInfinity(f); } @@ -114,7 +114,7 @@ struct FloatProxyTraits { template class FloatProxy { public: - using uint_type = typename FloatProxyTraits::uint_type; + typedef typename FloatProxyTraits::uint_type uint_type; // Since this is to act similar to the normal floats, // do not initialize the data by default. @@ -177,13 +177,13 @@ std::istream& operator>>(std::istream& is, FloatProxy& value) { template struct HexFloatTraits { // Integer type that can store this hex-float. - using uint_type = void; + typedef void uint_type; // Signed integer type that can store this hex-float. - using int_type = void; + typedef void int_type; // The numerical type that this HexFloat represents. - using underlying_type = void; + typedef void underlying_type; // The type needed to construct the underlying type. - using native_type = void; + typedef void native_type; // The number of bits that are actually relevant in the uint_type. // This allows us to deal with, for example, 24-bit values in a 32-bit // integer. @@ -201,10 +201,10 @@ struct HexFloatTraits { // 1 sign bit, 8 exponent bits, 23 fractional bits. template <> struct HexFloatTraits> { - using uint_type = uint32_t; - using int_type = int32_t; - using underlying_type = FloatProxy; - using native_type = float; + typedef uint32_t uint_type; + typedef int32_t int_type; + typedef FloatProxy underlying_type; + typedef float native_type; static const uint_type num_used_bits = 32; static const uint_type num_exponent_bits = 8; static const uint_type num_fraction_bits = 23; @@ -215,10 +215,10 @@ struct HexFloatTraits> { // 1 sign bit, 11 exponent bits, 52 fractional bits. template <> struct HexFloatTraits> { - using uint_type = uint64_t; - using int_type = int64_t; - using underlying_type = FloatProxy; - using native_type = double; + typedef uint64_t uint_type; + typedef int64_t int_type; + typedef FloatProxy underlying_type; + typedef double native_type; static const uint_type num_used_bits = 64; static const uint_type num_exponent_bits = 11; static const uint_type num_fraction_bits = 52; @@ -229,10 +229,10 @@ struct HexFloatTraits> { // 1 sign bit, 5 exponent bits, 10 fractional bits. template <> struct HexFloatTraits> { - using uint_type = uint16_t; - using int_type = int16_t; - using underlying_type = uint16_t; - using native_type = uint16_t; + typedef uint16_t uint_type; + typedef int16_t int_type; + typedef uint16_t underlying_type; + typedef uint16_t native_type; static const uint_type num_used_bits = 16; static const uint_type num_exponent_bits = 5; static const uint_type num_fraction_bits = 10; @@ -252,10 +252,10 @@ enum round_direction { template > class HexFloat { public: - using uint_type = typename Traits::uint_type; - using int_type = typename Traits::int_type; - using underlying_type = typename Traits::underlying_type; - using native_type = typename Traits::native_type; + typedef typename Traits::uint_type uint_type; + typedef typename Traits::int_type int_type; + typedef typename Traits::underlying_type underlying_type; + typedef typename Traits::native_type native_type; explicit HexFloat(T f) : value_(f) {} @@ -491,7 +491,7 @@ class HexFloat { template typename other_T::uint_type getRoundedNormalizedSignificand( round_direction dir, bool* carry_bit) { - using other_uint_type = typename other_T::uint_type; + typedef typename other_T::uint_type other_uint_type; static const int_type num_throwaway_bits = static_cast(num_fraction_bits) - static_cast(other_T::num_fraction_bits); @@ -637,7 +637,7 @@ class HexFloat { bool round_underflow_up = isNegative() ? round_dir == kRoundToNegativeInfinity : round_dir == kRoundToPositiveInfinity; - using other_int_type = typename other_T::int_type; + typedef typename other_T::int_type other_int_type; // setFromSignUnbiasedExponentAndNormalizedSignificand will // zero out any underflowing value (but retain the sign). other.setFromSignUnbiasedExponentAndNormalizedSignificand( @@ -676,9 +676,9 @@ inline uint8_t get_nibble_from_character(int character) { // Outputs the given HexFloat to the stream. template std::ostream& operator<<(std::ostream& os, const HexFloat& value) { - using HF = HexFloat; - using uint_type = typename HF::uint_type; - using int_type = typename HF::int_type; + typedef HexFloat HF; + typedef typename HF::uint_type uint_type; + typedef typename HF::int_type int_type; static_assert(HF::num_used_bits != 0, "num_used_bits must be non-zero for a valid float"); From cabba60abfc8a6d8275d939e41c0cb59e9afd694 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:32:37 +0200 Subject: [PATCH 059/130] Change {} constructor brackets to () --- SPIRV/hex_float.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h index 4a26ad8c..a051b2f5 100644 --- a/SPIRV/hex_float.h +++ b/SPIRV/hex_float.h @@ -757,7 +757,7 @@ inline bool RejectParseDueToLeadingSign(std::istream& is, bool negate_value, if (next_char == '-' || next_char == '+') { // Fail the parse. Emulate standard behaviour by setting the value to // the zero value, and set the fail bit on the stream. - value = HexFloat(typename HexFloat::uint_type{0}); + value = HexFloat(typename HexFloat::uint_type(0)); is.setstate(std::ios_base::failbit); return true; } @@ -789,7 +789,7 @@ inline std::istream& ParseNormalFloat(std::istream& is, bool negate_value, value.set_value(val); // In the failure case, map -0.0 to 0.0. if (is.fail() && value.getUnsignedBits() == 0u) { - value = HexFloat(typename HexFloat::uint_type{0}); + value = HexFloat(typename HexFloat::uint_type(0)); } if (val.isInfinity()) { // Fail the parse. Emulate standard behaviour by setting the value to From 021dbb4cd41d66ec1c36f35139728e4f84b64333 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 19:39:24 +0200 Subject: [PATCH 060/130] Change negatable_left_shift and negatable_right_shift to inline funcs * This avoids an internal compile error on VS2010 possibly related to std::enable_if use. --- SPIRV/hex_float.h | 52 +++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h index a051b2f5..31b9f9ed 100644 --- a/SPIRV/hex_float.h +++ b/SPIRV/hex_float.h @@ -456,33 +456,23 @@ class HexFloat { // constant_number < 0? 0: constant_number // These convert the negative left-shifts into right shifts. - template - struct negatable_left_shift { - static uint_type val(uint_type val) { - return static_cast(val >> -N); - } - }; + template + uint_type negatable_left_shift(int_type N, uint_type val) + { + if(N >= 0) + return val << N; - template - struct negatable_left_shift= 0>::type> { - static uint_type val(uint_type val) { - return static_cast(val << N); - } - }; + return val >> -N; + } - template - struct negatable_right_shift { - static uint_type val(uint_type val) { - return static_cast(val << -N); - } - }; + template + uint_type negatable_right_shift(int_type N, uint_type val) + { + if(N >= 0) + return val >> N; - template - struct negatable_right_shift= 0>::type> { - static uint_type val(uint_type val) { - return static_cast(val >> N); - } - }; + return val << -N; + } // Returns the significand, rounded to fit in a significand in // other_T. This is shifted so that the most significant @@ -499,11 +489,11 @@ class HexFloat { static const uint_type last_significant_bit = (num_throwaway_bits < 0) ? 0 - : negatable_left_shift::val(1u); + : negatable_left_shift(num_throwaway_bits, 1u); static const uint_type first_rounded_bit = (num_throwaway_bits < 1) ? 0 - : negatable_left_shift::val(1u); + : negatable_left_shift(num_throwaway_bits - 1, 1u); static const uint_type throwaway_mask_bits = num_throwaway_bits > 0 ? num_throwaway_bits : 0; @@ -525,7 +515,7 @@ class HexFloat { // do. if ((significand & throwaway_mask) == 0) { return static_cast( - negatable_right_shift::val(significand)); + negatable_right_shift(num_throwaway_bits, significand)); } bool round_away_from_zero = false; @@ -562,11 +552,11 @@ class HexFloat { if (round_away_from_zero) { return static_cast( - negatable_right_shift::val(incrementSignificand( + negatable_right_shift(num_throwaway_bits, incrementSignificand( significand, last_significant_bit, carry_bit))); } else { return static_cast( - negatable_right_shift::val(significand)); + negatable_right_shift(num_throwaway_bits, significand)); } } @@ -620,9 +610,9 @@ class HexFloat { if (is_nan) { typename other_T::uint_type shifted_significand; shifted_significand = static_cast( - negatable_left_shift< + negatable_left_shift( static_cast(other_T::num_fraction_bits) - - static_cast(num_fraction_bits)>::val(significand)); + static_cast(num_fraction_bits), significand)); // We are some sort of Nan. We try to keep the bit-pattern of the Nan // as close as possible. If we had to shift off bits so we are 0, then we From 486d9e44e055c442770dc536a4029bd7e1360dc4 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Oct 2016 20:05:13 +0200 Subject: [PATCH 061/130] Update HexFloat tests to use non-enum class enum values --- gtests/HexFloat.cpp | 149 ++++++++++++++++++++++---------------------- 1 file changed, 74 insertions(+), 75 deletions(-) diff --git a/gtests/HexFloat.cpp b/gtests/HexFloat.cpp index 248513c4..ddbee1f4 100644 --- a/gtests/HexFloat.cpp +++ b/gtests/HexFloat.cpp @@ -690,10 +690,10 @@ TEST(HexFloatOperationTests, NonRounding) { bool carry_bit = false; spvutils::round_direction rounding[] = { - spvutils::round_direction::kToZero, - spvutils::round_direction::kToNearestEven, - spvutils::round_direction::kToPositiveInfinity, - spvutils::round_direction::kToNegativeInfinity}; + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; // Everything fits, so this should be straight-forward for (spvutils::round_direction round : rounding) { @@ -725,7 +725,6 @@ TEST(HexFloatOperationTests, NonRounding) { } } -using RD = spvutils::round_direction; struct RoundSignificandCase { float source_float; std::pair expected_results; @@ -751,49 +750,49 @@ TEST_P(HexFloatRoundTest, RoundDownToFP16) { INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatRoundTest, ::testing::ValuesIn(std::vector( { - {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToZero}, - {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToNearestEven}, - {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToPositiveInfinity}, - {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToNegativeInfinity}, - {float_fractions({0, 1}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToZero}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNearestEven}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, - {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, - {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, - {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, - {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToNearestEven}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNearestEven}, - {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToZero}, - {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), RD::kToPositiveInfinity}, - {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNegativeInfinity}, - {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), RD::kToNearestEven}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToNearestEven}, - {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, - {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, - {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, - {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, - {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, - {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToPositiveInfinity}, - {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNegativeInfinity}, - {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToPositiveInfinity}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, - {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), RD::kToZero}, - {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, - {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, - {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, // Carries - {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), RD::kToZero}, - {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), RD::kToPositiveInfinity}, - {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), RD::kToNegativeInfinity}, - {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), RD::kToNearestEven}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToNearestEven}, // Cases where original number was denorm. Note: this should have no effect // the number is pre-normalized. - {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -128)), std::make_pair(half_bits_set({0}), false), RD::kToZero}, - {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -129)), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity}, - {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -131)), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity}, - {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -130)), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -128)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -129)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -131)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -130)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, })),); // clang-format on @@ -810,10 +809,10 @@ TEST_P(HexFloatRoundUpSignificandTest, Widening) { bool carry_bit = false; spvutils::round_direction rounding[] = { - spvutils::round_direction::kToZero, - spvutils::round_direction::kToNearestEven, - spvutils::round_direction::kToPositiveInfinity, - spvutils::round_direction::kToNegativeInfinity}; + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; // Everything fits, so everything should just be bit-shifts. for (spvutils::round_direction round : rounding) { @@ -852,10 +851,10 @@ std::string get_round_text(spvutils::round_direction direction) { return #round_direction switch (direction) { - CASE(spvutils::round_direction::kToZero); - CASE(spvutils::round_direction::kToPositiveInfinity); - CASE(spvutils::round_direction::kToNegativeInfinity); - CASE(spvutils::round_direction::kToNearestEven); + CASE(spvutils::kRoundToZero); + CASE(spvutils::kRoundToPositiveInfinity); + CASE(spvutils::kRoundToNegativeInfinity); + CASE(spvutils::kRoundToNearestEven); } #undef CASE return ""; @@ -884,35 +883,35 @@ INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatFP32To16Tests, ::testing::ValuesIn(std::vector( { // Exactly representable as half. - {0.f, 0x0, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {-0.f, 0x8000, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {1.0f, 0x3C00, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {-1.0f, 0xBC00, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {0.f, 0x0, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-0.f, 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {1.0f, 0x3C00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-1.0f, 0xBC00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, - {float_fractions({0, 1, 10}) , 0x3E01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {-float_fractions({0, 1, 10}) , 0xBE01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(ldexp(float_fractions({0, 1, 10}), 3)), 0x4A01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(-ldexp(float_fractions({0, 1, 10}), 3)), 0xCA01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {float_fractions({0, 1, 10}) , 0x3E01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-float_fractions({0, 1, 10}) , 0xBE01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(float_fractions({0, 1, 10}), 3)), 0x4A01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(float_fractions({0, 1, 10}), 3)), 0xCA01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Underflow - {static_cast(ldexp(1.0f, -25)), 0x0, {RD::kToZero, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(ldexp(1.0f, -25)), 0x1, {RD::kToPositiveInfinity}}, - {static_cast(-ldexp(1.0f, -25)), 0x8000, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNearestEven}}, - {static_cast(-ldexp(1.0f, -25)), 0x8001, {RD::kToNegativeInfinity}}, - {static_cast(ldexp(1.0f, -24)), 0x1, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(ldexp(1.0f, -25)), 0x0, {spvutils::kRoundToZero, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(1.0f, -25)), 0x1, {spvutils::kRoundToPositiveInfinity}}, + {static_cast(-ldexp(1.0f, -25)), 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.0f, -25)), 0x8001, {spvutils::kRoundToNegativeInfinity}}, + {static_cast(ldexp(1.0f, -24)), 0x1, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Overflow - {static_cast(ldexp(1.0f, 16)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(ldexp(1.0f, 18)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(ldexp(1.3f, 16)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(-ldexp(1.0f, 16)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(-ldexp(1.0f, 18)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {static_cast(-ldexp(1.3f, 16)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {static_cast(ldexp(1.0f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(1.0f, 18)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(1.3f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.0f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.0f, 18)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.3f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Transfer of Infinities - {std::numeric_limits::infinity(), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, - {-std::numeric_limits::infinity(), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}}, + {std::numeric_limits::infinity(), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-std::numeric_limits::infinity(), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, // Nans are below because we cannot test for equality. })),); @@ -929,10 +928,10 @@ TEST_P(HexFloatFP16To32Tests, WideningCasts) { HF16 f(GetParam().source_half); spvutils::round_direction rounding[] = { - spvutils::round_direction::kToZero, - spvutils::round_direction::kToNearestEven, - spvutils::round_direction::kToPositiveInfinity, - spvutils::round_direction::kToNegativeInfinity}; + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; // Everything fits, so everything should just be bit-shifts. for (spvutils::round_direction round : rounding) { @@ -972,10 +971,10 @@ TEST(HexFloatOperationTests, NanTests) { using HF = spvutils::HexFloat>; using HF16 = spvutils::HexFloat>; spvutils::round_direction rounding[] = { - spvutils::round_direction::kToZero, - spvutils::round_direction::kToNearestEven, - spvutils::round_direction::kToPositiveInfinity, - spvutils::round_direction::kToNegativeInfinity}; + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; // Everything fits, so everything should just be bit-shifts. for (spvutils::round_direction round : rounding) { From 7b211a370b69676db64cca7be9391281f928b4d6 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 13 Oct 2016 12:26:18 -0600 Subject: [PATCH 062/130] HLSL: allow multi-dimensional arrays All the underpinnings are there; this just parses multiple array dimensions and passes them through to the existing mechanisms. Also, minor comment fixes, and add a new test for multi-dim arrays. --- Test/baseResults/hlsl.array.multidim.frag.out | 210 ++++++++++++++++++ Test/hlsl.array.implicit-size.frag | 8 +- Test/hlsl.array.multidim.frag | 20 ++ gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 47 ++-- 5 files changed, 261 insertions(+), 25 deletions(-) create mode 100644 Test/baseResults/hlsl.array.multidim.frag.out create mode 100644 Test/hlsl.array.multidim.frag diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out new file mode 100644 index 00000000..a2df1a8d --- /dev/null +++ b/Test/baseResults/hlsl.array.multidim.frag.out @@ -0,0 +1,210 @@ +hlsl.array.multidim.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:10 Function Parameters: +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 direct index (temp 4-component vector of float) +0:14 direct index (temp 3-element array of 4-component vector of float) +0:14 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:14 Constant: +0:14 1 (const int) +0:14 Constant: +0:14 2 (const int) +0:14 Construct vec4 (temp 4-component vector of float) +0:14 direct index (layout(offset=0 ) temp float) +0:14 direct index (layout(offset=0 ) temp 3-element array of float) +0:14 direct index (layout(offset=0 ) temp 4-element array of 3-element array of float) +0:14 float_array: direct index for structure (layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) +0:14 Constant: +0:14 0 (const uint) +0:14 Constant: +0:14 2 (const int) +0:14 Constant: +0:14 3 (const int) +0:14 Constant: +0:14 1 (const int) +0:15 move second child to first child (temp 3-element array of 4-component vector of float) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_2' (temp 5-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 1 (const int) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:18 move second child to first child (temp 4-component vector of float) +0:18 Color: direct index for structure (temp 4-component vector of float) +0:18 'psout' (temp structure{temp 4-component vector of float Color}) +0:18 Constant: +0:18 0 (const int) +0:18 direct index (temp 4-component vector of float) +0:18 direct index (temp 3-element array of 4-component vector of float) +0:18 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 2 (const int) +0:19 Sequence +0:19 Sequence +0:19 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:19 Color: direct index for structure (temp 4-component vector of float) +0:19 'psout' (temp structure{temp 4-component vector of float Color}) +0:19 Constant: +0:19 0 (const int) +0:19 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:10 Function Parameters: +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 direct index (temp 4-component vector of float) +0:14 direct index (temp 3-element array of 4-component vector of float) +0:14 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:14 Constant: +0:14 1 (const int) +0:14 Constant: +0:14 2 (const int) +0:14 Construct vec4 (temp 4-component vector of float) +0:14 direct index (layout(offset=0 ) temp float) +0:14 direct index (layout(offset=0 ) temp 3-element array of float) +0:14 direct index (layout(offset=0 ) temp 4-element array of 3-element array of float) +0:14 float_array: direct index for structure (layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) +0:14 Constant: +0:14 0 (const uint) +0:14 Constant: +0:14 2 (const int) +0:14 Constant: +0:14 3 (const int) +0:14 Constant: +0:14 1 (const int) +0:15 move second child to first child (temp 3-element array of 4-component vector of float) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_2' (temp 5-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 1 (const int) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:18 move second child to first child (temp 4-component vector of float) +0:18 Color: direct index for structure (temp 4-component vector of float) +0:18 'psout' (temp structure{temp 4-component vector of float Color}) +0:18 Constant: +0:18 0 (const int) +0:18 direct index (temp 4-component vector of float) +0:18 direct index (temp 3-element array of 4-component vector of float) +0:18 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 2 (const int) +0:19 Sequence +0:19 Sequence +0:19 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:19 Color: direct index for structure (temp 4-component vector of float) +0:19 'psout' (temp structure{temp 4-component vector of float Color}) +0:19 Constant: +0:19 0 (const int) +0:19 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 52 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 48 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 14 "float4_array_1" + Name 23 "$Global" + MemberName 23($Global) 0 "float_array" + Name 25 "" + Name 36 "float4_array_2" + Name 41 "PS_OUTPUT" + MemberName 41(PS_OUTPUT) 0 "Color" + Name 43 "psout" + Name 48 "Color" + Decorate 18 ArrayStride 16 + Decorate 20 ArrayStride 48 + Decorate 22 ArrayStride 192 + MemberDecorate 23($Global) 0 Offset 0 + Decorate 23($Global) Block + Decorate 25 DescriptorSet 0 + Decorate 48(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 3 + 10: TypeArray 7(fvec4) 9 + 11: 8(int) Constant 2 + 12: TypeArray 10 11 + 13: TypePointer Function 12 + 15: TypeInt 32 1 + 16: 15(int) Constant 1 + 17: 15(int) Constant 2 + 18: TypeArray 6(float) 9 + 19: 8(int) Constant 4 + 20: TypeArray 18 19 + 21: 8(int) Constant 5 + 22: TypeArray 20 21 + 23($Global): TypeStruct 22 + 24: TypePointer Uniform 23($Global) + 25: 24(ptr) Variable Uniform + 26: 15(int) Constant 0 + 27: 15(int) Constant 3 + 28: TypePointer Uniform 6(float) + 32: TypePointer Function 7(fvec4) + 34: TypeArray 10 21 + 35: TypePointer Function 34 + 37: TypePointer Function 10 + 41(PS_OUTPUT): TypeStruct 7(fvec4) + 42: TypePointer Function 41(PS_OUTPUT) + 47: TypePointer Output 7(fvec4) + 48(Color): 47(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label +14(float4_array_1): 13(ptr) Variable Function +36(float4_array_2): 35(ptr) Variable Function + 43(psout): 42(ptr) Variable Function + 29: 28(ptr) AccessChain 25 26 17 27 16 + 30: 6(float) Load 29 + 31: 7(fvec4) CompositeConstruct 30 30 30 30 + 33: 32(ptr) AccessChain 14(float4_array_1) 16 17 + Store 33 31 + 38: 37(ptr) AccessChain 14(float4_array_1) 26 + 39: 10 Load 38 + 40: 37(ptr) AccessChain 36(float4_array_2) 16 + Store 40 39 + 44: 32(ptr) AccessChain 14(float4_array_1) 16 17 + 45: 7(fvec4) Load 44 + 46: 32(ptr) AccessChain 43(psout) 26 + Store 46 45 + 49: 32(ptr) AccessChain 43(psout) 26 + 50: 7(fvec4) Load 49 + Store 48(Color) 50 + Return + FunctionEnd diff --git a/Test/hlsl.array.implicit-size.frag b/Test/hlsl.array.implicit-size.frag index 29e2c1ba..78a9283d 100644 --- a/Test/hlsl.array.implicit-size.frag +++ b/Test/hlsl.array.implicit-size.frag @@ -1,11 +1,11 @@ -// implicit sized array +// array size from initializer static float g_array [ ] = { 1, 2, 3, 4, 5 }; -// Unused implicit sized array +// Unused: array size from initializer static float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 }; -// Test implicit size arrayed structs +// Test initializer sizing for arrayed structs static struct mystruct { int i; float f; @@ -24,7 +24,7 @@ struct PS_OUTPUT { float4 color : SV_Target0; }; void main(out PS_OUTPUT ps_output) { - // implicit sized local array + // local array sized from initializers float l_array[] = { 1, 2, 3 }; ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx]; diff --git a/Test/hlsl.array.multidim.frag b/Test/hlsl.array.multidim.frag new file mode 100644 index 00000000..524a8896 --- /dev/null +++ b/Test/hlsl.array.multidim.frag @@ -0,0 +1,20 @@ + +float float_array[5][4][3]; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + float4 float4_array_1[2][3]; + float4 float4_array_2[5][3]; + + float4_array_1[1][2] = float_array[2][3][1]; + float4_array_2[1] = float4_array_1[0]; + + PS_OUTPUT psout; + psout.Color = float4_array_1[1][2]; + return psout; +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 7b642171..1e45fda2 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -83,6 +83,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.amend.frag", "f1"}, {"hlsl.array.frag", "PixelShaderFunction"}, {"hlsl.array.implicit-size.frag", "PixelShaderFunction"}, + {"hlsl.array.multidim.frag", "main"}, {"hlsl.assoc.frag", "PixelShaderFunction"}, {"hlsl.attribute.frag", "PixelShaderFunction"}, {"hlsl.buffer.frag", "PixelShaderFunction"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 626d2991..a53b9f4e 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -2676,35 +2676,40 @@ bool HlslGrammar::acceptDefaultLabel(TIntermNode*& statement) } // array_specifier -// : LEFT_BRACKET integer_expression RGHT_BRACKET post_decls // optional -// : LEFT_BRACKET RGHT_BRACKET post_decls // optional +// : LEFT_BRACKET integer_expression RGHT_BRACKET ... // optional +// : LEFT_BRACKET RGHT_BRACKET // optional // void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes) { arraySizes = nullptr; - if (! acceptTokenClass(EHTokLeftBracket)) + // Early-out if there aren't any array dimensions + if (!peekTokenClass(EHTokLeftBracket)) return; - TSourceLoc loc = token.loc; - TIntermTyped* sizeExpr = nullptr; - - // Array sizing expression is optional. If ommitted, array is implicitly sized. - const bool hasArraySize = acceptAssignmentExpression(sizeExpr); - - if (! acceptTokenClass(EHTokRightBracket)) { - expected("]"); - return; - } - + // If we get here, we have at least one array dimension. This will track the sizes we find. arraySizes = new TArraySizes; - - if (hasArraySize) { - TArraySize arraySize; - parseContext.arraySizeCheck(loc, sizeExpr, arraySize); - arraySizes->addInnerSize(arraySize); - } else { - arraySizes->addInnerSize(); // implicitly sized + + // Collect each array dimension. + while (acceptTokenClass(EHTokLeftBracket)) { + TSourceLoc loc = token.loc; + TIntermTyped* sizeExpr = nullptr; + + // Array sizing expression is optional. If ommitted, array will be later sized by initializer list. + const bool hasArraySize = acceptAssignmentExpression(sizeExpr); + + if (! acceptTokenClass(EHTokRightBracket)) { + expected("]"); + return; + } + + if (hasArraySize) { + TArraySize arraySize; + parseContext.arraySizeCheck(loc, sizeExpr, arraySize); + arraySizes->addInnerSize(arraySize); + } else { + arraySizes->addInnerSize(0); // sized by initializers. + } } } From 17ff343bf4ff05710b1e900023dfcc6cb33b00e8 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 14 Oct 2016 17:41:45 +0800 Subject: [PATCH 063/130] SPV: Add missing extension declarations for certain AMD extensions. --- SPIRV/GlslangToSpv.cpp | 45 +++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 245715fc..49bb0a17 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -114,6 +114,7 @@ public: void dumpSpv(std::vector& out); protected: + spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier); spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool memberDeclaration); spv::ImageFormat TranslateImageFormat(const glslang::TType& type); @@ -381,7 +382,7 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T // Translate glslang type to SPIR-V interpolation decorations. // Returns spv::DecorationMax when no decoration // should be applied. -spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier) +spv::Decoration TGlslangToSpvTraverser::TranslateInterpolationDecoration(const glslang::TQualifier& qualifier) { if (qualifier.smooth) // Smooth decoration doesn't exist in SPIR-V 1.0 @@ -391,8 +392,10 @@ spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qual else if (qualifier.flat) return spv::DecorationFlat; #ifdef AMD_EXTENSIONS - else if (qualifier.explicitInterp) + else if (qualifier.explicitInterp) { + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::DecorationExplicitInterpAMD; + } #endif else return spv::DecorationMax; @@ -572,13 +575,33 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInSubgroupLtMaskKHR; #ifdef AMD_EXTENSIONS - case glslang::EbvBaryCoordNoPersp: return spv::BuiltInBaryCoordNoPerspAMD; - case glslang::EbvBaryCoordNoPerspCentroid: return spv::BuiltInBaryCoordNoPerspCentroidAMD; - case glslang::EbvBaryCoordNoPerspSample: return spv::BuiltInBaryCoordNoPerspSampleAMD; - case glslang::EbvBaryCoordSmooth: return spv::BuiltInBaryCoordSmoothAMD; - case glslang::EbvBaryCoordSmoothCentroid: return spv::BuiltInBaryCoordSmoothCentroidAMD; - case glslang::EbvBaryCoordSmoothSample: return spv::BuiltInBaryCoordSmoothSampleAMD; - case glslang::EbvBaryCoordPullModel: return spv::BuiltInBaryCoordPullModelAMD; + case glslang::EbvBaryCoordNoPersp: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordNoPerspAMD; + + case glslang::EbvBaryCoordNoPerspCentroid: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordNoPerspCentroidAMD; + + case glslang::EbvBaryCoordNoPerspSample: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordNoPerspSampleAMD; + + case glslang::EbvBaryCoordSmooth: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordSmoothAMD; + + case glslang::EbvBaryCoordSmoothCentroid: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordSmoothCentroidAMD; + + case glslang::EbvBaryCoordSmoothSample: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordSmoothSampleAMD; + + case glslang::EbvBaryCoordPullModel: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordPullModelAMD; #endif default: return spv::BuiltInMax; } @@ -4110,6 +4133,10 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op builder.addCapability(spv::CapabilitySubgroupBallotKHR); } else { builder.addCapability(spv::CapabilityGroups); + if (op == glslang::EOpMinInvocationsNonUniform || + op == glslang::EOpMaxInvocationsNonUniform || + op == glslang::EOpAddInvocationsNonUniform) + builder.addExtension(spv::E_SPV_AMD_shader_ballot); spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); #ifdef AMD_EXTENSIONS From 4f2da27aec3e862b7d761dc66ea72bbeac980de1 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Mon, 10 Oct 2016 15:24:57 -0600 Subject: [PATCH 064/130] HLSL: phase 3a: Add sub-vec4 rwtexture formats (qualifier.layoutFormat) This PR sets the TQualifier layoutFormat according to the HLSL image type. For instance: RWTexture1D g_tTex1df2; becomes ElfRg32f. Similar on Buffers, e.g, Buffer mybuffer; The return type for image and buffer loads is now taken from the storage format. Also, the qualifier for the return type is now (properly) a temp, not a global. --- Test/baseResults/hlsl.load.2dms.dx10.frag.out | 48 +- .../baseResults/hlsl.load.array.dx10.frag.out | 24 +- .../baseResults/hlsl.load.basic.dx10.frag.out | 36 +- .../baseResults/hlsl.load.basic.dx10.vert.out | 36 +- .../hlsl.load.buffer.dx10.frag.out | 46 +- .../hlsl.load.buffer.float.dx10.frag.out | 280 ++ .../hlsl.load.offset.dx10.frag.out | 36 +- .../hlsl.load.offsetarray.dx10.frag.out | 24 +- .../hlsl.load.rwbuffer.dx10.frag.out | 12 +- .../hlsl.load.rwtexture.array.dx10.frag.out | 24 +- .../hlsl.load.rwtexture.dx10.frag.out | 36 +- Test/baseResults/hlsl.multiEntry.vert.out | 14 +- .../hlsl.rw.scalar.bracket.frag.out | 2560 ++++++++++++++++ .../baseResults/hlsl.rw.vec2.bracket.frag.out | 2613 +++++++++++++++++ Test/hlsl.load.buffer.float.dx10.frag | 38 + Test/hlsl.rw.scalar.bracket.frag | 140 + Test/hlsl.rw.vec2.bracket.frag | 140 + glslang/Include/Types.h | 47 + gtests/Hlsl.FromFile.cpp | 3 + hlsl/hlslGrammar.cpp | 28 +- hlsl/hlslParseHelper.cpp | 38 +- hlsl/hlslParseHelper.h | 2 + 22 files changed, 6033 insertions(+), 192 deletions(-) create mode 100644 Test/baseResults/hlsl.load.buffer.float.dx10.frag.out create mode 100644 Test/baseResults/hlsl.rw.scalar.bracket.frag.out create mode 100644 Test/baseResults/hlsl.rw.vec2.bracket.frag.out create mode 100644 Test/hlsl.load.buffer.float.dx10.frag create mode 100644 Test/hlsl.rw.scalar.bracket.frag create mode 100644 Test/hlsl.rw.vec2.bracket.frag diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index 77f4fe84..9c1b4ad9 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -5,7 +5,7 @@ gl_FragCoord origin is upper left 0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence -0:32 textureFetch (global 4-component vector of float) +0:32 textureFetch (temp 4-component vector of float) 0:32 'g_tTex2dmsf4' (uniform texture2DMS) 0:32 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -13,7 +13,7 @@ gl_FragCoord origin is upper left 0:32 1 (const uint) 0:32 Constant: 0:32 3 (const int) -0:33 textureFetch (global 4-component vector of int) +0:33 textureFetch (temp 4-component vector of int) 0:33 'g_tTex2dmsi4' (uniform itexture2DMS) 0:33 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:33 1 (const uint) 0:33 Constant: 0:33 3 (const int) -0:34 textureFetch (global 4-component vector of uint) +0:34 textureFetch (temp 4-component vector of uint) 0:34 'g_tTex2dmsu4' (uniform utexture2DMS) 0:34 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -29,7 +29,7 @@ gl_FragCoord origin is upper left 0:34 1 (const uint) 0:34 Constant: 0:34 3 (const int) -0:37 textureFetchOffset (global 4-component vector of float) +0:37 textureFetchOffset (temp 4-component vector of float) 0:37 'g_tTex2dmsf4' (uniform texture2DMS) 0:37 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -41,7 +41,7 @@ gl_FragCoord origin is upper left 0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:37 Constant: 0:37 5 (const uint) -0:38 textureFetchOffset (global 4-component vector of int) +0:38 textureFetchOffset (temp 4-component vector of int) 0:38 'g_tTex2dmsi4' (uniform itexture2DMS) 0:38 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:38 Constant: 0:38 5 (const uint) -0:39 textureFetchOffset (global 4-component vector of uint) +0:39 textureFetchOffset (temp 4-component vector of uint) 0:39 'g_tTex2dmsu4' (uniform utexture2DMS) 0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:39 Constant: 0:39 5 (const uint) -0:42 textureFetch (global 4-component vector of float) +0:42 textureFetch (temp 4-component vector of float) 0:42 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -73,7 +73,7 @@ gl_FragCoord origin is upper left 0:42 2 (const uint) 0:42 Constant: 0:42 3 (const int) -0:43 textureFetch (global 4-component vector of int) +0:43 textureFetch (temp 4-component vector of int) 0:43 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -81,7 +81,7 @@ gl_FragCoord origin is upper left 0:43 2 (const uint) 0:43 Constant: 0:43 3 (const int) -0:44 textureFetch (global 4-component vector of uint) +0:44 textureFetch (temp 4-component vector of uint) 0:44 'g_tTex2dmsu4a' (uniform utexture2DMSArray) 0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -89,7 +89,7 @@ gl_FragCoord origin is upper left 0:44 2 (const uint) 0:44 Constant: 0:44 3 (const int) -0:47 textureFetchOffset (global 4-component vector of float) +0:47 textureFetchOffset (temp 4-component vector of float) 0:47 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -101,7 +101,7 @@ gl_FragCoord origin is upper left 0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:47 Constant: 0:47 5 (const uint) -0:48 textureFetchOffset (global 4-component vector of int) +0:48 textureFetchOffset (temp 4-component vector of int) 0:48 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:48 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -113,7 +113,7 @@ gl_FragCoord origin is upper left 0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:48 Constant: 0:48 5 (const uint) -0:49 textureFetchOffset (global 4-component vector of uint) +0:49 textureFetchOffset (temp 4-component vector of uint) 0:49 'g_tTex2dmsu4a' (uniform utexture2DMSArray) 0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -179,7 +179,7 @@ gl_FragCoord origin is upper left 0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:28 Function Parameters: 0:? Sequence -0:32 textureFetch (global 4-component vector of float) +0:32 textureFetch (temp 4-component vector of float) 0:32 'g_tTex2dmsf4' (uniform texture2DMS) 0:32 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -187,7 +187,7 @@ gl_FragCoord origin is upper left 0:32 1 (const uint) 0:32 Constant: 0:32 3 (const int) -0:33 textureFetch (global 4-component vector of int) +0:33 textureFetch (temp 4-component vector of int) 0:33 'g_tTex2dmsi4' (uniform itexture2DMS) 0:33 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -195,7 +195,7 @@ gl_FragCoord origin is upper left 0:33 1 (const uint) 0:33 Constant: 0:33 3 (const int) -0:34 textureFetch (global 4-component vector of uint) +0:34 textureFetch (temp 4-component vector of uint) 0:34 'g_tTex2dmsu4' (uniform utexture2DMS) 0:34 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -203,7 +203,7 @@ gl_FragCoord origin is upper left 0:34 1 (const uint) 0:34 Constant: 0:34 3 (const int) -0:37 textureFetchOffset (global 4-component vector of float) +0:37 textureFetchOffset (temp 4-component vector of float) 0:37 'g_tTex2dmsf4' (uniform texture2DMS) 0:37 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -215,7 +215,7 @@ gl_FragCoord origin is upper left 0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:37 Constant: 0:37 5 (const uint) -0:38 textureFetchOffset (global 4-component vector of int) +0:38 textureFetchOffset (temp 4-component vector of int) 0:38 'g_tTex2dmsi4' (uniform itexture2DMS) 0:38 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -227,7 +227,7 @@ gl_FragCoord origin is upper left 0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:38 Constant: 0:38 5 (const uint) -0:39 textureFetchOffset (global 4-component vector of uint) +0:39 textureFetchOffset (temp 4-component vector of uint) 0:39 'g_tTex2dmsu4' (uniform utexture2DMS) 0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -239,7 +239,7 @@ gl_FragCoord origin is upper left 0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:39 Constant: 0:39 5 (const uint) -0:42 textureFetch (global 4-component vector of float) +0:42 textureFetch (temp 4-component vector of float) 0:42 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -247,7 +247,7 @@ gl_FragCoord origin is upper left 0:42 2 (const uint) 0:42 Constant: 0:42 3 (const int) -0:43 textureFetch (global 4-component vector of int) +0:43 textureFetch (temp 4-component vector of int) 0:43 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -255,7 +255,7 @@ gl_FragCoord origin is upper left 0:43 2 (const uint) 0:43 Constant: 0:43 3 (const int) -0:44 textureFetch (global 4-component vector of uint) +0:44 textureFetch (temp 4-component vector of uint) 0:44 'g_tTex2dmsu4a' (uniform utexture2DMSArray) 0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -263,7 +263,7 @@ gl_FragCoord origin is upper left 0:44 2 (const uint) 0:44 Constant: 0:44 3 (const int) -0:47 textureFetchOffset (global 4-component vector of float) +0:47 textureFetchOffset (temp 4-component vector of float) 0:47 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -275,7 +275,7 @@ gl_FragCoord origin is upper left 0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:47 Constant: 0:47 5 (const uint) -0:48 textureFetchOffset (global 4-component vector of int) +0:48 textureFetchOffset (temp 4-component vector of int) 0:48 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:48 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -287,7 +287,7 @@ gl_FragCoord origin is upper left 0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:48 Constant: 0:48 5 (const uint) -0:49 textureFetchOffset (global 4-component vector of uint) +0:49 textureFetchOffset (temp 4-component vector of uint) 0:49 'g_tTex2dmsu4a' (uniform utexture2DMSArray) 0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out index 57e479a0..ed2951f7 100644 --- a/Test/baseResults/hlsl.load.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -5,7 +5,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetch (global 4-component vector of float) +0:52 textureFetch (temp 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) 0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -24,7 +24,7 @@ gl_FragCoord origin is upper left 0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) -0:53 textureFetch (global 4-component vector of int) +0:53 textureFetch (temp 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) 0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -43,7 +43,7 @@ gl_FragCoord origin is upper left 0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) -0:54 textureFetch (global 4-component vector of uint) +0:54 textureFetch (temp 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) 0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -62,7 +62,7 @@ gl_FragCoord origin is upper left 0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) -0:57 textureFetch (global 4-component vector of float) +0:57 textureFetch (temp 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) 0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -83,7 +83,7 @@ gl_FragCoord origin is upper left 0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) -0:58 textureFetch (global 4-component vector of int) +0:58 textureFetch (temp 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) 0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) -0:59 textureFetch (global 4-component vector of uint) +0:59 textureFetch (temp 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) 0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetch (global 4-component vector of float) +0:52 textureFetch (temp 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) 0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -213,7 +213,7 @@ gl_FragCoord origin is upper left 0:52 2 (const uint) 0:52 Constant: 0:52 2 (const int) -0:53 textureFetch (global 4-component vector of int) +0:53 textureFetch (temp 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) 0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left 0:53 2 (const uint) 0:53 Constant: 0:53 2 (const int) -0:54 textureFetch (global 4-component vector of uint) +0:54 textureFetch (temp 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) 0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -251,7 +251,7 @@ gl_FragCoord origin is upper left 0:54 2 (const uint) 0:54 Constant: 0:54 2 (const int) -0:57 textureFetch (global 4-component vector of float) +0:57 textureFetch (temp 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) 0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:57 3 (const uint) 0:57 Constant: 0:57 3 (const int) -0:58 textureFetch (global 4-component vector of int) +0:58 textureFetch (temp 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) 0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -293,7 +293,7 @@ gl_FragCoord origin is upper left 0:58 3 (const uint) 0:58 Constant: 0:58 3 (const int) -0:59 textureFetch (global 4-component vector of uint) +0:59 textureFetch (temp 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) 0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out index 90f7e496..3a4b3fca 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -5,7 +5,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetch (global 4-component vector of float) +0:52 textureFetch (temp 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) 0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) -0:53 textureFetch (global 4-component vector of int) +0:53 textureFetch (temp 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) 0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -39,7 +39,7 @@ gl_FragCoord origin is upper left 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) -0:54 textureFetch (global 4-component vector of uint) +0:54 textureFetch (temp 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) 0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -56,7 +56,7 @@ gl_FragCoord origin is upper left 0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) -0:57 textureFetch (global 4-component vector of float) +0:57 textureFetch (temp 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) 0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -75,7 +75,7 @@ gl_FragCoord origin is upper left 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) -0:58 textureFetch (global 4-component vector of int) +0:58 textureFetch (temp 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) 0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -94,7 +94,7 @@ gl_FragCoord origin is upper left 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) -0:59 textureFetch (global 4-component vector of uint) +0:59 textureFetch (temp 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) 0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -113,7 +113,7 @@ gl_FragCoord origin is upper left 0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) -0:62 textureFetch (global 4-component vector of float) +0:62 textureFetch (temp 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) 0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -134,7 +134,7 @@ gl_FragCoord origin is upper left 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) -0:63 textureFetch (global 4-component vector of int) +0:63 textureFetch (temp 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) 0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -155,7 +155,7 @@ gl_FragCoord origin is upper left 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) -0:64 textureFetch (global 4-component vector of uint) +0:64 textureFetch (temp 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) 0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -245,7 +245,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetch (global 4-component vector of float) +0:52 textureFetch (temp 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) 0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -262,7 +262,7 @@ gl_FragCoord origin is upper left 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) -0:53 textureFetch (global 4-component vector of int) +0:53 textureFetch (temp 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) 0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -279,7 +279,7 @@ gl_FragCoord origin is upper left 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) -0:54 textureFetch (global 4-component vector of uint) +0:54 textureFetch (temp 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) 0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -296,7 +296,7 @@ gl_FragCoord origin is upper left 0:54 1 (const uint) 0:54 Constant: 0:54 1 (const int) -0:57 textureFetch (global 4-component vector of float) +0:57 textureFetch (temp 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) 0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -315,7 +315,7 @@ gl_FragCoord origin is upper left 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) -0:58 textureFetch (global 4-component vector of int) +0:58 textureFetch (temp 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) 0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -334,7 +334,7 @@ gl_FragCoord origin is upper left 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) -0:59 textureFetch (global 4-component vector of uint) +0:59 textureFetch (temp 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) 0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -353,7 +353,7 @@ gl_FragCoord origin is upper left 0:59 2 (const uint) 0:59 Constant: 0:59 2 (const int) -0:62 textureFetch (global 4-component vector of float) +0:62 textureFetch (temp 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) 0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -374,7 +374,7 @@ gl_FragCoord origin is upper left 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) -0:63 textureFetch (global 4-component vector of int) +0:63 textureFetch (temp 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) 0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -395,7 +395,7 @@ gl_FragCoord origin is upper left 0:63 3 (const uint) 0:63 Constant: 0:63 3 (const int) -0:64 textureFetch (global 4-component vector of uint) +0:64 textureFetch (temp 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) 0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index 4649f291..9495c602 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -4,7 +4,7 @@ Shader version: 450 0:47 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence -0:51 textureFetch (global 4-component vector of float) +0:51 textureFetch (temp 4-component vector of float) 0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:51 vector swizzle (temp int) 0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -21,7 +21,7 @@ Shader version: 450 0:51 1 (const uint) 0:51 Constant: 0:51 1 (const int) -0:52 textureFetch (global 4-component vector of int) +0:52 textureFetch (temp 4-component vector of int) 0:52 'g_tTex1di4' (uniform itexture1D) 0:52 vector swizzle (temp int) 0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -38,7 +38,7 @@ Shader version: 450 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) -0:53 textureFetch (global 4-component vector of uint) +0:53 textureFetch (temp 4-component vector of uint) 0:53 'g_tTex1du4' (uniform utexture1D) 0:53 vector swizzle (temp int) 0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -55,7 +55,7 @@ Shader version: 450 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) -0:56 textureFetch (global 4-component vector of float) +0:56 textureFetch (temp 4-component vector of float) 0:56 'g_tTex2df4' (uniform texture2D) 0:56 vector swizzle (temp 2-component vector of int) 0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -74,7 +74,7 @@ Shader version: 450 0:56 2 (const uint) 0:56 Constant: 0:56 2 (const int) -0:57 textureFetch (global 4-component vector of int) +0:57 textureFetch (temp 4-component vector of int) 0:57 'g_tTex2di4' (uniform itexture2D) 0:57 vector swizzle (temp 2-component vector of int) 0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -93,7 +93,7 @@ Shader version: 450 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) -0:58 textureFetch (global 4-component vector of uint) +0:58 textureFetch (temp 4-component vector of uint) 0:58 'g_tTex2du4' (uniform utexture2D) 0:58 vector swizzle (temp 2-component vector of int) 0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -112,7 +112,7 @@ Shader version: 450 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) -0:61 textureFetch (global 4-component vector of float) +0:61 textureFetch (temp 4-component vector of float) 0:61 'g_tTex3df4' (uniform texture3D) 0:61 vector swizzle (temp 3-component vector of int) 0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -133,7 +133,7 @@ Shader version: 450 0:61 3 (const uint) 0:61 Constant: 0:61 3 (const int) -0:62 textureFetch (global 4-component vector of int) +0:62 textureFetch (temp 4-component vector of int) 0:62 'g_tTex3di4' (uniform itexture3D) 0:62 vector swizzle (temp 3-component vector of int) 0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -154,7 +154,7 @@ Shader version: 450 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) -0:63 textureFetch (global 4-component vector of uint) +0:63 textureFetch (temp 4-component vector of uint) 0:63 'g_tTex3du4' (uniform utexture3D) 0:63 vector swizzle (temp 3-component vector of int) 0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -229,7 +229,7 @@ Shader version: 450 0:47 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence -0:51 textureFetch (global 4-component vector of float) +0:51 textureFetch (temp 4-component vector of float) 0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:51 vector swizzle (temp int) 0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -246,7 +246,7 @@ Shader version: 450 0:51 1 (const uint) 0:51 Constant: 0:51 1 (const int) -0:52 textureFetch (global 4-component vector of int) +0:52 textureFetch (temp 4-component vector of int) 0:52 'g_tTex1di4' (uniform itexture1D) 0:52 vector swizzle (temp int) 0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -263,7 +263,7 @@ Shader version: 450 0:52 1 (const uint) 0:52 Constant: 0:52 1 (const int) -0:53 textureFetch (global 4-component vector of uint) +0:53 textureFetch (temp 4-component vector of uint) 0:53 'g_tTex1du4' (uniform utexture1D) 0:53 vector swizzle (temp int) 0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -280,7 +280,7 @@ Shader version: 450 0:53 1 (const uint) 0:53 Constant: 0:53 1 (const int) -0:56 textureFetch (global 4-component vector of float) +0:56 textureFetch (temp 4-component vector of float) 0:56 'g_tTex2df4' (uniform texture2D) 0:56 vector swizzle (temp 2-component vector of int) 0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -299,7 +299,7 @@ Shader version: 450 0:56 2 (const uint) 0:56 Constant: 0:56 2 (const int) -0:57 textureFetch (global 4-component vector of int) +0:57 textureFetch (temp 4-component vector of int) 0:57 'g_tTex2di4' (uniform itexture2D) 0:57 vector swizzle (temp 2-component vector of int) 0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -318,7 +318,7 @@ Shader version: 450 0:57 2 (const uint) 0:57 Constant: 0:57 2 (const int) -0:58 textureFetch (global 4-component vector of uint) +0:58 textureFetch (temp 4-component vector of uint) 0:58 'g_tTex2du4' (uniform utexture2D) 0:58 vector swizzle (temp 2-component vector of int) 0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -337,7 +337,7 @@ Shader version: 450 0:58 2 (const uint) 0:58 Constant: 0:58 2 (const int) -0:61 textureFetch (global 4-component vector of float) +0:61 textureFetch (temp 4-component vector of float) 0:61 'g_tTex3df4' (uniform texture3D) 0:61 vector swizzle (temp 3-component vector of int) 0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -358,7 +358,7 @@ Shader version: 450 0:61 3 (const uint) 0:61 Constant: 0:61 3 (const int) -0:62 textureFetch (global 4-component vector of int) +0:62 textureFetch (temp 4-component vector of int) 0:62 'g_tTex3di4' (uniform itexture3D) 0:62 vector swizzle (temp 3-component vector of int) 0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -379,7 +379,7 @@ Shader version: 450 0:62 3 (const uint) 0:62 Constant: 0:62 3 (const int) -0:63 textureFetch (global 4-component vector of uint) +0:63 textureFetch (temp 4-component vector of uint) 0:63 'g_tTex3du4' (uniform utexture3D) 0:63 vector swizzle (temp 3-component vector of int) 0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index ded93824..560d8f5d 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -8,8 +8,8 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of float) 0:28 'r00' (temp 4-component vector of float) -0:28 textureFetch (global 4-component vector of float) -0:28 'g_tTexbf4' (uniform samplerBuffer) +0:28 textureFetch (temp 4-component vector of float) +0:28 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) 0:28 c1: direct index for structure (layout(offset=0 ) uniform int) 0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:28 Constant: @@ -17,8 +17,8 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of int) 0:29 'r01' (temp 4-component vector of int) -0:29 textureFetch (global 4-component vector of int) -0:29 'g_tTexbi4' (uniform isamplerBuffer) +0:29 textureFetch (temp 4-component vector of int) +0:29 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) 0:29 c1: direct index for structure (layout(offset=0 ) uniform int) 0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:29 Constant: @@ -26,8 +26,8 @@ gl_FragCoord origin is upper left 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of uint) 0:30 'r02' (temp 4-component vector of uint) -0:30 textureFetch (global 4-component vector of uint) -0:30 'g_tTexbu4' (uniform usamplerBuffer) +0:30 textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) 0:30 c1: direct index for structure (layout(offset=0 ) uniform int) 0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:30 Constant: @@ -65,10 +65,10 @@ gl_FragCoord origin is upper left 0:37 1 (const int) 0:37 Branch: Return 0:? Linker Objects -0:? 'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer) -0:? 'g_tTexbf4' (uniform samplerBuffer) -0:? 'g_tTexbi4' (uniform isamplerBuffer) -0:? 'g_tTexbu4' (uniform usamplerBuffer) +0:? 'g_tTexbf4_test' (layout(binding=0 rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) +0:? 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) 0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -86,8 +86,8 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of float) 0:28 'r00' (temp 4-component vector of float) -0:28 textureFetch (global 4-component vector of float) -0:28 'g_tTexbf4' (uniform samplerBuffer) +0:28 textureFetch (temp 4-component vector of float) +0:28 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) 0:28 c1: direct index for structure (layout(offset=0 ) uniform int) 0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:28 Constant: @@ -95,8 +95,8 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of int) 0:29 'r01' (temp 4-component vector of int) -0:29 textureFetch (global 4-component vector of int) -0:29 'g_tTexbi4' (uniform isamplerBuffer) +0:29 textureFetch (temp 4-component vector of int) +0:29 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) 0:29 c1: direct index for structure (layout(offset=0 ) uniform int) 0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:29 Constant: @@ -104,8 +104,8 @@ gl_FragCoord origin is upper left 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of uint) 0:30 'r02' (temp 4-component vector of uint) -0:30 textureFetch (global 4-component vector of uint) -0:30 'g_tTexbu4' (uniform usamplerBuffer) +0:30 textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) 0:30 c1: direct index for structure (layout(offset=0 ) uniform int) 0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:30 Constant: @@ -143,10 +143,10 @@ gl_FragCoord origin is upper left 0:37 1 (const int) 0:37 Branch: Return 0:? Linker Objects -0:? 'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer) -0:? 'g_tTexbf4' (uniform samplerBuffer) -0:? 'g_tTexbi4' (uniform isamplerBuffer) -0:? 'g_tTexbu4' (uniform usamplerBuffer) +0:? 'g_tTexbf4_test' (layout(binding=0 rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) +0:? 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) 0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -207,7 +207,7 @@ gl_FragCoord origin is upper left 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) - 10: TypeImage 6(float) Buffer sampled format:Unknown + 10: TypeImage 6(float) Buffer sampled format:Rgba32f 11: TypeSampledImage 10 12: TypePointer UniformConstant 11 13(g_tTexbf4): 12(ptr) Variable UniformConstant @@ -221,14 +221,14 @@ gl_FragCoord origin is upper left 22: 15(int) Constant 0 23: TypePointer Uniform 15(int) 28: TypePointer Function 18(ivec4) - 30: TypeImage 15(int) Buffer sampled format:Unknown + 30: TypeImage 15(int) Buffer sampled format:Rgba32i 31: TypeSampledImage 30 32: TypePointer UniformConstant 31 33(g_tTexbi4): 32(ptr) Variable UniformConstant 39: TypeInt 32 0 40: TypeVector 39(int) 4 41: TypePointer Function 40(ivec4) - 43: TypeImage 39(int) Buffer sampled format:Unknown + 43: TypeImage 39(int) Buffer sampled format:Rgba32ui 44: TypeSampledImage 43 45: TypePointer UniformConstant 44 46(g_tTexbu4): 45(ptr) Variable UniformConstant diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out new file mode 100644 index 00000000..87e96802 --- /dev/null +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -0,0 +1,280 @@ +hlsl.load.buffer.float.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'r00' (temp float) +0:28 textureFetch (temp float) +0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) +0:29 Sequence +0:29 move second child to first child (temp int) +0:29 'r01' (temp int) +0:29 textureFetch (temp int) +0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) +0:30 Sequence +0:30 move second child to first child (temp uint) +0:30 'r02' (temp uint) +0:30 textureFetch (temp uint) +0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) +0:34 move second child to first child (temp 4-component vector of float) +0:34 Color: direct index for structure (temp 4-component vector of float) +0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1.000000 +0:34 1.000000 +0:34 1.000000 +0:34 1.000000 +0:35 move second child to first child (temp float) +0:35 Depth: direct index for structure (temp float) +0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 1.000000 +0:37 Sequence +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:37 Color: direct index for structure (temp 4-component vector of float) +0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:37 Constant: +0:37 0 (const int) +0:37 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:37 Depth: direct index for structure (temp float) +0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:37 Constant: +0:37 1 (const int) +0:37 Branch: Return +0:? Linker Objects +0:? 'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:? 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'r00' (temp float) +0:28 textureFetch (temp float) +0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) +0:29 Sequence +0:29 move second child to first child (temp int) +0:29 'r01' (temp int) +0:29 textureFetch (temp int) +0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) +0:30 Sequence +0:30 move second child to first child (temp uint) +0:30 'r02' (temp uint) +0:30 textureFetch (temp uint) +0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) +0:34 move second child to first child (temp 4-component vector of float) +0:34 Color: direct index for structure (temp 4-component vector of float) +0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1.000000 +0:34 1.000000 +0:34 1.000000 +0:34 1.000000 +0:35 move second child to first child (temp float) +0:35 Depth: direct index for structure (temp float) +0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 1.000000 +0:37 Sequence +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:37 Color: direct index for structure (temp 4-component vector of float) +0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:37 Constant: +0:37 0 (const int) +0:37 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:37 Depth: direct index for structure (temp float) +0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:37 Constant: +0:37 1 (const int) +0:37 Branch: Return +0:? Linker Objects +0:? 'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:? 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 70 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 61 65 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 12 "g_tTexbfs" + Name 18 "$Global" + MemberName 18($Global) 0 "c1" + MemberName 18($Global) 1 "c2" + MemberName 18($Global) 2 "c3" + MemberName 18($Global) 3 "c4" + MemberName 18($Global) 4 "o1" + MemberName 18($Global) 5 "o2" + MemberName 18($Global) 6 "o3" + MemberName 18($Global) 7 "o4" + Name 20 "" + Name 28 "r01" + Name 32 "g_tTexbis" + Name 40 "r02" + Name 44 "g_tTexbus" + Name 51 "PS_OUTPUT" + MemberName 51(PS_OUTPUT) 0 "Color" + MemberName 51(PS_OUTPUT) 1 "Depth" + Name 53 "psout" + Name 61 "Color" + Name 65 "Depth" + Name 69 "g_tTexbfs_test" + Decorate 12(g_tTexbfs) DescriptorSet 0 + MemberDecorate 18($Global) 0 Offset 0 + MemberDecorate 18($Global) 1 Offset 8 + MemberDecorate 18($Global) 2 Offset 16 + MemberDecorate 18($Global) 3 Offset 32 + MemberDecorate 18($Global) 4 Offset 48 + MemberDecorate 18($Global) 5 Offset 56 + MemberDecorate 18($Global) 6 Offset 64 + MemberDecorate 18($Global) 7 Offset 80 + Decorate 18($Global) Block + Decorate 20 DescriptorSet 0 + Decorate 32(g_tTexbis) DescriptorSet 0 + Decorate 44(g_tTexbus) DescriptorSet 0 + Decorate 61(Color) Location 0 + Decorate 65(Depth) BuiltIn FragDepth + Decorate 69(g_tTexbfs_test) DescriptorSet 0 + Decorate 69(g_tTexbfs_test) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) Buffer sampled format:R32f + 10: TypeSampledImage 9 + 11: TypePointer UniformConstant 10 + 12(g_tTexbfs): 11(ptr) Variable UniformConstant + 14: TypeInt 32 1 + 15: TypeVector 14(int) 2 + 16: TypeVector 14(int) 3 + 17: TypeVector 14(int) 4 + 18($Global): TypeStruct 14(int) 15(ivec2) 16(ivec3) 17(ivec4) 14(int) 15(ivec2) 16(ivec3) 17(ivec4) + 19: TypePointer Uniform 18($Global) + 20: 19(ptr) Variable Uniform + 21: 14(int) Constant 0 + 22: TypePointer Uniform 14(int) + 27: TypePointer Function 14(int) + 29: TypeImage 14(int) Buffer sampled format:R32i + 30: TypeSampledImage 29 + 31: TypePointer UniformConstant 30 + 32(g_tTexbis): 31(ptr) Variable UniformConstant + 38: TypeInt 32 0 + 39: TypePointer Function 38(int) + 41: TypeImage 38(int) Buffer sampled format:R32ui + 42: TypeSampledImage 41 + 43: TypePointer UniformConstant 42 + 44(g_tTexbus): 43(ptr) Variable UniformConstant + 50: TypeVector 6(float) 4 + 51(PS_OUTPUT): TypeStruct 50(fvec4) 6(float) + 52: TypePointer Function 51(PS_OUTPUT) + 54: 6(float) Constant 1065353216 + 55: 50(fvec4) ConstantComposite 54 54 54 54 + 56: TypePointer Function 50(fvec4) + 58: 14(int) Constant 1 + 60: TypePointer Output 50(fvec4) + 61(Color): 60(ptr) Variable Output + 64: TypePointer Output 6(float) + 65(Depth): 64(ptr) Variable Output +69(g_tTexbfs_test): 11(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 28(r01): 27(ptr) Variable Function + 40(r02): 39(ptr) Variable Function + 53(psout): 52(ptr) Variable Function + 13: 10 Load 12(g_tTexbfs) + 23: 22(ptr) AccessChain 20 21 + 24: 14(int) Load 23 + 25: 9 Image 13 + 26: 6(float) ImageFetch 25 24 + Store 8(r00) 26 + 33: 30 Load 32(g_tTexbis) + 34: 22(ptr) AccessChain 20 21 + 35: 14(int) Load 34 + 36: 29 Image 33 + 37: 14(int) ImageFetch 36 35 + Store 28(r01) 37 + 45: 42 Load 44(g_tTexbus) + 46: 22(ptr) AccessChain 20 21 + 47: 14(int) Load 46 + 48: 41 Image 45 + 49: 38(int) ImageFetch 48 47 + Store 40(r02) 49 + 57: 56(ptr) AccessChain 53(psout) 21 + Store 57 55 + 59: 7(ptr) AccessChain 53(psout) 58 + Store 59 54 + 62: 56(ptr) AccessChain 53(psout) 21 + 63: 50(fvec4) Load 62 + Store 61(Color) 63 + 66: 7(ptr) AccessChain 53(psout) 58 + 67: 6(float) Load 66 + Store 65(Depth) 67 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index 6eaa6f7d..069e05d0 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -5,7 +5,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetchOffset (global 4-component vector of float) +0:52 textureFetchOffset (temp 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) 0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -26,7 +26,7 @@ gl_FragCoord origin is upper left 0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:52 Constant: 0:52 4 (const uint) -0:53 textureFetchOffset (global 4-component vector of int) +0:53 textureFetchOffset (temp 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) 0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:53 Constant: 0:53 4 (const uint) -0:54 textureFetchOffset (global 4-component vector of uint) +0:54 textureFetchOffset (temp 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) 0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -68,7 +68,7 @@ gl_FragCoord origin is upper left 0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:54 Constant: 0:54 4 (const uint) -0:57 textureFetchOffset (global 4-component vector of float) +0:57 textureFetchOffset (temp 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) 0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -91,7 +91,7 @@ gl_FragCoord origin is upper left 0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:57 Constant: 0:57 5 (const uint) -0:58 textureFetchOffset (global 4-component vector of int) +0:58 textureFetchOffset (temp 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) 0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -114,7 +114,7 @@ gl_FragCoord origin is upper left 0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:58 Constant: 0:58 5 (const uint) -0:59 textureFetchOffset (global 4-component vector of uint) +0:59 textureFetchOffset (temp 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) 0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -137,7 +137,7 @@ gl_FragCoord origin is upper left 0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:59 Constant: 0:59 5 (const uint) -0:62 textureFetchOffset (global 4-component vector of float) +0:62 textureFetchOffset (temp 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) 0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -162,7 +162,7 @@ gl_FragCoord origin is upper left 0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:62 Constant: 0:62 6 (const uint) -0:63 textureFetchOffset (global 4-component vector of int) +0:63 textureFetchOffset (temp 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) 0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -187,7 +187,7 @@ gl_FragCoord origin is upper left 0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:63 Constant: 0:63 6 (const uint) -0:64 textureFetchOffset (global 4-component vector of uint) +0:64 textureFetchOffset (temp 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) 0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -281,7 +281,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetchOffset (global 4-component vector of float) +0:52 textureFetchOffset (temp 4-component vector of float) 0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:52 vector swizzle (temp int) 0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -302,7 +302,7 @@ gl_FragCoord origin is upper left 0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:52 Constant: 0:52 4 (const uint) -0:53 textureFetchOffset (global 4-component vector of int) +0:53 textureFetchOffset (temp 4-component vector of int) 0:53 'g_tTex1di4' (uniform itexture1D) 0:53 vector swizzle (temp int) 0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -323,7 +323,7 @@ gl_FragCoord origin is upper left 0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:53 Constant: 0:53 4 (const uint) -0:54 textureFetchOffset (global 4-component vector of uint) +0:54 textureFetchOffset (temp 4-component vector of uint) 0:54 'g_tTex1du4' (uniform utexture1D) 0:54 vector swizzle (temp int) 0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) @@ -344,7 +344,7 @@ gl_FragCoord origin is upper left 0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:54 Constant: 0:54 4 (const uint) -0:57 textureFetchOffset (global 4-component vector of float) +0:57 textureFetchOffset (temp 4-component vector of float) 0:57 'g_tTex2df4' (uniform texture2D) 0:57 vector swizzle (temp 2-component vector of int) 0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -367,7 +367,7 @@ gl_FragCoord origin is upper left 0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:57 Constant: 0:57 5 (const uint) -0:58 textureFetchOffset (global 4-component vector of int) +0:58 textureFetchOffset (temp 4-component vector of int) 0:58 'g_tTex2di4' (uniform itexture2D) 0:58 vector swizzle (temp 2-component vector of int) 0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -390,7 +390,7 @@ gl_FragCoord origin is upper left 0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:58 Constant: 0:58 5 (const uint) -0:59 textureFetchOffset (global 4-component vector of uint) +0:59 textureFetchOffset (temp 4-component vector of uint) 0:59 'g_tTex2du4' (uniform utexture2D) 0:59 vector swizzle (temp 2-component vector of int) 0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -413,7 +413,7 @@ gl_FragCoord origin is upper left 0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:59 Constant: 0:59 5 (const uint) -0:62 textureFetchOffset (global 4-component vector of float) +0:62 textureFetchOffset (temp 4-component vector of float) 0:62 'g_tTex3df4' (uniform texture3D) 0:62 vector swizzle (temp 3-component vector of int) 0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -438,7 +438,7 @@ gl_FragCoord origin is upper left 0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:62 Constant: 0:62 6 (const uint) -0:63 textureFetchOffset (global 4-component vector of int) +0:63 textureFetchOffset (temp 4-component vector of int) 0:63 'g_tTex3di4' (uniform itexture3D) 0:63 vector swizzle (temp 3-component vector of int) 0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -463,7 +463,7 @@ gl_FragCoord origin is upper left 0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:63 Constant: 0:63 6 (const uint) -0:64 textureFetchOffset (global 4-component vector of uint) +0:64 textureFetchOffset (temp 4-component vector of uint) 0:64 'g_tTex3du4' (uniform utexture3D) 0:64 vector swizzle (temp 3-component vector of int) 0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index 776cd835..ed89ee8d 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -5,7 +5,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetchOffset (global 4-component vector of float) +0:52 textureFetchOffset (temp 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) 0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -28,7 +28,7 @@ gl_FragCoord origin is upper left 0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:52 Constant: 0:52 4 (const uint) -0:53 textureFetchOffset (global 4-component vector of int) +0:53 textureFetchOffset (temp 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) 0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -51,7 +51,7 @@ gl_FragCoord origin is upper left 0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:53 Constant: 0:53 4 (const uint) -0:54 textureFetchOffset (global 4-component vector of uint) +0:54 textureFetchOffset (temp 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) 0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:54 Constant: 0:54 4 (const uint) -0:57 textureFetchOffset (global 4-component vector of float) +0:57 textureFetchOffset (temp 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) 0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -99,7 +99,7 @@ gl_FragCoord origin is upper left 0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:57 Constant: 0:57 5 (const uint) -0:58 textureFetchOffset (global 4-component vector of int) +0:58 textureFetchOffset (temp 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) 0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:58 Constant: 0:58 5 (const uint) -0:59 textureFetchOffset (global 4-component vector of uint) +0:59 textureFetchOffset (temp 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) 0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -218,7 +218,7 @@ gl_FragCoord origin is upper left 0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:48 Function Parameters: 0:? Sequence -0:52 textureFetchOffset (global 4-component vector of float) +0:52 textureFetchOffset (temp 4-component vector of float) 0:52 'g_tTex1df4a' (uniform texture1DArray) 0:52 vector swizzle (temp 2-component vector of int) 0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -241,7 +241,7 @@ gl_FragCoord origin is upper left 0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:52 Constant: 0:52 4 (const uint) -0:53 textureFetchOffset (global 4-component vector of int) +0:53 textureFetchOffset (temp 4-component vector of int) 0:53 'g_tTex1di4a' (uniform itexture1DArray) 0:53 vector swizzle (temp 2-component vector of int) 0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -264,7 +264,7 @@ gl_FragCoord origin is upper left 0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:53 Constant: 0:53 4 (const uint) -0:54 textureFetchOffset (global 4-component vector of uint) +0:54 textureFetchOffset (temp 4-component vector of uint) 0:54 'g_tTex1du4a' (uniform utexture1DArray) 0:54 vector swizzle (temp 2-component vector of int) 0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) @@ -287,7 +287,7 @@ gl_FragCoord origin is upper left 0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:54 Constant: 0:54 4 (const uint) -0:57 textureFetchOffset (global 4-component vector of float) +0:57 textureFetchOffset (temp 4-component vector of float) 0:57 'g_tTex2df4a' (uniform texture2DArray) 0:57 vector swizzle (temp 3-component vector of int) 0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -312,7 +312,7 @@ gl_FragCoord origin is upper left 0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:57 Constant: 0:57 5 (const uint) -0:58 textureFetchOffset (global 4-component vector of int) +0:58 textureFetchOffset (temp 4-component vector of int) 0:58 'g_tTex2di4a' (uniform itexture2DArray) 0:58 vector swizzle (temp 3-component vector of int) 0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) @@ -337,7 +337,7 @@ gl_FragCoord origin is upper left 0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:58 Constant: 0:58 5 (const uint) -0:59 textureFetchOffset (global 4-component vector of uint) +0:59 textureFetchOffset (temp 4-component vector of uint) 0:59 'g_tTex2du4a' (uniform utexture2DArray) 0:59 vector swizzle (temp 3-component vector of int) 0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out index 78b48040..7b263727 100644 --- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out @@ -5,19 +5,19 @@ gl_FragCoord origin is upper left 0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:22 Function Parameters: 0:? Sequence -0:25 imageLoad (global 4-component vector of float) +0:25 imageLoad (temp 4-component vector of float) 0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) 0:25 c1: direct index for structure (layout(offset=0 ) uniform int) 0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:25 Constant: 0:25 0 (const uint) -0:26 imageLoad (global 4-component vector of uint) +0:26 imageLoad (temp 4-component vector of uint) 0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) 0:26 c1: direct index for structure (layout(offset=0 ) uniform int) 0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:26 Constant: 0:26 0 (const uint) -0:27 imageLoad (global 4-component vector of int) +0:27 imageLoad (temp 4-component vector of int) 0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) 0:27 c1: direct index for structure (layout(offset=0 ) uniform int) 0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -59,19 +59,19 @@ gl_FragCoord origin is upper left 0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) 0:22 Function Parameters: 0:? Sequence -0:25 imageLoad (global 4-component vector of float) +0:25 imageLoad (temp 4-component vector of float) 0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) 0:25 c1: direct index for structure (layout(offset=0 ) uniform int) 0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:25 Constant: 0:25 0 (const uint) -0:26 imageLoad (global 4-component vector of uint) +0:26 imageLoad (temp 4-component vector of uint) 0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) 0:26 c1: direct index for structure (layout(offset=0 ) uniform int) 0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:26 Constant: 0:26 0 (const uint) -0:27 imageLoad (global 4-component vector of int) +0:27 imageLoad (temp 4-component vector of int) 0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) 0:27 c1: direct index for structure (layout(offset=0 ) uniform int) 0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out index 353f769c..8ac94d08 100644 --- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out @@ -5,37 +5,37 @@ gl_FragCoord origin is upper left 0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence -0:44 imageLoad (global 4-component vector of float) +0:44 imageLoad (temp 4-component vector of float) 0:44 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) 0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:44 Constant: 0:44 1 (const uint) -0:45 imageLoad (global 4-component vector of int) +0:45 imageLoad (temp 4-component vector of int) 0:45 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) 0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:45 Constant: 0:45 1 (const uint) -0:46 imageLoad (global 4-component vector of uint) +0:46 imageLoad (temp 4-component vector of uint) 0:46 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) 0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:46 Constant: 0:46 1 (const uint) -0:49 imageLoad (global 4-component vector of float) +0:49 imageLoad (temp 4-component vector of float) 0:49 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:49 Constant: 0:49 2 (const uint) -0:50 imageLoad (global 4-component vector of int) +0:50 imageLoad (temp 4-component vector of int) 0:50 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:50 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:50 Constant: 0:50 2 (const uint) -0:51 imageLoad (global 4-component vector of uint) +0:51 imageLoad (temp 4-component vector of uint) 0:51 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) 0:51 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -104,37 +104,37 @@ gl_FragCoord origin is upper left 0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence -0:44 imageLoad (global 4-component vector of float) +0:44 imageLoad (temp 4-component vector of float) 0:44 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) 0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:44 Constant: 0:44 1 (const uint) -0:45 imageLoad (global 4-component vector of int) +0:45 imageLoad (temp 4-component vector of int) 0:45 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) 0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:45 Constant: 0:45 1 (const uint) -0:46 imageLoad (global 4-component vector of uint) +0:46 imageLoad (temp 4-component vector of uint) 0:46 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) 0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:46 Constant: 0:46 1 (const uint) -0:49 imageLoad (global 4-component vector of float) +0:49 imageLoad (temp 4-component vector of float) 0:49 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:49 Constant: 0:49 2 (const uint) -0:50 imageLoad (global 4-component vector of int) +0:50 imageLoad (temp 4-component vector of int) 0:50 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:50 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:50 Constant: 0:50 2 (const uint) -0:51 imageLoad (global 4-component vector of uint) +0:51 imageLoad (temp 4-component vector of uint) 0:51 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) 0:51 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out index 60c54000..ca590157 100644 --- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out @@ -5,55 +5,55 @@ gl_FragCoord origin is upper left 0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence -0:44 imageLoad (global 4-component vector of float) +0:44 imageLoad (temp 4-component vector of float) 0:44 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:44 c1: direct index for structure (layout(offset=0 ) uniform int) 0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:44 Constant: 0:44 0 (const uint) -0:45 imageLoad (global 4-component vector of int) +0:45 imageLoad (temp 4-component vector of int) 0:45 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) 0:45 c1: direct index for structure (layout(offset=0 ) uniform int) 0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:45 Constant: 0:45 0 (const uint) -0:46 imageLoad (global 4-component vector of uint) +0:46 imageLoad (temp 4-component vector of uint) 0:46 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) 0:46 c1: direct index for structure (layout(offset=0 ) uniform int) 0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:46 Constant: 0:46 0 (const uint) -0:49 imageLoad (global 4-component vector of float) +0:49 imageLoad (temp 4-component vector of float) 0:49 'g_tTex2df4' (layout(rgba32f ) uniform image2D) 0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:49 Constant: 0:49 1 (const uint) -0:50 imageLoad (global 4-component vector of int) +0:50 imageLoad (temp 4-component vector of int) 0:50 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) 0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:50 Constant: 0:50 1 (const uint) -0:51 imageLoad (global 4-component vector of uint) +0:51 imageLoad (temp 4-component vector of uint) 0:51 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) 0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) -0:54 imageLoad (global 4-component vector of float) +0:54 imageLoad (temp 4-component vector of float) 0:54 'g_tTex3df4' (layout(rgba32f ) uniform image3D) 0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) -0:55 imageLoad (global 4-component vector of int) +0:55 imageLoad (temp 4-component vector of int) 0:55 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) 0:55 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:55 Constant: 0:55 2 (const uint) -0:56 imageLoad (global 4-component vector of uint) +0:56 imageLoad (temp 4-component vector of uint) 0:56 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) 0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) @@ -122,55 +122,55 @@ gl_FragCoord origin is upper left 0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:40 Function Parameters: 0:? Sequence -0:44 imageLoad (global 4-component vector of float) +0:44 imageLoad (temp 4-component vector of float) 0:44 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:44 c1: direct index for structure (layout(offset=0 ) uniform int) 0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:44 Constant: 0:44 0 (const uint) -0:45 imageLoad (global 4-component vector of int) +0:45 imageLoad (temp 4-component vector of int) 0:45 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) 0:45 c1: direct index for structure (layout(offset=0 ) uniform int) 0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:45 Constant: 0:45 0 (const uint) -0:46 imageLoad (global 4-component vector of uint) +0:46 imageLoad (temp 4-component vector of uint) 0:46 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) 0:46 c1: direct index for structure (layout(offset=0 ) uniform int) 0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:46 Constant: 0:46 0 (const uint) -0:49 imageLoad (global 4-component vector of float) +0:49 imageLoad (temp 4-component vector of float) 0:49 'g_tTex2df4' (layout(rgba32f ) uniform image2D) 0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:49 Constant: 0:49 1 (const uint) -0:50 imageLoad (global 4-component vector of int) +0:50 imageLoad (temp 4-component vector of int) 0:50 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) 0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:50 Constant: 0:50 1 (const uint) -0:51 imageLoad (global 4-component vector of uint) +0:51 imageLoad (temp 4-component vector of uint) 0:51 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) 0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) 0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:51 Constant: 0:51 1 (const uint) -0:54 imageLoad (global 4-component vector of float) +0:54 imageLoad (temp 4-component vector of float) 0:54 'g_tTex3df4' (layout(rgba32f ) uniform image3D) 0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:54 Constant: 0:54 2 (const uint) -0:55 imageLoad (global 4-component vector of int) +0:55 imageLoad (temp 4-component vector of int) 0:55 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) 0:55 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:55 Constant: 0:55 2 (const uint) -0:56 imageLoad (global 4-component vector of uint) +0:56 imageLoad (temp 4-component vector of uint) 0:56 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) 0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) 0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index cec78986..8f8c42ae 100755 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -6,8 +6,8 @@ Shader version: 450 0:4 'Index' (in uint) 0:? Sequence 0:5 Branch: Return with expression -0:5 textureFetch (global 4-component vector of float) -0:5 'Position' (uniform samplerBuffer) +0:5 textureFetch (temp 4-component vector of float) +0:5 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:5 Convert uint to int (temp int) 0:5 'Index' (in uint) 0:9 Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position) @@ -21,7 +21,7 @@ Shader version: 450 0:10 'Index' (in uint VertexIndex) 0:10 Branch: Return 0:? Linker Objects -0:? 'Position' (uniform samplerBuffer) +0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:? '@entryPointOutput' (out 4-component vector of float Position) 0:? 'Index' (in uint VertexIndex) @@ -36,8 +36,8 @@ Shader version: 450 0:4 'Index' (in uint) 0:? Sequence 0:5 Branch: Return with expression -0:5 textureFetch (global 4-component vector of float) -0:5 'Position' (uniform samplerBuffer) +0:5 textureFetch (temp 4-component vector of float) +0:5 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:5 Convert uint to int (temp int) 0:5 'Index' (in uint) 0:9 Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position) @@ -51,7 +51,7 @@ Shader version: 450 0:10 'Index' (in uint VertexIndex) 0:10 Branch: Return 0:? Linker Objects -0:? 'Position' (uniform samplerBuffer) +0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:? '@entryPointOutput' (out 4-component vector of float Position) 0:? 'Index' (in uint VertexIndex) @@ -81,7 +81,7 @@ Shader version: 450 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypeFunction 9(fvec4) 7(ptr) - 14: TypeImage 8(float) Buffer sampled format:Unknown + 14: TypeImage 8(float) Buffer sampled format:Rgba32f 15: TypeSampledImage 14 16: TypePointer UniformConstant 15 17(Position): 16(ptr) Variable UniformConstant diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out new file mode 100644 index 00000000..904c2dab --- /dev/null +++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out @@ -0,0 +1,2560 @@ +hlsl.rw.scalar.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:42 Function Definition: Fn1(i1; (temp int) +0:42 Function Parameters: +0:42 'x' (in int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in int) +0:43 Function Definition: Fn1(u1; (temp uint) +0:43 Function Parameters: +0:43 'x' (in uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in uint) +0:44 Function Definition: Fn1(f1; (temp float) +0:44 Function Parameters: +0:44 'x' (in float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in float) +0:46 Function Definition: Fn2(i1; (temp void) +0:46 Function Parameters: +0:46 'x' (out int) +0:? Sequence +0:46 move second child to first child (temp int) +0:46 'x' (out int) +0:46 Constant: +0:46 0 (const int) +0:47 Function Definition: Fn2(u1; (temp void) +0:47 Function Parameters: +0:47 'x' (out uint) +0:? Sequence +0:47 move second child to first child (temp uint) +0:47 'x' (out uint) +0:47 Constant: +0:47 0 (const uint) +0:48 Function Definition: Fn2(f1; (temp void) +0:48 Function Parameters: +0:48 'x' (out float) +0:? Sequence +0:48 move second child to first child (temp float) +0:48 'x' (out float) +0:48 Constant: +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp float) +0:50 c1: direct index for structure (layout(offset=0 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:50 Constant: +0:50 0 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp float) +0:57 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp float) +0:59 'r00' (temp float) +0:59 imageLoad (temp float) +0:59 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp int) +0:60 'r01' (temp int) +0:60 imageLoad (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp uint) +0:61 'r02' (temp uint) +0:61 imageLoad (temp uint) +0:61 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp float) +0:64 'r10' (temp float) +0:64 imageLoad (temp float) +0:64 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp int) +0:65 'r11' (temp int) +0:65 imageLoad (temp int) +0:65 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp uint) +0:66 'r12' (temp uint) +0:66 imageLoad (temp uint) +0:66 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp float) +0:69 'r20' (temp float) +0:69 imageLoad (temp float) +0:69 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp int) +0:70 'r21' (temp int) +0:70 imageLoad (temp int) +0:70 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp uint) +0:71 'r22' (temp uint) +0:71 imageLoad (temp uint) +0:71 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp float) +0:73 'lf1' (temp float) +0:73 uf1: direct index for structure (layout(offset=96 ) uniform float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp float) +0:77 'storeTemp' (temp float) +0:77 Function Call: SomeValue( (temp float) +0:77 imageStore (temp void) +0:77 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp float) +0:77 'storeTemp' (temp float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf1' (temp float) +0:78 'lf1' (temp float) +0:79 Sequence +0:79 move second child to first child (temp int) +0:79 'storeTemp' (temp int) +0:79 Constant: +0:79 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp int) +0:79 'storeTemp' (temp int) +0:80 Sequence +0:80 move second child to first child (temp uint) +0:80 'storeTemp' (temp uint) +0:80 Constant: +0:80 3 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp uint) +0:80 'storeTemp' (temp uint) +0:83 Sequence +0:83 move second child to first child (temp float) +0:83 'val1' (temp float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp float) +0:83 'storeTemp' (temp float) +0:83 imageLoad (temp float) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 multiply second child into first child (temp float) +0:83 'storeTemp' (temp float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp float) +0:83 'storeTemp' (temp float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp float) +0:84 'storeTemp' (temp float) +0:84 imageLoad (temp float) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp float) +0:84 'storeTemp' (temp float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp float) +0:84 'storeTemp' (temp float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp float) +0:85 'storeTemp' (temp float) +0:85 imageLoad (temp float) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp float) +0:85 'storeTemp' (temp float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp float) +0:85 'storeTemp' (temp float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp int) +0:87 'storeTemp' (temp int) +0:87 imageLoad (temp int) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp int) +0:87 'storeTemp' (temp int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp int) +0:87 'storeTemp' (temp int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp int) +0:88 'storeTemp' (temp int) +0:88 imageLoad (temp int) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp int) +0:88 'storeTemp' (temp int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp int) +0:88 'storeTemp' (temp int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp int) +0:89 'storeTemp' (temp int) +0:89 imageLoad (temp int) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp int) +0:89 'storeTemp' (temp int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp int) +0:89 'storeTemp' (temp int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp int) +0:90 'storeTemp' (temp int) +0:90 imageLoad (temp int) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp int) +0:90 'storeTemp' (temp int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp int) +0:90 'storeTemp' (temp int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp int) +0:91 'storeTemp' (temp int) +0:91 imageLoad (temp int) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp int) +0:91 'storeTemp' (temp int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp int) +0:91 'storeTemp' (temp int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp int) +0:92 'storeTemp' (temp int) +0:92 imageLoad (temp int) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp int) +0:92 'storeTemp' (temp int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp int) +0:92 'storeTemp' (temp int) +0:95 Sequence +0:95 move second child to first child (temp float) +0:95 'storeTemp' (temp float) +0:95 Function Call: SomeValue( (temp float) +0:95 imageStore (temp void) +0:95 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp float) +0:95 'storeTemp' (temp float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf1' (temp float) +0:96 'lf1' (temp float) +0:97 Sequence +0:97 move second child to first child (temp int) +0:97 'storeTemp' (temp int) +0:97 Constant: +0:97 5 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp int) +0:97 'storeTemp' (temp int) +0:98 Sequence +0:98 move second child to first child (temp uint) +0:98 'storeTemp' (temp uint) +0:98 Constant: +0:98 6 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp uint) +0:98 'storeTemp' (temp uint) +0:101 Sequence +0:101 move second child to first child (temp float) +0:101 'storeTemp' (temp float) +0:101 Function Call: SomeValue( (temp float) +0:101 imageStore (temp void) +0:101 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp float) +0:101 'storeTemp' (temp float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf1' (temp float) +0:102 'lf1' (temp float) +0:103 Sequence +0:103 move second child to first child (temp int) +0:103 'storeTemp' (temp int) +0:103 Constant: +0:103 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp int) +0:103 'storeTemp' (temp int) +0:104 Sequence +0:104 move second child to first child (temp uint) +0:104 'storeTemp' (temp uint) +0:104 Constant: +0:104 9 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp uint) +0:104 'storeTemp' (temp uint) +0:107 Function Call: Fn1(f1; (temp float) +0:107 imageLoad (temp float) +0:107 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(i1; (temp int) +0:108 imageLoad (temp int) +0:108 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(u1; (temp uint) +0:109 imageLoad (temp uint) +0:109 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(f1; (temp void) +0:111 'tempArg' (temp float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp float) +0:111 'tempArg' (temp float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(i1; (temp void) +0:112 'tempArg' (temp int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp int) +0:112 'tempArg' (temp int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(u1; (temp void) +0:113 'tempArg' (temp uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp uint) +0:113 'tempArg' (temp uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp float) +0:117 'storeTemp' (temp float) +0:117 imageLoad (temp float) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp float) +0:117 'storeTemp' (temp float) +0:117 imageStore (temp void) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp float) +0:117 'storeTemp' (temp float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp int) +0:118 'storeTemp' (temp int) +0:118 imageLoad (temp int) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp int) +0:118 'storeTemp' (temp int) +0:118 imageStore (temp void) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp int) +0:118 'storeTemp' (temp int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageLoad (temp uint) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp uint) +0:119 'storeTemp' (temp uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp float) +0:121 'storeTemp' (temp float) +0:121 imageLoad (temp float) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp float) +0:121 'storeTemp' (temp float) +0:121 imageStore (temp void) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp float) +0:121 'storeTemp' (temp float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp int) +0:122 'storeTemp' (temp int) +0:122 imageLoad (temp int) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp int) +0:122 'storeTemp' (temp int) +0:122 imageStore (temp void) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp int) +0:122 'storeTemp' (temp int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageLoad (temp uint) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp uint) +0:123 'storeTemp' (temp uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp float) +0:126 'storeTempPre' (temp float) +0:126 imageLoad (temp float) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp float) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:126 Post-Increment (temp float) +0:126 'storeTempPost' (temp float) +0:126 imageStore (temp void) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 imageLoad (temp uint) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 Post-Decrement (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp int) +0:128 'storeTempPre' (temp int) +0:128 imageLoad (temp int) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:128 Post-Increment (temp int) +0:128 'storeTempPost' (temp int) +0:128 imageStore (temp void) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp float) +0:130 'storeTempPre' (temp float) +0:130 imageLoad (temp float) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp float) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:130 Post-Decrement (temp float) +0:130 'storeTempPost' (temp float) +0:130 imageStore (temp void) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp int) +0:131 'storeTempPre' (temp int) +0:131 imageLoad (temp int) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:131 Post-Increment (temp int) +0:131 'storeTempPost' (temp int) +0:131 imageStore (temp void) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 imageLoad (temp uint) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 Post-Decrement (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:135 Sequence +0:135 move second child to first child (temp float) +0:135 'storeTemp' (temp float) +0:? imageLoad (temp float) +0:135 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp float) +0:135 'storeTemp' (temp float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:42 Function Definition: Fn1(i1; (temp int) +0:42 Function Parameters: +0:42 'x' (in int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in int) +0:43 Function Definition: Fn1(u1; (temp uint) +0:43 Function Parameters: +0:43 'x' (in uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in uint) +0:44 Function Definition: Fn1(f1; (temp float) +0:44 Function Parameters: +0:44 'x' (in float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in float) +0:46 Function Definition: Fn2(i1; (temp void) +0:46 Function Parameters: +0:46 'x' (out int) +0:? Sequence +0:46 move second child to first child (temp int) +0:46 'x' (out int) +0:46 Constant: +0:46 0 (const int) +0:47 Function Definition: Fn2(u1; (temp void) +0:47 Function Parameters: +0:47 'x' (out uint) +0:? Sequence +0:47 move second child to first child (temp uint) +0:47 'x' (out uint) +0:47 Constant: +0:47 0 (const uint) +0:48 Function Definition: Fn2(f1; (temp void) +0:48 Function Parameters: +0:48 'x' (out float) +0:? Sequence +0:48 move second child to first child (temp float) +0:48 'x' (out float) +0:48 Constant: +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp float) +0:50 c1: direct index for structure (layout(offset=0 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:50 Constant: +0:50 0 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp float) +0:57 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp float) +0:59 'r00' (temp float) +0:59 imageLoad (temp float) +0:59 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp int) +0:60 'r01' (temp int) +0:60 imageLoad (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp uint) +0:61 'r02' (temp uint) +0:61 imageLoad (temp uint) +0:61 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp float) +0:64 'r10' (temp float) +0:64 imageLoad (temp float) +0:64 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp int) +0:65 'r11' (temp int) +0:65 imageLoad (temp int) +0:65 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp uint) +0:66 'r12' (temp uint) +0:66 imageLoad (temp uint) +0:66 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp float) +0:69 'r20' (temp float) +0:69 imageLoad (temp float) +0:69 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp int) +0:70 'r21' (temp int) +0:70 imageLoad (temp int) +0:70 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp uint) +0:71 'r22' (temp uint) +0:71 imageLoad (temp uint) +0:71 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp float) +0:73 'lf1' (temp float) +0:73 uf1: direct index for structure (layout(offset=96 ) uniform float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp float) +0:77 'storeTemp' (temp float) +0:77 Function Call: SomeValue( (temp float) +0:77 imageStore (temp void) +0:77 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp float) +0:77 'storeTemp' (temp float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf1' (temp float) +0:78 'lf1' (temp float) +0:79 Sequence +0:79 move second child to first child (temp int) +0:79 'storeTemp' (temp int) +0:79 Constant: +0:79 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp int) +0:79 'storeTemp' (temp int) +0:80 Sequence +0:80 move second child to first child (temp uint) +0:80 'storeTemp' (temp uint) +0:80 Constant: +0:80 3 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp uint) +0:80 'storeTemp' (temp uint) +0:83 Sequence +0:83 move second child to first child (temp float) +0:83 'val1' (temp float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp float) +0:83 'storeTemp' (temp float) +0:83 imageLoad (temp float) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 multiply second child into first child (temp float) +0:83 'storeTemp' (temp float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp float) +0:83 'storeTemp' (temp float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp float) +0:84 'storeTemp' (temp float) +0:84 imageLoad (temp float) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp float) +0:84 'storeTemp' (temp float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp float) +0:84 'storeTemp' (temp float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp float) +0:85 'storeTemp' (temp float) +0:85 imageLoad (temp float) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp float) +0:85 'storeTemp' (temp float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp float) +0:85 'storeTemp' (temp float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp int) +0:87 'storeTemp' (temp int) +0:87 imageLoad (temp int) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp int) +0:87 'storeTemp' (temp int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp int) +0:87 'storeTemp' (temp int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp int) +0:88 'storeTemp' (temp int) +0:88 imageLoad (temp int) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp int) +0:88 'storeTemp' (temp int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp int) +0:88 'storeTemp' (temp int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp int) +0:89 'storeTemp' (temp int) +0:89 imageLoad (temp int) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp int) +0:89 'storeTemp' (temp int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp int) +0:89 'storeTemp' (temp int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp int) +0:90 'storeTemp' (temp int) +0:90 imageLoad (temp int) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp int) +0:90 'storeTemp' (temp int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp int) +0:90 'storeTemp' (temp int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp int) +0:91 'storeTemp' (temp int) +0:91 imageLoad (temp int) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp int) +0:91 'storeTemp' (temp int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp int) +0:91 'storeTemp' (temp int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp int) +0:92 'storeTemp' (temp int) +0:92 imageLoad (temp int) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp int) +0:92 'storeTemp' (temp int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp int) +0:92 'storeTemp' (temp int) +0:95 Sequence +0:95 move second child to first child (temp float) +0:95 'storeTemp' (temp float) +0:95 Function Call: SomeValue( (temp float) +0:95 imageStore (temp void) +0:95 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp float) +0:95 'storeTemp' (temp float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf1' (temp float) +0:96 'lf1' (temp float) +0:97 Sequence +0:97 move second child to first child (temp int) +0:97 'storeTemp' (temp int) +0:97 Constant: +0:97 5 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp int) +0:97 'storeTemp' (temp int) +0:98 Sequence +0:98 move second child to first child (temp uint) +0:98 'storeTemp' (temp uint) +0:98 Constant: +0:98 6 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp uint) +0:98 'storeTemp' (temp uint) +0:101 Sequence +0:101 move second child to first child (temp float) +0:101 'storeTemp' (temp float) +0:101 Function Call: SomeValue( (temp float) +0:101 imageStore (temp void) +0:101 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp float) +0:101 'storeTemp' (temp float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf1' (temp float) +0:102 'lf1' (temp float) +0:103 Sequence +0:103 move second child to first child (temp int) +0:103 'storeTemp' (temp int) +0:103 Constant: +0:103 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp int) +0:103 'storeTemp' (temp int) +0:104 Sequence +0:104 move second child to first child (temp uint) +0:104 'storeTemp' (temp uint) +0:104 Constant: +0:104 9 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp uint) +0:104 'storeTemp' (temp uint) +0:107 Function Call: Fn1(f1; (temp float) +0:107 imageLoad (temp float) +0:107 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(i1; (temp int) +0:108 imageLoad (temp int) +0:108 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(u1; (temp uint) +0:109 imageLoad (temp uint) +0:109 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(f1; (temp void) +0:111 'tempArg' (temp float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp float) +0:111 'tempArg' (temp float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(i1; (temp void) +0:112 'tempArg' (temp int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp int) +0:112 'tempArg' (temp int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(u1; (temp void) +0:113 'tempArg' (temp uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp uint) +0:113 'tempArg' (temp uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp float) +0:117 'storeTemp' (temp float) +0:117 imageLoad (temp float) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp float) +0:117 'storeTemp' (temp float) +0:117 imageStore (temp void) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp float) +0:117 'storeTemp' (temp float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp int) +0:118 'storeTemp' (temp int) +0:118 imageLoad (temp int) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp int) +0:118 'storeTemp' (temp int) +0:118 imageStore (temp void) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp int) +0:118 'storeTemp' (temp int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageLoad (temp uint) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp uint) +0:119 'storeTemp' (temp uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp float) +0:121 'storeTemp' (temp float) +0:121 imageLoad (temp float) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp float) +0:121 'storeTemp' (temp float) +0:121 imageStore (temp void) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp float) +0:121 'storeTemp' (temp float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp int) +0:122 'storeTemp' (temp int) +0:122 imageLoad (temp int) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp int) +0:122 'storeTemp' (temp int) +0:122 imageStore (temp void) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp int) +0:122 'storeTemp' (temp int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageLoad (temp uint) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp uint) +0:123 'storeTemp' (temp uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp float) +0:126 'storeTempPre' (temp float) +0:126 imageLoad (temp float) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp float) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:126 Post-Increment (temp float) +0:126 'storeTempPost' (temp float) +0:126 imageStore (temp void) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 imageLoad (temp uint) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 Post-Decrement (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp int) +0:128 'storeTempPre' (temp int) +0:128 imageLoad (temp int) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:128 Post-Increment (temp int) +0:128 'storeTempPost' (temp int) +0:128 imageStore (temp void) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp float) +0:130 'storeTempPre' (temp float) +0:130 imageLoad (temp float) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp float) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:130 Post-Decrement (temp float) +0:130 'storeTempPost' (temp float) +0:130 imageStore (temp void) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp int) +0:131 'storeTempPre' (temp int) +0:131 imageLoad (temp int) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:131 Post-Increment (temp int) +0:131 'storeTempPost' (temp int) +0:131 imageStore (temp void) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 imageLoad (temp uint) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 Post-Decrement (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:135 Sequence +0:135 move second child to first child (temp float) +0:135 'storeTemp' (temp float) +0:? imageLoad (temp float) +0:135 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp float) +0:135 'storeTemp' (temp float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 566 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 541 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 10 "Fn1(i1;" + Name 9 "x" + Name 16 "Fn1(u1;" + Name 15 "x" + Name 22 "Fn1(f1;" + Name 21 "x" + Name 26 "Fn2(i1;" + Name 25 "x" + Name 30 "Fn2(u1;" + Name 29 "x" + Name 34 "Fn2(f1;" + Name 33 "x" + Name 37 "SomeValue(" + Name 54 "$Global" + MemberName 54($Global) 0 "c1" + MemberName 54($Global) 1 "c2" + MemberName 54($Global) 2 "c3" + MemberName 54($Global) 3 "c4" + MemberName 54($Global) 4 "o1" + MemberName 54($Global) 5 "o2" + MemberName 54($Global) 6 "o3" + MemberName 54($Global) 7 "o4" + MemberName 54($Global) 8 "uf1" + MemberName 54($Global) 9 "ui1" + MemberName 54($Global) 10 "uu1" + Name 56 "" + Name 65 "g_tTex1df1" + Name 70 "r00" + Name 75 "r01" + Name 78 "g_tTex1di1" + Name 83 "r02" + Name 86 "g_tTex1du1" + Name 91 "r10" + Name 94 "g_tTex2df1" + Name 101 "r11" + Name 104 "g_tTex2di1" + Name 109 "r12" + Name 112 "g_tTex2du1" + Name 117 "r20" + Name 120 "g_tTex3df1" + Name 127 "r21" + Name 130 "g_tTex3di1" + Name 135 "r22" + Name 138 "g_tTex3du1" + Name 143 "lf1" + Name 148 "storeTemp" + Name 158 "storeTemp" + Name 163 "storeTemp" + Name 169 "val1" + Name 170 "coordTemp" + Name 173 "storeTemp" + Name 184 "coordTemp" + Name 187 "storeTemp" + Name 197 "coordTemp" + Name 200 "storeTemp" + Name 210 "coordTemp" + Name 213 "storeTemp" + Name 222 "coordTemp" + Name 225 "storeTemp" + Name 234 "coordTemp" + Name 237 "storeTemp" + Name 247 "coordTemp" + Name 250 "storeTemp" + Name 260 "coordTemp" + Name 263 "storeTemp" + Name 272 "coordTemp" + Name 275 "storeTemp" + Name 284 "storeTemp" + Name 294 "storeTemp" + Name 300 "storeTemp" + Name 306 "storeTemp" + Name 316 "storeTemp" + Name 321 "storeTemp" + Name 331 "param" + Name 337 "param" + Name 343 "param" + Name 345 "tempArg" + Name 346 "param" + Name 353 "tempArg" + Name 354 "param" + Name 361 "tempArg" + Name 362 "param" + Name 369 "coordTemp" + Name 372 "storeTemp" + Name 382 "coordTemp" + Name 385 "storeTemp" + Name 394 "coordTemp" + Name 397 "storeTemp" + Name 406 "coordTemp" + Name 409 "storeTemp" + Name 418 "coordTemp" + Name 421 "storeTemp" + Name 430 "coordTemp" + Name 433 "storeTemp" + Name 442 "coordTemp" + Name 445 "storeTempPre" + Name 449 "storeTempPost" + Name 456 "coordTemp" + Name 459 "storeTempPre" + Name 463 "storeTempPost" + Name 470 "coordTemp" + Name 473 "storeTempPre" + Name 477 "storeTempPost" + Name 484 "coordTemp" + Name 487 "storeTempPre" + Name 491 "storeTempPost" + Name 498 "coordTemp" + Name 501 "storeTempPre" + Name 505 "storeTempPost" + Name 512 "coordTemp" + Name 515 "storeTempPre" + Name 519 "storeTempPost" + Name 526 "storeTemp" + Name 534 "PS_OUTPUT" + MemberName 534(PS_OUTPUT) 0 "Color" + Name 536 "psout" + Name 541 "Color" + Name 547 "g_sSamp" + Name 550 "g_tTex1df1a" + Name 553 "g_tTex1di1a" + Name 556 "g_tTex1du1a" + Name 559 "g_tTex2df1a" + Name 562 "g_tTex2di1a" + Name 565 "g_tTex2du1a" + MemberDecorate 54($Global) 0 Offset 0 + MemberDecorate 54($Global) 1 Offset 8 + MemberDecorate 54($Global) 2 Offset 16 + MemberDecorate 54($Global) 3 Offset 32 + MemberDecorate 54($Global) 4 Offset 48 + MemberDecorate 54($Global) 5 Offset 56 + MemberDecorate 54($Global) 6 Offset 64 + MemberDecorate 54($Global) 7 Offset 80 + MemberDecorate 54($Global) 8 Offset 96 + MemberDecorate 54($Global) 9 Offset 100 + MemberDecorate 54($Global) 10 Offset 104 + Decorate 54($Global) Block + Decorate 56 DescriptorSet 0 + Decorate 65(g_tTex1df1) DescriptorSet 0 + Decorate 78(g_tTex1di1) DescriptorSet 0 + Decorate 86(g_tTex1du1) DescriptorSet 0 + Decorate 94(g_tTex2df1) DescriptorSet 0 + Decorate 104(g_tTex2di1) DescriptorSet 0 + Decorate 112(g_tTex2du1) DescriptorSet 0 + Decorate 120(g_tTex3df1) DescriptorSet 0 + Decorate 130(g_tTex3di1) DescriptorSet 0 + Decorate 138(g_tTex3du1) DescriptorSet 0 + Decorate 541(Color) Location 0 + Decorate 547(g_sSamp) DescriptorSet 0 + Decorate 547(g_sSamp) Binding 0 + Decorate 550(g_tTex1df1a) DescriptorSet 0 + Decorate 553(g_tTex1di1a) DescriptorSet 0 + Decorate 556(g_tTex1du1a) DescriptorSet 0 + Decorate 559(g_tTex2df1a) DescriptorSet 0 + Decorate 562(g_tTex2di1a) DescriptorSet 0 + Decorate 565(g_tTex2du1a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 8: TypeFunction 6(int) 7(ptr) + 12: TypeInt 32 0 + 13: TypePointer Function 12(int) + 14: TypeFunction 12(int) 13(ptr) + 18: TypeFloat 32 + 19: TypePointer Function 18(float) + 20: TypeFunction 18(float) 19(ptr) + 24: TypeFunction 2 7(ptr) + 28: TypeFunction 2 13(ptr) + 32: TypeFunction 2 19(ptr) + 36: TypeFunction 18(float) + 48: 6(int) Constant 0 + 49: 12(int) Constant 0 + 50: 18(float) Constant 0 + 51: TypeVector 6(int) 2 + 52: TypeVector 6(int) 3 + 53: TypeVector 6(int) 4 + 54($Global): TypeStruct 6(int) 51(ivec2) 52(ivec3) 53(ivec4) 6(int) 51(ivec2) 52(ivec3) 53(ivec4) 18(float) 6(int) 12(int) + 55: TypePointer Uniform 54($Global) + 56: 55(ptr) Variable Uniform + 57: TypePointer Uniform 6(int) + 63: TypeImage 18(float) 1D nonsampled format:R32f + 64: TypePointer UniformConstant 63 + 65(g_tTex1df1): 64(ptr) Variable UniformConstant + 76: TypeImage 6(int) 1D nonsampled format:R32i + 77: TypePointer UniformConstant 76 + 78(g_tTex1di1): 77(ptr) Variable UniformConstant + 84: TypeImage 12(int) 1D nonsampled format:R32ui + 85: TypePointer UniformConstant 84 + 86(g_tTex1du1): 85(ptr) Variable UniformConstant + 92: TypeImage 18(float) 2D nonsampled format:R32f + 93: TypePointer UniformConstant 92 + 94(g_tTex2df1): 93(ptr) Variable UniformConstant + 96: 6(int) Constant 1 + 97: TypePointer Uniform 51(ivec2) + 102: TypeImage 6(int) 2D nonsampled format:R32i + 103: TypePointer UniformConstant 102 + 104(g_tTex2di1): 103(ptr) Variable UniformConstant + 110: TypeImage 12(int) 2D nonsampled format:R32ui + 111: TypePointer UniformConstant 110 + 112(g_tTex2du1): 111(ptr) Variable UniformConstant + 118: TypeImage 18(float) 3D nonsampled format:R32f + 119: TypePointer UniformConstant 118 + 120(g_tTex3df1): 119(ptr) Variable UniformConstant + 122: 6(int) Constant 2 + 123: TypePointer Uniform 52(ivec3) + 128: TypeImage 6(int) 3D nonsampled format:R32i + 129: TypePointer UniformConstant 128 + 130(g_tTex3di1): 129(ptr) Variable UniformConstant + 136: TypeImage 12(int) 3D nonsampled format:R32ui + 137: TypePointer UniformConstant 136 + 138(g_tTex3du1): 137(ptr) Variable UniformConstant + 144: 6(int) Constant 8 + 145: TypePointer Uniform 18(float) + 164: 12(int) Constant 3 + 177: 18(float) Constant 1073741824 + 191: 18(float) Constant 1077936128 + 204: 18(float) Constant 1082130432 + 241: 6(int) Constant 65535 + 254: 6(int) Constant 61680 + 295: 6(int) Constant 5 + 301: 12(int) Constant 6 + 322: 12(int) Constant 9 + 377: 18(float) Constant 1065353216 + 528: 6(int) Constant 3 + 529: 51(ivec2) ConstantComposite 122 528 + 533: TypeVector 18(float) 4 + 534(PS_OUTPUT): TypeStruct 533(fvec4) + 535: TypePointer Function 534(PS_OUTPUT) + 537: 533(fvec4) ConstantComposite 377 377 377 377 + 538: TypePointer Function 533(fvec4) + 540: TypePointer Output 533(fvec4) + 541(Color): 540(ptr) Variable Output + 545: TypeSampler + 546: TypePointer UniformConstant 545 + 547(g_sSamp): 546(ptr) Variable UniformConstant + 548: TypeImage 18(float) 1D array nonsampled format:R32f + 549: TypePointer UniformConstant 548 +550(g_tTex1df1a): 549(ptr) Variable UniformConstant + 551: TypeImage 6(int) 1D array nonsampled format:R32i + 552: TypePointer UniformConstant 551 +553(g_tTex1di1a): 552(ptr) Variable UniformConstant + 554: TypeImage 12(int) 1D array nonsampled format:R32ui + 555: TypePointer UniformConstant 554 +556(g_tTex1du1a): 555(ptr) Variable UniformConstant + 557: TypeImage 18(float) 2D array nonsampled format:R32f + 558: TypePointer UniformConstant 557 +559(g_tTex2df1a): 558(ptr) Variable UniformConstant + 560: TypeImage 6(int) 2D array nonsampled format:R32i + 561: TypePointer UniformConstant 560 +562(g_tTex2di1a): 561(ptr) Variable UniformConstant + 563: TypeImage 12(int) 2D array nonsampled format:R32ui + 564: TypePointer UniformConstant 563 +565(g_tTex2du1a): 564(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 70(r00): 19(ptr) Variable Function + 75(r01): 7(ptr) Variable Function + 83(r02): 13(ptr) Variable Function + 91(r10): 19(ptr) Variable Function + 101(r11): 7(ptr) Variable Function + 109(r12): 13(ptr) Variable Function + 117(r20): 19(ptr) Variable Function + 127(r21): 7(ptr) Variable Function + 135(r22): 13(ptr) Variable Function + 143(lf1): 19(ptr) Variable Function + 148(storeTemp): 19(ptr) Variable Function + 158(storeTemp): 7(ptr) Variable Function + 163(storeTemp): 13(ptr) Variable Function + 169(val1): 19(ptr) Variable Function + 170(coordTemp): 7(ptr) Variable Function + 173(storeTemp): 19(ptr) Variable Function + 184(coordTemp): 7(ptr) Variable Function + 187(storeTemp): 19(ptr) Variable Function + 197(coordTemp): 7(ptr) Variable Function + 200(storeTemp): 19(ptr) Variable Function + 210(coordTemp): 7(ptr) Variable Function + 213(storeTemp): 7(ptr) Variable Function + 222(coordTemp): 7(ptr) Variable Function + 225(storeTemp): 7(ptr) Variable Function + 234(coordTemp): 7(ptr) Variable Function + 237(storeTemp): 7(ptr) Variable Function + 247(coordTemp): 7(ptr) Variable Function + 250(storeTemp): 7(ptr) Variable Function + 260(coordTemp): 7(ptr) Variable Function + 263(storeTemp): 7(ptr) Variable Function + 272(coordTemp): 7(ptr) Variable Function + 275(storeTemp): 7(ptr) Variable Function + 284(storeTemp): 19(ptr) Variable Function + 294(storeTemp): 7(ptr) Variable Function + 300(storeTemp): 13(ptr) Variable Function + 306(storeTemp): 19(ptr) Variable Function + 316(storeTemp): 7(ptr) Variable Function + 321(storeTemp): 13(ptr) Variable Function + 331(param): 19(ptr) Variable Function + 337(param): 7(ptr) Variable Function + 343(param): 13(ptr) Variable Function + 345(tempArg): 19(ptr) Variable Function + 346(param): 19(ptr) Variable Function + 353(tempArg): 7(ptr) Variable Function + 354(param): 7(ptr) Variable Function + 361(tempArg): 13(ptr) Variable Function + 362(param): 13(ptr) Variable Function + 369(coordTemp): 7(ptr) Variable Function + 372(storeTemp): 19(ptr) Variable Function + 382(coordTemp): 7(ptr) Variable Function + 385(storeTemp): 7(ptr) Variable Function + 394(coordTemp): 7(ptr) Variable Function + 397(storeTemp): 13(ptr) Variable Function + 406(coordTemp): 7(ptr) Variable Function + 409(storeTemp): 19(ptr) Variable Function + 418(coordTemp): 7(ptr) Variable Function + 421(storeTemp): 7(ptr) Variable Function + 430(coordTemp): 7(ptr) Variable Function + 433(storeTemp): 13(ptr) Variable Function + 442(coordTemp): 7(ptr) Variable Function +445(storeTempPre): 19(ptr) Variable Function +449(storeTempPost): 19(ptr) Variable Function + 456(coordTemp): 7(ptr) Variable Function +459(storeTempPre): 13(ptr) Variable Function +463(storeTempPost): 13(ptr) Variable Function + 470(coordTemp): 7(ptr) Variable Function +473(storeTempPre): 7(ptr) Variable Function +477(storeTempPost): 7(ptr) Variable Function + 484(coordTemp): 7(ptr) Variable Function +487(storeTempPre): 19(ptr) Variable Function +491(storeTempPost): 19(ptr) Variable Function + 498(coordTemp): 7(ptr) Variable Function +501(storeTempPre): 7(ptr) Variable Function +505(storeTempPost): 7(ptr) Variable Function + 512(coordTemp): 7(ptr) Variable Function +515(storeTempPre): 13(ptr) Variable Function +519(storeTempPost): 13(ptr) Variable Function + 526(storeTemp): 19(ptr) Variable Function + 536(psout): 535(ptr) Variable Function + 66: 63 Load 65(g_tTex1df1) + 67: 57(ptr) AccessChain 56 48 + 68: 6(int) Load 67 + 69: 18(float) ImageRead 66 68 + 71: 63 Load 65(g_tTex1df1) + 72: 57(ptr) AccessChain 56 48 + 73: 6(int) Load 72 + 74: 18(float) ImageRead 71 73 + Store 70(r00) 74 + 79: 76 Load 78(g_tTex1di1) + 80: 57(ptr) AccessChain 56 48 + 81: 6(int) Load 80 + 82: 6(int) ImageRead 79 81 + Store 75(r01) 82 + 87: 84 Load 86(g_tTex1du1) + 88: 57(ptr) AccessChain 56 48 + 89: 6(int) Load 88 + 90: 12(int) ImageRead 87 89 + Store 83(r02) 90 + 95: 92 Load 94(g_tTex2df1) + 98: 97(ptr) AccessChain 56 96 + 99: 51(ivec2) Load 98 + 100: 18(float) ImageRead 95 99 + Store 91(r10) 100 + 105: 102 Load 104(g_tTex2di1) + 106: 97(ptr) AccessChain 56 96 + 107: 51(ivec2) Load 106 + 108: 6(int) ImageRead 105 107 + Store 101(r11) 108 + 113: 110 Load 112(g_tTex2du1) + 114: 97(ptr) AccessChain 56 96 + 115: 51(ivec2) Load 114 + 116: 12(int) ImageRead 113 115 + Store 109(r12) 116 + 121: 118 Load 120(g_tTex3df1) + 124: 123(ptr) AccessChain 56 122 + 125: 52(ivec3) Load 124 + 126: 18(float) ImageRead 121 125 + Store 117(r20) 126 + 131: 128 Load 130(g_tTex3di1) + 132: 123(ptr) AccessChain 56 122 + 133: 52(ivec3) Load 132 + 134: 6(int) ImageRead 131 133 + Store 127(r21) 134 + 139: 136 Load 138(g_tTex3du1) + 140: 123(ptr) AccessChain 56 122 + 141: 52(ivec3) Load 140 + 142: 12(int) ImageRead 139 141 + Store 135(r22) 142 + 146: 145(ptr) AccessChain 56 144 + 147: 18(float) Load 146 + Store 143(lf1) 147 + 149: 18(float) FunctionCall 37(SomeValue() + Store 148(storeTemp) 149 + 150: 63 Load 65(g_tTex1df1) + 151: 57(ptr) AccessChain 56 48 + 152: 6(int) Load 151 + 153: 18(float) Load 148(storeTemp) + ImageWrite 150 152 153 + 154: 63 Load 65(g_tTex1df1) + 155: 57(ptr) AccessChain 56 48 + 156: 6(int) Load 155 + 157: 18(float) Load 143(lf1) + ImageWrite 154 156 157 + Store 158(storeTemp) 122 + 159: 76 Load 78(g_tTex1di1) + 160: 57(ptr) AccessChain 56 48 + 161: 6(int) Load 160 + 162: 6(int) Load 158(storeTemp) + ImageWrite 159 161 162 + Store 163(storeTemp) 164 + 165: 84 Load 86(g_tTex1du1) + 166: 57(ptr) AccessChain 56 48 + 167: 6(int) Load 166 + 168: 12(int) Load 163(storeTemp) + ImageWrite 165 167 168 + 171: 57(ptr) AccessChain 56 48 + 172: 6(int) Load 171 + Store 170(coordTemp) 172 + 174: 63 Load 65(g_tTex1df1) + 175: 6(int) Load 170(coordTemp) + 176: 18(float) ImageRead 174 175 + Store 173(storeTemp) 176 + 178: 18(float) Load 173(storeTemp) + 179: 18(float) FMul 178 177 + Store 173(storeTemp) 179 + 180: 63 Load 65(g_tTex1df1) + 181: 6(int) Load 170(coordTemp) + 182: 18(float) Load 173(storeTemp) + ImageWrite 180 181 182 + 183: 18(float) Load 173(storeTemp) + Store 169(val1) 183 + 185: 57(ptr) AccessChain 56 48 + 186: 6(int) Load 185 + Store 184(coordTemp) 186 + 188: 63 Load 65(g_tTex1df1) + 189: 6(int) Load 184(coordTemp) + 190: 18(float) ImageRead 188 189 + Store 187(storeTemp) 190 + 192: 18(float) Load 187(storeTemp) + 193: 18(float) FSub 192 191 + Store 187(storeTemp) 193 + 194: 63 Load 65(g_tTex1df1) + 195: 6(int) Load 184(coordTemp) + 196: 18(float) Load 187(storeTemp) + ImageWrite 194 195 196 + 198: 57(ptr) AccessChain 56 48 + 199: 6(int) Load 198 + Store 197(coordTemp) 199 + 201: 63 Load 65(g_tTex1df1) + 202: 6(int) Load 197(coordTemp) + 203: 18(float) ImageRead 201 202 + Store 200(storeTemp) 203 + 205: 18(float) Load 200(storeTemp) + 206: 18(float) FAdd 205 204 + Store 200(storeTemp) 206 + 207: 63 Load 65(g_tTex1df1) + 208: 6(int) Load 197(coordTemp) + 209: 18(float) Load 200(storeTemp) + ImageWrite 207 208 209 + 211: 57(ptr) AccessChain 56 48 + 212: 6(int) Load 211 + Store 210(coordTemp) 212 + 214: 76 Load 78(g_tTex1di1) + 215: 6(int) Load 210(coordTemp) + 216: 6(int) ImageRead 214 215 + Store 213(storeTemp) 216 + 217: 6(int) Load 213(storeTemp) + 218: 6(int) SDiv 217 122 + Store 213(storeTemp) 218 + 219: 76 Load 78(g_tTex1di1) + 220: 6(int) Load 210(coordTemp) + 221: 6(int) Load 213(storeTemp) + ImageWrite 219 220 221 + 223: 57(ptr) AccessChain 56 48 + 224: 6(int) Load 223 + Store 222(coordTemp) 224 + 226: 76 Load 78(g_tTex1di1) + 227: 6(int) Load 222(coordTemp) + 228: 6(int) ImageRead 226 227 + Store 225(storeTemp) 228 + 229: 6(int) Load 225(storeTemp) + 230: 6(int) SMod 229 122 + Store 225(storeTemp) 230 + 231: 76 Load 78(g_tTex1di1) + 232: 6(int) Load 222(coordTemp) + 233: 6(int) Load 225(storeTemp) + ImageWrite 231 232 233 + 235: 57(ptr) AccessChain 56 48 + 236: 6(int) Load 235 + Store 234(coordTemp) 236 + 238: 76 Load 78(g_tTex1di1) + 239: 6(int) Load 234(coordTemp) + 240: 6(int) ImageRead 238 239 + Store 237(storeTemp) 240 + 242: 6(int) Load 237(storeTemp) + 243: 6(int) BitwiseAnd 242 241 + Store 237(storeTemp) 243 + 244: 76 Load 78(g_tTex1di1) + 245: 6(int) Load 234(coordTemp) + 246: 6(int) Load 237(storeTemp) + ImageWrite 244 245 246 + 248: 57(ptr) AccessChain 56 48 + 249: 6(int) Load 248 + Store 247(coordTemp) 249 + 251: 76 Load 78(g_tTex1di1) + 252: 6(int) Load 247(coordTemp) + 253: 6(int) ImageRead 251 252 + Store 250(storeTemp) 253 + 255: 6(int) Load 250(storeTemp) + 256: 6(int) BitwiseOr 255 254 + Store 250(storeTemp) 256 + 257: 76 Load 78(g_tTex1di1) + 258: 6(int) Load 247(coordTemp) + 259: 6(int) Load 250(storeTemp) + ImageWrite 257 258 259 + 261: 57(ptr) AccessChain 56 48 + 262: 6(int) Load 261 + Store 260(coordTemp) 262 + 264: 76 Load 78(g_tTex1di1) + 265: 6(int) Load 260(coordTemp) + 266: 6(int) ImageRead 264 265 + Store 263(storeTemp) 266 + 267: 6(int) Load 263(storeTemp) + 268: 6(int) ShiftLeftLogical 267 122 + Store 263(storeTemp) 268 + 269: 76 Load 78(g_tTex1di1) + 270: 6(int) Load 260(coordTemp) + 271: 6(int) Load 263(storeTemp) + ImageWrite 269 270 271 + 273: 57(ptr) AccessChain 56 48 + 274: 6(int) Load 273 + Store 272(coordTemp) 274 + 276: 76 Load 78(g_tTex1di1) + 277: 6(int) Load 272(coordTemp) + 278: 6(int) ImageRead 276 277 + Store 275(storeTemp) 278 + 279: 6(int) Load 275(storeTemp) + 280: 6(int) ShiftRightArithmetic 279 122 + Store 275(storeTemp) 280 + 281: 76 Load 78(g_tTex1di1) + 282: 6(int) Load 272(coordTemp) + 283: 6(int) Load 275(storeTemp) + ImageWrite 281 282 283 + 285: 18(float) FunctionCall 37(SomeValue() + Store 284(storeTemp) 285 + 286: 92 Load 94(g_tTex2df1) + 287: 97(ptr) AccessChain 56 96 + 288: 51(ivec2) Load 287 + 289: 18(float) Load 284(storeTemp) + ImageWrite 286 288 289 + 290: 92 Load 94(g_tTex2df1) + 291: 97(ptr) AccessChain 56 96 + 292: 51(ivec2) Load 291 + 293: 18(float) Load 143(lf1) + ImageWrite 290 292 293 + Store 294(storeTemp) 295 + 296: 102 Load 104(g_tTex2di1) + 297: 97(ptr) AccessChain 56 96 + 298: 51(ivec2) Load 297 + 299: 6(int) Load 294(storeTemp) + ImageWrite 296 298 299 + Store 300(storeTemp) 301 + 302: 110 Load 112(g_tTex2du1) + 303: 97(ptr) AccessChain 56 96 + 304: 51(ivec2) Load 303 + 305: 12(int) Load 300(storeTemp) + ImageWrite 302 304 305 + 307: 18(float) FunctionCall 37(SomeValue() + Store 306(storeTemp) 307 + 308: 118 Load 120(g_tTex3df1) + 309: 123(ptr) AccessChain 56 122 + 310: 52(ivec3) Load 309 + 311: 18(float) Load 306(storeTemp) + ImageWrite 308 310 311 + 312: 118 Load 120(g_tTex3df1) + 313: 123(ptr) AccessChain 56 122 + 314: 52(ivec3) Load 313 + 315: 18(float) Load 143(lf1) + ImageWrite 312 314 315 + Store 316(storeTemp) 144 + 317: 128 Load 130(g_tTex3di1) + 318: 123(ptr) AccessChain 56 122 + 319: 52(ivec3) Load 318 + 320: 6(int) Load 316(storeTemp) + ImageWrite 317 319 320 + Store 321(storeTemp) 322 + 323: 136 Load 138(g_tTex3du1) + 324: 123(ptr) AccessChain 56 122 + 325: 52(ivec3) Load 324 + 326: 12(int) Load 321(storeTemp) + ImageWrite 323 325 326 + 327: 63 Load 65(g_tTex1df1) + 328: 57(ptr) AccessChain 56 48 + 329: 6(int) Load 328 + 330: 18(float) ImageRead 327 329 + Store 331(param) 330 + 332: 18(float) FunctionCall 22(Fn1(f1;) 331(param) + 333: 76 Load 78(g_tTex1di1) + 334: 57(ptr) AccessChain 56 48 + 335: 6(int) Load 334 + 336: 6(int) ImageRead 333 335 + Store 337(param) 336 + 338: 6(int) FunctionCall 10(Fn1(i1;) 337(param) + 339: 84 Load 86(g_tTex1du1) + 340: 57(ptr) AccessChain 56 48 + 341: 6(int) Load 340 + 342: 12(int) ImageRead 339 341 + Store 343(param) 342 + 344: 12(int) FunctionCall 16(Fn1(u1;) 343(param) + 347: 2 FunctionCall 34(Fn2(f1;) 346(param) + 348: 18(float) Load 346(param) + Store 345(tempArg) 348 + 349: 63 Load 65(g_tTex1df1) + 350: 57(ptr) AccessChain 56 48 + 351: 6(int) Load 350 + 352: 18(float) Load 345(tempArg) + ImageWrite 349 351 352 + 355: 2 FunctionCall 26(Fn2(i1;) 354(param) + 356: 6(int) Load 354(param) + Store 353(tempArg) 356 + 357: 76 Load 78(g_tTex1di1) + 358: 57(ptr) AccessChain 56 48 + 359: 6(int) Load 358 + 360: 6(int) Load 353(tempArg) + ImageWrite 357 359 360 + 363: 2 FunctionCall 30(Fn2(u1;) 362(param) + 364: 12(int) Load 362(param) + Store 361(tempArg) 364 + 365: 84 Load 86(g_tTex1du1) + 366: 57(ptr) AccessChain 56 48 + 367: 6(int) Load 366 + 368: 12(int) Load 361(tempArg) + ImageWrite 365 367 368 + 370: 57(ptr) AccessChain 56 48 + 371: 6(int) Load 370 + Store 369(coordTemp) 371 + 373: 63 Load 65(g_tTex1df1) + 374: 6(int) Load 369(coordTemp) + 375: 18(float) ImageRead 373 374 + Store 372(storeTemp) 375 + 376: 18(float) Load 372(storeTemp) + 378: 18(float) FAdd 376 377 + Store 372(storeTemp) 378 + 379: 63 Load 65(g_tTex1df1) + 380: 6(int) Load 369(coordTemp) + 381: 18(float) Load 372(storeTemp) + ImageWrite 379 380 381 + 383: 57(ptr) AccessChain 56 48 + 384: 6(int) Load 383 + Store 382(coordTemp) 384 + 386: 76 Load 78(g_tTex1di1) + 387: 6(int) Load 382(coordTemp) + 388: 6(int) ImageRead 386 387 + Store 385(storeTemp) 388 + 389: 6(int) Load 385(storeTemp) + 390: 6(int) IAdd 389 96 + Store 385(storeTemp) 390 + 391: 76 Load 78(g_tTex1di1) + 392: 6(int) Load 382(coordTemp) + 393: 6(int) Load 385(storeTemp) + ImageWrite 391 392 393 + 395: 57(ptr) AccessChain 56 48 + 396: 6(int) Load 395 + Store 394(coordTemp) 396 + 398: 84 Load 86(g_tTex1du1) + 399: 6(int) Load 394(coordTemp) + 400: 12(int) ImageRead 398 399 + Store 397(storeTemp) 400 + 401: 12(int) Load 397(storeTemp) + 402: 12(int) IAdd 401 96 + Store 397(storeTemp) 402 + 403: 84 Load 86(g_tTex1du1) + 404: 6(int) Load 394(coordTemp) + 405: 12(int) Load 397(storeTemp) + ImageWrite 403 404 405 + 407: 57(ptr) AccessChain 56 48 + 408: 6(int) Load 407 + Store 406(coordTemp) 408 + 410: 63 Load 65(g_tTex1df1) + 411: 6(int) Load 406(coordTemp) + 412: 18(float) ImageRead 410 411 + Store 409(storeTemp) 412 + 413: 18(float) Load 409(storeTemp) + 414: 18(float) FSub 413 377 + Store 409(storeTemp) 414 + 415: 63 Load 65(g_tTex1df1) + 416: 6(int) Load 406(coordTemp) + 417: 18(float) Load 409(storeTemp) + ImageWrite 415 416 417 + 419: 57(ptr) AccessChain 56 48 + 420: 6(int) Load 419 + Store 418(coordTemp) 420 + 422: 76 Load 78(g_tTex1di1) + 423: 6(int) Load 418(coordTemp) + 424: 6(int) ImageRead 422 423 + Store 421(storeTemp) 424 + 425: 6(int) Load 421(storeTemp) + 426: 6(int) ISub 425 96 + Store 421(storeTemp) 426 + 427: 76 Load 78(g_tTex1di1) + 428: 6(int) Load 418(coordTemp) + 429: 6(int) Load 421(storeTemp) + ImageWrite 427 428 429 + 431: 57(ptr) AccessChain 56 48 + 432: 6(int) Load 431 + Store 430(coordTemp) 432 + 434: 84 Load 86(g_tTex1du1) + 435: 6(int) Load 430(coordTemp) + 436: 12(int) ImageRead 434 435 + Store 433(storeTemp) 436 + 437: 12(int) Load 433(storeTemp) + 438: 12(int) ISub 437 96 + Store 433(storeTemp) 438 + 439: 84 Load 86(g_tTex1du1) + 440: 6(int) Load 430(coordTemp) + 441: 12(int) Load 433(storeTemp) + ImageWrite 439 440 441 + 443: 57(ptr) AccessChain 56 48 + 444: 6(int) Load 443 + Store 442(coordTemp) 444 + 446: 63 Load 65(g_tTex1df1) + 447: 6(int) Load 442(coordTemp) + 448: 18(float) ImageRead 446 447 + Store 445(storeTempPre) 448 + 450: 18(float) Load 445(storeTempPre) + Store 449(storeTempPost) 450 + 451: 18(float) Load 449(storeTempPost) + 452: 18(float) FAdd 451 377 + Store 449(storeTempPost) 452 + 453: 63 Load 65(g_tTex1df1) + 454: 6(int) Load 442(coordTemp) + 455: 18(float) Load 449(storeTempPost) + ImageWrite 453 454 455 + 457: 57(ptr) AccessChain 56 48 + 458: 6(int) Load 457 + Store 456(coordTemp) 458 + 460: 84 Load 86(g_tTex1du1) + 461: 6(int) Load 456(coordTemp) + 462: 12(int) ImageRead 460 461 + Store 459(storeTempPre) 462 + 464: 12(int) Load 459(storeTempPre) + Store 463(storeTempPost) 464 + 465: 12(int) Load 463(storeTempPost) + 466: 12(int) ISub 465 96 + Store 463(storeTempPost) 466 + 467: 84 Load 86(g_tTex1du1) + 468: 6(int) Load 456(coordTemp) + 469: 12(int) Load 463(storeTempPost) + ImageWrite 467 468 469 + 471: 57(ptr) AccessChain 56 48 + 472: 6(int) Load 471 + Store 470(coordTemp) 472 + 474: 76 Load 78(g_tTex1di1) + 475: 6(int) Load 470(coordTemp) + 476: 6(int) ImageRead 474 475 + Store 473(storeTempPre) 476 + 478: 6(int) Load 473(storeTempPre) + Store 477(storeTempPost) 478 + 479: 6(int) Load 477(storeTempPost) + 480: 6(int) IAdd 479 96 + Store 477(storeTempPost) 480 + 481: 76 Load 78(g_tTex1di1) + 482: 6(int) Load 470(coordTemp) + 483: 6(int) Load 477(storeTempPost) + ImageWrite 481 482 483 + 485: 57(ptr) AccessChain 56 48 + 486: 6(int) Load 485 + Store 484(coordTemp) 486 + 488: 63 Load 65(g_tTex1df1) + 489: 6(int) Load 484(coordTemp) + 490: 18(float) ImageRead 488 489 + Store 487(storeTempPre) 490 + 492: 18(float) Load 487(storeTempPre) + Store 491(storeTempPost) 492 + 493: 18(float) Load 491(storeTempPost) + 494: 18(float) FSub 493 377 + Store 491(storeTempPost) 494 + 495: 63 Load 65(g_tTex1df1) + 496: 6(int) Load 484(coordTemp) + 497: 18(float) Load 491(storeTempPost) + ImageWrite 495 496 497 + 499: 57(ptr) AccessChain 56 48 + 500: 6(int) Load 499 + Store 498(coordTemp) 500 + 502: 76 Load 78(g_tTex1di1) + 503: 6(int) Load 498(coordTemp) + 504: 6(int) ImageRead 502 503 + Store 501(storeTempPre) 504 + 506: 6(int) Load 501(storeTempPre) + Store 505(storeTempPost) 506 + 507: 6(int) Load 505(storeTempPost) + 508: 6(int) IAdd 507 96 + Store 505(storeTempPost) 508 + 509: 76 Load 78(g_tTex1di1) + 510: 6(int) Load 498(coordTemp) + 511: 6(int) Load 505(storeTempPost) + ImageWrite 509 510 511 + 513: 57(ptr) AccessChain 56 48 + 514: 6(int) Load 513 + Store 512(coordTemp) 514 + 516: 84 Load 86(g_tTex1du1) + 517: 6(int) Load 512(coordTemp) + 518: 12(int) ImageRead 516 517 + Store 515(storeTempPre) 518 + 520: 12(int) Load 515(storeTempPre) + Store 519(storeTempPost) 520 + 521: 12(int) Load 519(storeTempPost) + 522: 12(int) ISub 521 96 + Store 519(storeTempPost) 522 + 523: 84 Load 86(g_tTex1du1) + 524: 6(int) Load 512(coordTemp) + 525: 12(int) Load 519(storeTempPost) + ImageWrite 523 524 525 + 527: 92 Load 94(g_tTex2df1) + 530: 18(float) ImageRead 527 529 + Store 526(storeTemp) 530 + 531: 63 Load 65(g_tTex1df1) + 532: 18(float) Load 526(storeTemp) + ImageWrite 531 96 532 + 539: 538(ptr) AccessChain 536(psout) 48 + Store 539 537 + 542: 538(ptr) AccessChain 536(psout) 48 + 543: 533(fvec4) Load 542 + Store 541(Color) 543 + Return + FunctionEnd + 10(Fn1(i1;): 6(int) Function None 8 + 9(x): 7(ptr) FunctionParameter + 11: Label + 39: 6(int) Load 9(x) + ReturnValue 39 + FunctionEnd + 16(Fn1(u1;): 12(int) Function None 14 + 15(x): 13(ptr) FunctionParameter + 17: Label + 42: 12(int) Load 15(x) + ReturnValue 42 + FunctionEnd + 22(Fn1(f1;): 18(float) Function None 20 + 21(x): 19(ptr) FunctionParameter + 23: Label + 45: 18(float) Load 21(x) + ReturnValue 45 + FunctionEnd + 26(Fn2(i1;): 2 Function None 24 + 25(x): 7(ptr) FunctionParameter + 27: Label + Store 25(x) 48 + Return + FunctionEnd + 30(Fn2(u1;): 2 Function None 28 + 29(x): 13(ptr) FunctionParameter + 31: Label + Store 29(x) 49 + Return + FunctionEnd + 34(Fn2(f1;): 2 Function None 32 + 33(x): 19(ptr) FunctionParameter + 35: Label + Store 33(x) 50 + Return + FunctionEnd + 37(SomeValue(): 18(float) Function None 36 + 38: Label + 58: 57(ptr) AccessChain 56 48 + 59: 6(int) Load 58 + 60: 18(float) ConvertSToF 59 + ReturnValue 60 + FunctionEnd diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out new file mode 100644 index 00000000..b8452c36 --- /dev/null +++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out @@ -0,0 +1,2613 @@ +hlsl.rw.vec2.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:42 Function Definition: Fn1(vi2; (temp 2-component vector of int) +0:42 Function Parameters: +0:42 'x' (in 2-component vector of int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in 2-component vector of int) +0:43 Function Definition: Fn1(vu2; (temp 2-component vector of uint) +0:43 Function Parameters: +0:43 'x' (in 2-component vector of uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in 2-component vector of uint) +0:44 Function Definition: Fn1(vf2; (temp 2-component vector of float) +0:44 Function Parameters: +0:44 'x' (in 2-component vector of float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in 2-component vector of float) +0:46 Function Definition: Fn2(vi2; (temp void) +0:46 Function Parameters: +0:46 'x' (out 2-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 2-component vector of int) +0:46 'x' (out 2-component vector of int) +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:47 Function Definition: Fn2(vu2; (temp void) +0:47 Function Parameters: +0:47 'x' (out 2-component vector of uint) +0:? Sequence +0:47 move second child to first child (temp 2-component vector of uint) +0:47 'x' (out 2-component vector of uint) +0:? Constant: +0:? 0 (const uint) +0:? 0 (const uint) +0:48 Function Definition: Fn2(vf2; (temp void) +0:48 Function Parameters: +0:48 'x' (out 2-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 2-component vector of float) +0:48 'x' (out 2-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:50 Function Definition: SomeValue( (temp 2-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 2-component vector of float) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:50 Constant: +0:50 1 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 2-component vector of float) +0:57 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 2-component vector of float) +0:59 'r00' (temp 2-component vector of float) +0:59 imageLoad (temp 2-component vector of float) +0:59 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 2-component vector of int) +0:60 'r01' (temp 2-component vector of int) +0:60 imageLoad (temp 2-component vector of int) +0:60 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 2-component vector of uint) +0:61 'r02' (temp 2-component vector of uint) +0:61 imageLoad (temp 2-component vector of uint) +0:61 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 2-component vector of float) +0:64 'r10' (temp 2-component vector of float) +0:64 imageLoad (temp 2-component vector of float) +0:64 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 2-component vector of int) +0:65 'r11' (temp 2-component vector of int) +0:65 imageLoad (temp 2-component vector of int) +0:65 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 2-component vector of uint) +0:66 'r12' (temp 2-component vector of uint) +0:66 imageLoad (temp 2-component vector of uint) +0:66 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 2-component vector of float) +0:69 'r20' (temp 2-component vector of float) +0:69 imageLoad (temp 2-component vector of float) +0:69 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 2-component vector of int) +0:70 'r21' (temp 2-component vector of int) +0:70 imageLoad (temp 2-component vector of int) +0:70 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 2-component vector of uint) +0:71 'r22' (temp 2-component vector of uint) +0:71 imageLoad (temp 2-component vector of uint) +0:71 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of float) +0:73 'lf2' (temp 2-component vector of float) +0:73 uf2: direct index for structure (layout(offset=96 ) uniform 2-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 Function Call: SomeValue( (temp 2-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf2' (temp 2-component vector of float) +0:78 'lf2' (temp 2-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 2-component vector of float) +0:83 'val1' (temp 2-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 imageLoad (temp 2-component vector of float) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 imageLoad (temp 2-component vector of float) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 imageLoad (temp 2-component vector of float) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 imageLoad (temp 2-component vector of int) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 imageLoad (temp 2-component vector of int) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 imageLoad (temp 2-component vector of int) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 imageLoad (temp 2-component vector of int) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 imageLoad (temp 2-component vector of int) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 imageLoad (temp 2-component vector of int) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 Function Call: SomeValue( (temp 2-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf2' (temp 2-component vector of float) +0:96 'lf2' (temp 2-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 Function Call: SomeValue( (temp 2-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf2' (temp 2-component vector of float) +0:102 'lf2' (temp 2-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:107 Function Call: Fn1(vf2; (temp 2-component vector of float) +0:107 imageLoad (temp 2-component vector of float) +0:107 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi2; (temp 2-component vector of int) +0:108 imageLoad (temp 2-component vector of int) +0:108 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu2; (temp 2-component vector of uint) +0:109 imageLoad (temp 2-component vector of uint) +0:109 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf2; (temp void) +0:111 'tempArg' (temp 2-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 2-component vector of float) +0:111 'tempArg' (temp 2-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi2; (temp void) +0:112 'tempArg' (temp 2-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 2-component vector of int) +0:112 'tempArg' (temp 2-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu2; (temp void) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageLoad (temp 2-component vector of float) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageLoad (temp 2-component vector of int) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageLoad (temp 2-component vector of uint) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageLoad (temp 2-component vector of float) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageLoad (temp 2-component vector of int) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageLoad (temp 2-component vector of uint) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 imageLoad (temp 2-component vector of float) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 Post-Increment (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 imageLoad (temp 2-component vector of uint) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 Post-Decrement (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 imageLoad (temp 2-component vector of int) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 Post-Increment (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 imageLoad (temp 2-component vector of float) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 Post-Decrement (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 imageLoad (temp 2-component vector of int) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 Post-Increment (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 imageLoad (temp 2-component vector of uint) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 Post-Decrement (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:135 Sequence +0:135 move second child to first child (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:? imageLoad (temp 2-component vector of float) +0:135 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:? 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:? 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:? 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:? 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:? 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:? 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:? 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:? 'g_tTex1df2a' (layout(rg32f ) uniform image1DArray) +0:? 'g_tTex1di2a' (layout(rg32i ) uniform iimage1DArray) +0:? 'g_tTex1du2a' (layout(rg32ui ) uniform uimage1DArray) +0:? 'g_tTex2df2a' (layout(rg32f ) uniform image2DArray) +0:? 'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray) +0:? 'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:42 Function Definition: Fn1(vi2; (temp 2-component vector of int) +0:42 Function Parameters: +0:42 'x' (in 2-component vector of int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in 2-component vector of int) +0:43 Function Definition: Fn1(vu2; (temp 2-component vector of uint) +0:43 Function Parameters: +0:43 'x' (in 2-component vector of uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in 2-component vector of uint) +0:44 Function Definition: Fn1(vf2; (temp 2-component vector of float) +0:44 Function Parameters: +0:44 'x' (in 2-component vector of float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in 2-component vector of float) +0:46 Function Definition: Fn2(vi2; (temp void) +0:46 Function Parameters: +0:46 'x' (out 2-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 2-component vector of int) +0:46 'x' (out 2-component vector of int) +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:47 Function Definition: Fn2(vu2; (temp void) +0:47 Function Parameters: +0:47 'x' (out 2-component vector of uint) +0:? Sequence +0:47 move second child to first child (temp 2-component vector of uint) +0:47 'x' (out 2-component vector of uint) +0:? Constant: +0:? 0 (const uint) +0:? 0 (const uint) +0:48 Function Definition: Fn2(vf2; (temp void) +0:48 Function Parameters: +0:48 'x' (out 2-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 2-component vector of float) +0:48 'x' (out 2-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:50 Function Definition: SomeValue( (temp 2-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 2-component vector of float) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:50 Constant: +0:50 1 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 2-component vector of float) +0:57 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 2-component vector of float) +0:59 'r00' (temp 2-component vector of float) +0:59 imageLoad (temp 2-component vector of float) +0:59 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 2-component vector of int) +0:60 'r01' (temp 2-component vector of int) +0:60 imageLoad (temp 2-component vector of int) +0:60 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 2-component vector of uint) +0:61 'r02' (temp 2-component vector of uint) +0:61 imageLoad (temp 2-component vector of uint) +0:61 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 2-component vector of float) +0:64 'r10' (temp 2-component vector of float) +0:64 imageLoad (temp 2-component vector of float) +0:64 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 2-component vector of int) +0:65 'r11' (temp 2-component vector of int) +0:65 imageLoad (temp 2-component vector of int) +0:65 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 2-component vector of uint) +0:66 'r12' (temp 2-component vector of uint) +0:66 imageLoad (temp 2-component vector of uint) +0:66 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 2-component vector of float) +0:69 'r20' (temp 2-component vector of float) +0:69 imageLoad (temp 2-component vector of float) +0:69 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 2-component vector of int) +0:70 'r21' (temp 2-component vector of int) +0:70 imageLoad (temp 2-component vector of int) +0:70 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 2-component vector of uint) +0:71 'r22' (temp 2-component vector of uint) +0:71 imageLoad (temp 2-component vector of uint) +0:71 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of float) +0:73 'lf2' (temp 2-component vector of float) +0:73 uf2: direct index for structure (layout(offset=96 ) uniform 2-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 Function Call: SomeValue( (temp 2-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf2' (temp 2-component vector of float) +0:78 'lf2' (temp 2-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 2-component vector of float) +0:83 'val1' (temp 2-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 imageLoad (temp 2-component vector of float) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 imageLoad (temp 2-component vector of float) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 imageLoad (temp 2-component vector of float) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 imageLoad (temp 2-component vector of int) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 imageLoad (temp 2-component vector of int) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 imageLoad (temp 2-component vector of int) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 imageLoad (temp 2-component vector of int) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 imageLoad (temp 2-component vector of int) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 imageLoad (temp 2-component vector of int) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 Function Call: SomeValue( (temp 2-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf2' (temp 2-component vector of float) +0:96 'lf2' (temp 2-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 Function Call: SomeValue( (temp 2-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf2' (temp 2-component vector of float) +0:102 'lf2' (temp 2-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:107 Function Call: Fn1(vf2; (temp 2-component vector of float) +0:107 imageLoad (temp 2-component vector of float) +0:107 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi2; (temp 2-component vector of int) +0:108 imageLoad (temp 2-component vector of int) +0:108 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu2; (temp 2-component vector of uint) +0:109 imageLoad (temp 2-component vector of uint) +0:109 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf2; (temp void) +0:111 'tempArg' (temp 2-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 2-component vector of float) +0:111 'tempArg' (temp 2-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi2; (temp void) +0:112 'tempArg' (temp 2-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 2-component vector of int) +0:112 'tempArg' (temp 2-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu2; (temp void) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageLoad (temp 2-component vector of float) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageLoad (temp 2-component vector of int) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageLoad (temp 2-component vector of uint) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageLoad (temp 2-component vector of float) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageLoad (temp 2-component vector of int) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageLoad (temp 2-component vector of uint) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 imageLoad (temp 2-component vector of float) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 Post-Increment (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 imageLoad (temp 2-component vector of uint) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 Post-Decrement (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 imageLoad (temp 2-component vector of int) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 Post-Increment (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 imageLoad (temp 2-component vector of float) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 Post-Decrement (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 imageLoad (temp 2-component vector of int) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 Post-Increment (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 imageLoad (temp 2-component vector of uint) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 Post-Decrement (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:135 Sequence +0:135 move second child to first child (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:? imageLoad (temp 2-component vector of float) +0:135 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:? 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:? 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:? 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:? 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:? 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:? 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:? 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:? 'g_tTex1df2a' (layout(rg32f ) uniform image1DArray) +0:? 'g_tTex1di2a' (layout(rg32i ) uniform iimage1DArray) +0:? 'g_tTex1du2a' (layout(rg32ui ) uniform uimage1DArray) +0:? 'g_tTex2df2a' (layout(rg32f ) uniform image2DArray) +0:? 'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray) +0:? 'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 600 + + Capability Shader + Capability Sampled1D + Capability StorageImageExtendedFormats + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 575 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "Fn1(vi2;" + Name 10 "x" + Name 18 "Fn1(vu2;" + Name 17 "x" + Name 25 "Fn1(vf2;" + Name 24 "x" + Name 29 "Fn2(vi2;" + Name 28 "x" + Name 33 "Fn2(vu2;" + Name 32 "x" + Name 37 "Fn2(vf2;" + Name 36 "x" + Name 40 "SomeValue(" + Name 59 "$Global" + MemberName 59($Global) 0 "c1" + MemberName 59($Global) 1 "c2" + MemberName 59($Global) 2 "c3" + MemberName 59($Global) 3 "c4" + MemberName 59($Global) 4 "o1" + MemberName 59($Global) 5 "o2" + MemberName 59($Global) 6 "o3" + MemberName 59($Global) 7 "o4" + MemberName 59($Global) 8 "uf2" + MemberName 59($Global) 9 "ui2" + MemberName 59($Global) 10 "uu2" + Name 61 "" + Name 71 "g_tTex1df2" + Name 77 "r00" + Name 82 "r01" + Name 85 "g_tTex1di2" + Name 90 "r02" + Name 93 "g_tTex1du2" + Name 98 "r10" + Name 101 "g_tTex2df2" + Name 106 "r11" + Name 109 "g_tTex2di2" + Name 114 "r12" + Name 117 "g_tTex2du2" + Name 122 "r20" + Name 125 "g_tTex3df2" + Name 132 "r21" + Name 135 "g_tTex3di2" + Name 140 "r22" + Name 143 "g_tTex3du2" + Name 148 "lf2" + Name 153 "storeTemp" + Name 163 "storeTemp" + Name 169 "storeTemp" + Name 177 "val1" + Name 179 "coordTemp" + Name 182 "storeTemp" + Name 193 "coordTemp" + Name 196 "storeTemp" + Name 207 "coordTemp" + Name 210 "storeTemp" + Name 221 "coordTemp" + Name 224 "storeTemp" + Name 234 "coordTemp" + Name 237 "storeTemp" + Name 247 "coordTemp" + Name 250 "storeTemp" + Name 261 "coordTemp" + Name 264 "storeTemp" + Name 275 "coordTemp" + Name 278 "storeTemp" + Name 288 "coordTemp" + Name 291 "storeTemp" + Name 301 "storeTemp" + Name 311 "storeTemp" + Name 318 "storeTemp" + Name 325 "storeTemp" + Name 335 "storeTemp" + Name 342 "storeTemp" + Name 353 "param" + Name 359 "param" + Name 365 "param" + Name 367 "tempArg" + Name 368 "param" + Name 375 "tempArg" + Name 376 "param" + Name 383 "tempArg" + Name 384 "param" + Name 391 "coordTemp" + Name 394 "storeTemp" + Name 405 "coordTemp" + Name 408 "storeTemp" + Name 418 "coordTemp" + Name 421 "storeTemp" + Name 431 "coordTemp" + Name 434 "storeTemp" + Name 444 "coordTemp" + Name 447 "storeTemp" + Name 457 "coordTemp" + Name 460 "storeTemp" + Name 470 "coordTemp" + Name 473 "storeTempPre" + Name 477 "storeTempPost" + Name 485 "coordTemp" + Name 488 "storeTempPre" + Name 492 "storeTempPost" + Name 500 "coordTemp" + Name 503 "storeTempPre" + Name 507 "storeTempPost" + Name 515 "coordTemp" + Name 518 "storeTempPre" + Name 522 "storeTempPost" + Name 530 "coordTemp" + Name 533 "storeTempPre" + Name 537 "storeTempPost" + Name 545 "coordTemp" + Name 548 "storeTempPre" + Name 552 "storeTempPost" + Name 560 "storeTemp" + Name 568 "PS_OUTPUT" + MemberName 568(PS_OUTPUT) 0 "Color" + Name 570 "psout" + Name 575 "Color" + Name 581 "g_sSamp" + Name 584 "g_tTex1df2a" + Name 587 "g_tTex1di2a" + Name 590 "g_tTex1du2a" + Name 593 "g_tTex2df2a" + Name 596 "g_tTex2di2a" + Name 599 "g_tTex2du2a" + MemberDecorate 59($Global) 0 Offset 0 + MemberDecorate 59($Global) 1 Offset 8 + MemberDecorate 59($Global) 2 Offset 16 + MemberDecorate 59($Global) 3 Offset 32 + MemberDecorate 59($Global) 4 Offset 48 + MemberDecorate 59($Global) 5 Offset 56 + MemberDecorate 59($Global) 6 Offset 64 + MemberDecorate 59($Global) 7 Offset 80 + MemberDecorate 59($Global) 8 Offset 96 + MemberDecorate 59($Global) 9 Offset 104 + MemberDecorate 59($Global) 10 Offset 112 + Decorate 59($Global) Block + Decorate 61 DescriptorSet 0 + Decorate 71(g_tTex1df2) DescriptorSet 0 + Decorate 85(g_tTex1di2) DescriptorSet 0 + Decorate 93(g_tTex1du2) DescriptorSet 0 + Decorate 101(g_tTex2df2) DescriptorSet 0 + Decorate 109(g_tTex2di2) DescriptorSet 0 + Decorate 117(g_tTex2du2) DescriptorSet 0 + Decorate 125(g_tTex3df2) DescriptorSet 0 + Decorate 135(g_tTex3di2) DescriptorSet 0 + Decorate 143(g_tTex3du2) DescriptorSet 0 + Decorate 575(Color) Location 0 + Decorate 581(g_sSamp) DescriptorSet 0 + Decorate 581(g_sSamp) Binding 0 + Decorate 584(g_tTex1df2a) DescriptorSet 0 + Decorate 587(g_tTex1di2a) DescriptorSet 0 + Decorate 590(g_tTex1du2a) DescriptorSet 0 + Decorate 593(g_tTex2df2a) DescriptorSet 0 + Decorate 596(g_tTex2di2a) DescriptorSet 0 + Decorate 599(g_tTex2du2a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 9: TypeFunction 7(ivec2) 8(ptr) + 13: TypeInt 32 0 + 14: TypeVector 13(int) 2 + 15: TypePointer Function 14(ivec2) + 16: TypeFunction 14(ivec2) 15(ptr) + 20: TypeFloat 32 + 21: TypeVector 20(float) 2 + 22: TypePointer Function 21(fvec2) + 23: TypeFunction 21(fvec2) 22(ptr) + 27: TypeFunction 2 8(ptr) + 31: TypeFunction 2 15(ptr) + 35: TypeFunction 2 22(ptr) + 39: TypeFunction 21(fvec2) + 51: 6(int) Constant 0 + 52: 7(ivec2) ConstantComposite 51 51 + 53: 13(int) Constant 0 + 54: 14(ivec2) ConstantComposite 53 53 + 55: 20(float) Constant 0 + 56: 21(fvec2) ConstantComposite 55 55 + 57: TypeVector 6(int) 3 + 58: TypeVector 6(int) 4 + 59($Global): TypeStruct 6(int) 7(ivec2) 57(ivec3) 58(ivec4) 6(int) 7(ivec2) 57(ivec3) 58(ivec4) 21(fvec2) 7(ivec2) 14(ivec2) + 60: TypePointer Uniform 59($Global) + 61: 60(ptr) Variable Uniform + 62: 6(int) Constant 1 + 63: TypePointer Uniform 7(ivec2) + 69: TypeImage 20(float) 1D nonsampled format:Rg32f + 70: TypePointer UniformConstant 69 + 71(g_tTex1df2): 70(ptr) Variable UniformConstant + 73: TypePointer Uniform 6(int) + 83: TypeImage 6(int) 1D nonsampled format:Rg32i + 84: TypePointer UniformConstant 83 + 85(g_tTex1di2): 84(ptr) Variable UniformConstant + 91: TypeImage 13(int) 1D nonsampled format:Rg32ui + 92: TypePointer UniformConstant 91 + 93(g_tTex1du2): 92(ptr) Variable UniformConstant + 99: TypeImage 20(float) 2D nonsampled format:Rg32f + 100: TypePointer UniformConstant 99 + 101(g_tTex2df2): 100(ptr) Variable UniformConstant + 107: TypeImage 6(int) 2D nonsampled format:Rg32i + 108: TypePointer UniformConstant 107 + 109(g_tTex2di2): 108(ptr) Variable UniformConstant + 115: TypeImage 13(int) 2D nonsampled format:Rg32ui + 116: TypePointer UniformConstant 115 + 117(g_tTex2du2): 116(ptr) Variable UniformConstant + 123: TypeImage 20(float) 3D nonsampled format:Rg32f + 124: TypePointer UniformConstant 123 + 125(g_tTex3df2): 124(ptr) Variable UniformConstant + 127: 6(int) Constant 2 + 128: TypePointer Uniform 57(ivec3) + 133: TypeImage 6(int) 3D nonsampled format:Rg32i + 134: TypePointer UniformConstant 133 + 135(g_tTex3di2): 134(ptr) Variable UniformConstant + 141: TypeImage 13(int) 3D nonsampled format:Rg32ui + 142: TypePointer UniformConstant 141 + 143(g_tTex3du2): 142(ptr) Variable UniformConstant + 149: 6(int) Constant 8 + 150: TypePointer Uniform 21(fvec2) + 164: 7(ivec2) ConstantComposite 127 127 + 170: 13(int) Constant 3 + 171: 13(int) Constant 2 + 172: 14(ivec2) ConstantComposite 170 171 + 178: TypePointer Function 6(int) + 186: 20(float) Constant 1073741824 + 200: 20(float) Constant 1077936128 + 214: 20(float) Constant 1082130432 + 254: 6(int) Constant 65535 + 268: 6(int) Constant 61680 + 312: 6(int) Constant 5 + 313: 7(ivec2) ConstantComposite 312 127 + 319: 13(int) Constant 6 + 320: 14(ivec2) ConstantComposite 319 171 + 336: 6(int) Constant 6 + 337: 7(ivec2) ConstantComposite 149 336 + 343: 13(int) Constant 9 + 344: 14(ivec2) ConstantComposite 343 171 + 399: 20(float) Constant 1065353216 + 562: 6(int) Constant 3 + 563: 7(ivec2) ConstantComposite 127 562 + 567: TypeVector 20(float) 4 + 568(PS_OUTPUT): TypeStruct 567(fvec4) + 569: TypePointer Function 568(PS_OUTPUT) + 571: 567(fvec4) ConstantComposite 399 399 399 399 + 572: TypePointer Function 567(fvec4) + 574: TypePointer Output 567(fvec4) + 575(Color): 574(ptr) Variable Output + 579: TypeSampler + 580: TypePointer UniformConstant 579 + 581(g_sSamp): 580(ptr) Variable UniformConstant + 582: TypeImage 20(float) 1D array nonsampled format:Rg32f + 583: TypePointer UniformConstant 582 +584(g_tTex1df2a): 583(ptr) Variable UniformConstant + 585: TypeImage 6(int) 1D array nonsampled format:Rg32i + 586: TypePointer UniformConstant 585 +587(g_tTex1di2a): 586(ptr) Variable UniformConstant + 588: TypeImage 13(int) 1D array nonsampled format:Rg32ui + 589: TypePointer UniformConstant 588 +590(g_tTex1du2a): 589(ptr) Variable UniformConstant + 591: TypeImage 20(float) 2D array nonsampled format:Rg32f + 592: TypePointer UniformConstant 591 +593(g_tTex2df2a): 592(ptr) Variable UniformConstant + 594: TypeImage 6(int) 2D array nonsampled format:Rg32i + 595: TypePointer UniformConstant 594 +596(g_tTex2di2a): 595(ptr) Variable UniformConstant + 597: TypeImage 13(int) 2D array nonsampled format:Rg32ui + 598: TypePointer UniformConstant 597 +599(g_tTex2du2a): 598(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 77(r00): 22(ptr) Variable Function + 82(r01): 8(ptr) Variable Function + 90(r02): 15(ptr) Variable Function + 98(r10): 22(ptr) Variable Function + 106(r11): 8(ptr) Variable Function + 114(r12): 15(ptr) Variable Function + 122(r20): 22(ptr) Variable Function + 132(r21): 8(ptr) Variable Function + 140(r22): 15(ptr) Variable Function + 148(lf2): 22(ptr) Variable Function + 153(storeTemp): 22(ptr) Variable Function + 163(storeTemp): 8(ptr) Variable Function + 169(storeTemp): 15(ptr) Variable Function + 177(val1): 22(ptr) Variable Function + 179(coordTemp): 178(ptr) Variable Function + 182(storeTemp): 22(ptr) Variable Function + 193(coordTemp): 178(ptr) Variable Function + 196(storeTemp): 22(ptr) Variable Function + 207(coordTemp): 178(ptr) Variable Function + 210(storeTemp): 22(ptr) Variable Function + 221(coordTemp): 178(ptr) Variable Function + 224(storeTemp): 8(ptr) Variable Function + 234(coordTemp): 178(ptr) Variable Function + 237(storeTemp): 8(ptr) Variable Function + 247(coordTemp): 178(ptr) Variable Function + 250(storeTemp): 8(ptr) Variable Function + 261(coordTemp): 178(ptr) Variable Function + 264(storeTemp): 8(ptr) Variable Function + 275(coordTemp): 178(ptr) Variable Function + 278(storeTemp): 8(ptr) Variable Function + 288(coordTemp): 178(ptr) Variable Function + 291(storeTemp): 8(ptr) Variable Function + 301(storeTemp): 22(ptr) Variable Function + 311(storeTemp): 8(ptr) Variable Function + 318(storeTemp): 15(ptr) Variable Function + 325(storeTemp): 22(ptr) Variable Function + 335(storeTemp): 8(ptr) Variable Function + 342(storeTemp): 15(ptr) Variable Function + 353(param): 22(ptr) Variable Function + 359(param): 8(ptr) Variable Function + 365(param): 15(ptr) Variable Function + 367(tempArg): 22(ptr) Variable Function + 368(param): 22(ptr) Variable Function + 375(tempArg): 8(ptr) Variable Function + 376(param): 8(ptr) Variable Function + 383(tempArg): 15(ptr) Variable Function + 384(param): 15(ptr) Variable Function + 391(coordTemp): 178(ptr) Variable Function + 394(storeTemp): 22(ptr) Variable Function + 405(coordTemp): 178(ptr) Variable Function + 408(storeTemp): 8(ptr) Variable Function + 418(coordTemp): 178(ptr) Variable Function + 421(storeTemp): 15(ptr) Variable Function + 431(coordTemp): 178(ptr) Variable Function + 434(storeTemp): 22(ptr) Variable Function + 444(coordTemp): 178(ptr) Variable Function + 447(storeTemp): 8(ptr) Variable Function + 457(coordTemp): 178(ptr) Variable Function + 460(storeTemp): 15(ptr) Variable Function + 470(coordTemp): 178(ptr) Variable Function +473(storeTempPre): 22(ptr) Variable Function +477(storeTempPost): 22(ptr) Variable Function + 485(coordTemp): 178(ptr) Variable Function +488(storeTempPre): 15(ptr) Variable Function +492(storeTempPost): 15(ptr) Variable Function + 500(coordTemp): 178(ptr) Variable Function +503(storeTempPre): 8(ptr) Variable Function +507(storeTempPost): 8(ptr) Variable Function + 515(coordTemp): 178(ptr) Variable Function +518(storeTempPre): 22(ptr) Variable Function +522(storeTempPost): 22(ptr) Variable Function + 530(coordTemp): 178(ptr) Variable Function +533(storeTempPre): 8(ptr) Variable Function +537(storeTempPost): 8(ptr) Variable Function + 545(coordTemp): 178(ptr) Variable Function +548(storeTempPre): 15(ptr) Variable Function +552(storeTempPost): 15(ptr) Variable Function + 560(storeTemp): 22(ptr) Variable Function + 570(psout): 569(ptr) Variable Function + 72: 69 Load 71(g_tTex1df2) + 74: 73(ptr) AccessChain 61 51 + 75: 6(int) Load 74 + 76: 21(fvec2) ImageRead 72 75 + 78: 69 Load 71(g_tTex1df2) + 79: 73(ptr) AccessChain 61 51 + 80: 6(int) Load 79 + 81: 21(fvec2) ImageRead 78 80 + Store 77(r00) 81 + 86: 83 Load 85(g_tTex1di2) + 87: 73(ptr) AccessChain 61 51 + 88: 6(int) Load 87 + 89: 7(ivec2) ImageRead 86 88 + Store 82(r01) 89 + 94: 91 Load 93(g_tTex1du2) + 95: 73(ptr) AccessChain 61 51 + 96: 6(int) Load 95 + 97: 14(ivec2) ImageRead 94 96 + Store 90(r02) 97 + 102: 99 Load 101(g_tTex2df2) + 103: 63(ptr) AccessChain 61 62 + 104: 7(ivec2) Load 103 + 105: 21(fvec2) ImageRead 102 104 + Store 98(r10) 105 + 110: 107 Load 109(g_tTex2di2) + 111: 63(ptr) AccessChain 61 62 + 112: 7(ivec2) Load 111 + 113: 7(ivec2) ImageRead 110 112 + Store 106(r11) 113 + 118: 115 Load 117(g_tTex2du2) + 119: 63(ptr) AccessChain 61 62 + 120: 7(ivec2) Load 119 + 121: 14(ivec2) ImageRead 118 120 + Store 114(r12) 121 + 126: 123 Load 125(g_tTex3df2) + 129: 128(ptr) AccessChain 61 127 + 130: 57(ivec3) Load 129 + 131: 21(fvec2) ImageRead 126 130 + Store 122(r20) 131 + 136: 133 Load 135(g_tTex3di2) + 137: 128(ptr) AccessChain 61 127 + 138: 57(ivec3) Load 137 + 139: 7(ivec2) ImageRead 136 138 + Store 132(r21) 139 + 144: 141 Load 143(g_tTex3du2) + 145: 128(ptr) AccessChain 61 127 + 146: 57(ivec3) Load 145 + 147: 14(ivec2) ImageRead 144 146 + Store 140(r22) 147 + 151: 150(ptr) AccessChain 61 149 + 152: 21(fvec2) Load 151 + Store 148(lf2) 152 + 154: 21(fvec2) FunctionCall 40(SomeValue() + Store 153(storeTemp) 154 + 155: 69 Load 71(g_tTex1df2) + 156: 73(ptr) AccessChain 61 51 + 157: 6(int) Load 156 + 158: 21(fvec2) Load 153(storeTemp) + ImageWrite 155 157 158 + 159: 69 Load 71(g_tTex1df2) + 160: 73(ptr) AccessChain 61 51 + 161: 6(int) Load 160 + 162: 21(fvec2) Load 148(lf2) + ImageWrite 159 161 162 + Store 163(storeTemp) 164 + 165: 83 Load 85(g_tTex1di2) + 166: 73(ptr) AccessChain 61 51 + 167: 6(int) Load 166 + 168: 7(ivec2) Load 163(storeTemp) + ImageWrite 165 167 168 + Store 169(storeTemp) 172 + 173: 91 Load 93(g_tTex1du2) + 174: 73(ptr) AccessChain 61 51 + 175: 6(int) Load 174 + 176: 14(ivec2) Load 169(storeTemp) + ImageWrite 173 175 176 + 180: 73(ptr) AccessChain 61 51 + 181: 6(int) Load 180 + Store 179(coordTemp) 181 + 183: 69 Load 71(g_tTex1df2) + 184: 6(int) Load 179(coordTemp) + 185: 21(fvec2) ImageRead 183 184 + Store 182(storeTemp) 185 + 187: 21(fvec2) Load 182(storeTemp) + 188: 21(fvec2) VectorTimesScalar 187 186 + Store 182(storeTemp) 188 + 189: 69 Load 71(g_tTex1df2) + 190: 6(int) Load 179(coordTemp) + 191: 21(fvec2) Load 182(storeTemp) + ImageWrite 189 190 191 + 192: 21(fvec2) Load 182(storeTemp) + Store 177(val1) 192 + 194: 73(ptr) AccessChain 61 51 + 195: 6(int) Load 194 + Store 193(coordTemp) 195 + 197: 69 Load 71(g_tTex1df2) + 198: 6(int) Load 193(coordTemp) + 199: 21(fvec2) ImageRead 197 198 + Store 196(storeTemp) 199 + 201: 21(fvec2) Load 196(storeTemp) + 202: 21(fvec2) CompositeConstruct 200 200 + 203: 21(fvec2) FSub 201 202 + Store 196(storeTemp) 203 + 204: 69 Load 71(g_tTex1df2) + 205: 6(int) Load 193(coordTemp) + 206: 21(fvec2) Load 196(storeTemp) + ImageWrite 204 205 206 + 208: 73(ptr) AccessChain 61 51 + 209: 6(int) Load 208 + Store 207(coordTemp) 209 + 211: 69 Load 71(g_tTex1df2) + 212: 6(int) Load 207(coordTemp) + 213: 21(fvec2) ImageRead 211 212 + Store 210(storeTemp) 213 + 215: 21(fvec2) Load 210(storeTemp) + 216: 21(fvec2) CompositeConstruct 214 214 + 217: 21(fvec2) FAdd 215 216 + Store 210(storeTemp) 217 + 218: 69 Load 71(g_tTex1df2) + 219: 6(int) Load 207(coordTemp) + 220: 21(fvec2) Load 210(storeTemp) + ImageWrite 218 219 220 + 222: 73(ptr) AccessChain 61 51 + 223: 6(int) Load 222 + Store 221(coordTemp) 223 + 225: 83 Load 85(g_tTex1di2) + 226: 6(int) Load 221(coordTemp) + 227: 7(ivec2) ImageRead 225 226 + Store 224(storeTemp) 227 + 228: 7(ivec2) Load 224(storeTemp) + 229: 7(ivec2) CompositeConstruct 127 127 + 230: 7(ivec2) SDiv 228 229 + Store 224(storeTemp) 230 + 231: 83 Load 85(g_tTex1di2) + 232: 6(int) Load 221(coordTemp) + 233: 7(ivec2) Load 224(storeTemp) + ImageWrite 231 232 233 + 235: 73(ptr) AccessChain 61 51 + 236: 6(int) Load 235 + Store 234(coordTemp) 236 + 238: 83 Load 85(g_tTex1di2) + 239: 6(int) Load 234(coordTemp) + 240: 7(ivec2) ImageRead 238 239 + Store 237(storeTemp) 240 + 241: 7(ivec2) Load 237(storeTemp) + 242: 7(ivec2) CompositeConstruct 127 127 + 243: 7(ivec2) SMod 241 242 + Store 237(storeTemp) 243 + 244: 83 Load 85(g_tTex1di2) + 245: 6(int) Load 234(coordTemp) + 246: 7(ivec2) Load 237(storeTemp) + ImageWrite 244 245 246 + 248: 73(ptr) AccessChain 61 51 + 249: 6(int) Load 248 + Store 247(coordTemp) 249 + 251: 83 Load 85(g_tTex1di2) + 252: 6(int) Load 247(coordTemp) + 253: 7(ivec2) ImageRead 251 252 + Store 250(storeTemp) 253 + 255: 7(ivec2) Load 250(storeTemp) + 256: 7(ivec2) CompositeConstruct 254 254 + 257: 7(ivec2) BitwiseAnd 255 256 + Store 250(storeTemp) 257 + 258: 83 Load 85(g_tTex1di2) + 259: 6(int) Load 247(coordTemp) + 260: 7(ivec2) Load 250(storeTemp) + ImageWrite 258 259 260 + 262: 73(ptr) AccessChain 61 51 + 263: 6(int) Load 262 + Store 261(coordTemp) 263 + 265: 83 Load 85(g_tTex1di2) + 266: 6(int) Load 261(coordTemp) + 267: 7(ivec2) ImageRead 265 266 + Store 264(storeTemp) 267 + 269: 7(ivec2) Load 264(storeTemp) + 270: 7(ivec2) CompositeConstruct 268 268 + 271: 7(ivec2) BitwiseOr 269 270 + Store 264(storeTemp) 271 + 272: 83 Load 85(g_tTex1di2) + 273: 6(int) Load 261(coordTemp) + 274: 7(ivec2) Load 264(storeTemp) + ImageWrite 272 273 274 + 276: 73(ptr) AccessChain 61 51 + 277: 6(int) Load 276 + Store 275(coordTemp) 277 + 279: 83 Load 85(g_tTex1di2) + 280: 6(int) Load 275(coordTemp) + 281: 7(ivec2) ImageRead 279 280 + Store 278(storeTemp) 281 + 282: 7(ivec2) Load 278(storeTemp) + 283: 7(ivec2) CompositeConstruct 127 127 + 284: 7(ivec2) ShiftLeftLogical 282 283 + Store 278(storeTemp) 284 + 285: 83 Load 85(g_tTex1di2) + 286: 6(int) Load 275(coordTemp) + 287: 7(ivec2) Load 278(storeTemp) + ImageWrite 285 286 287 + 289: 73(ptr) AccessChain 61 51 + 290: 6(int) Load 289 + Store 288(coordTemp) 290 + 292: 83 Load 85(g_tTex1di2) + 293: 6(int) Load 288(coordTemp) + 294: 7(ivec2) ImageRead 292 293 + Store 291(storeTemp) 294 + 295: 7(ivec2) Load 291(storeTemp) + 296: 7(ivec2) CompositeConstruct 127 127 + 297: 7(ivec2) ShiftRightArithmetic 295 296 + Store 291(storeTemp) 297 + 298: 83 Load 85(g_tTex1di2) + 299: 6(int) Load 288(coordTemp) + 300: 7(ivec2) Load 291(storeTemp) + ImageWrite 298 299 300 + 302: 21(fvec2) FunctionCall 40(SomeValue() + Store 301(storeTemp) 302 + 303: 99 Load 101(g_tTex2df2) + 304: 63(ptr) AccessChain 61 62 + 305: 7(ivec2) Load 304 + 306: 21(fvec2) Load 301(storeTemp) + ImageWrite 303 305 306 + 307: 99 Load 101(g_tTex2df2) + 308: 63(ptr) AccessChain 61 62 + 309: 7(ivec2) Load 308 + 310: 21(fvec2) Load 148(lf2) + ImageWrite 307 309 310 + Store 311(storeTemp) 313 + 314: 107 Load 109(g_tTex2di2) + 315: 63(ptr) AccessChain 61 62 + 316: 7(ivec2) Load 315 + 317: 7(ivec2) Load 311(storeTemp) + ImageWrite 314 316 317 + Store 318(storeTemp) 320 + 321: 115 Load 117(g_tTex2du2) + 322: 63(ptr) AccessChain 61 62 + 323: 7(ivec2) Load 322 + 324: 14(ivec2) Load 318(storeTemp) + ImageWrite 321 323 324 + 326: 21(fvec2) FunctionCall 40(SomeValue() + Store 325(storeTemp) 326 + 327: 123 Load 125(g_tTex3df2) + 328: 128(ptr) AccessChain 61 127 + 329: 57(ivec3) Load 328 + 330: 21(fvec2) Load 325(storeTemp) + ImageWrite 327 329 330 + 331: 123 Load 125(g_tTex3df2) + 332: 128(ptr) AccessChain 61 127 + 333: 57(ivec3) Load 332 + 334: 21(fvec2) Load 148(lf2) + ImageWrite 331 333 334 + Store 335(storeTemp) 337 + 338: 133 Load 135(g_tTex3di2) + 339: 128(ptr) AccessChain 61 127 + 340: 57(ivec3) Load 339 + 341: 7(ivec2) Load 335(storeTemp) + ImageWrite 338 340 341 + Store 342(storeTemp) 344 + 345: 141 Load 143(g_tTex3du2) + 346: 128(ptr) AccessChain 61 127 + 347: 57(ivec3) Load 346 + 348: 14(ivec2) Load 342(storeTemp) + ImageWrite 345 347 348 + 349: 69 Load 71(g_tTex1df2) + 350: 73(ptr) AccessChain 61 51 + 351: 6(int) Load 350 + 352: 21(fvec2) ImageRead 349 351 + Store 353(param) 352 + 354: 21(fvec2) FunctionCall 25(Fn1(vf2;) 353(param) + 355: 83 Load 85(g_tTex1di2) + 356: 73(ptr) AccessChain 61 51 + 357: 6(int) Load 356 + 358: 7(ivec2) ImageRead 355 357 + Store 359(param) 358 + 360: 7(ivec2) FunctionCall 11(Fn1(vi2;) 359(param) + 361: 91 Load 93(g_tTex1du2) + 362: 73(ptr) AccessChain 61 51 + 363: 6(int) Load 362 + 364: 14(ivec2) ImageRead 361 363 + Store 365(param) 364 + 366: 14(ivec2) FunctionCall 18(Fn1(vu2;) 365(param) + 369: 2 FunctionCall 37(Fn2(vf2;) 368(param) + 370: 21(fvec2) Load 368(param) + Store 367(tempArg) 370 + 371: 69 Load 71(g_tTex1df2) + 372: 73(ptr) AccessChain 61 51 + 373: 6(int) Load 372 + 374: 21(fvec2) Load 367(tempArg) + ImageWrite 371 373 374 + 377: 2 FunctionCall 29(Fn2(vi2;) 376(param) + 378: 7(ivec2) Load 376(param) + Store 375(tempArg) 378 + 379: 83 Load 85(g_tTex1di2) + 380: 73(ptr) AccessChain 61 51 + 381: 6(int) Load 380 + 382: 7(ivec2) Load 375(tempArg) + ImageWrite 379 381 382 + 385: 2 FunctionCall 33(Fn2(vu2;) 384(param) + 386: 14(ivec2) Load 384(param) + Store 383(tempArg) 386 + 387: 91 Load 93(g_tTex1du2) + 388: 73(ptr) AccessChain 61 51 + 389: 6(int) Load 388 + 390: 14(ivec2) Load 383(tempArg) + ImageWrite 387 389 390 + 392: 73(ptr) AccessChain 61 51 + 393: 6(int) Load 392 + Store 391(coordTemp) 393 + 395: 69 Load 71(g_tTex1df2) + 396: 6(int) Load 391(coordTemp) + 397: 21(fvec2) ImageRead 395 396 + Store 394(storeTemp) 397 + 398: 21(fvec2) Load 394(storeTemp) + 400: 21(fvec2) CompositeConstruct 399 399 + 401: 21(fvec2) FAdd 398 400 + Store 394(storeTemp) 401 + 402: 69 Load 71(g_tTex1df2) + 403: 6(int) Load 391(coordTemp) + 404: 21(fvec2) Load 394(storeTemp) + ImageWrite 402 403 404 + 406: 73(ptr) AccessChain 61 51 + 407: 6(int) Load 406 + Store 405(coordTemp) 407 + 409: 83 Load 85(g_tTex1di2) + 410: 6(int) Load 405(coordTemp) + 411: 7(ivec2) ImageRead 409 410 + Store 408(storeTemp) 411 + 412: 7(ivec2) Load 408(storeTemp) + 413: 7(ivec2) CompositeConstruct 62 62 + 414: 7(ivec2) IAdd 412 413 + Store 408(storeTemp) 414 + 415: 83 Load 85(g_tTex1di2) + 416: 6(int) Load 405(coordTemp) + 417: 7(ivec2) Load 408(storeTemp) + ImageWrite 415 416 417 + 419: 73(ptr) AccessChain 61 51 + 420: 6(int) Load 419 + Store 418(coordTemp) 420 + 422: 91 Load 93(g_tTex1du2) + 423: 6(int) Load 418(coordTemp) + 424: 14(ivec2) ImageRead 422 423 + Store 421(storeTemp) 424 + 425: 14(ivec2) Load 421(storeTemp) + 426: 7(ivec2) CompositeConstruct 62 62 + 427: 14(ivec2) IAdd 425 426 + Store 421(storeTemp) 427 + 428: 91 Load 93(g_tTex1du2) + 429: 6(int) Load 418(coordTemp) + 430: 14(ivec2) Load 421(storeTemp) + ImageWrite 428 429 430 + 432: 73(ptr) AccessChain 61 51 + 433: 6(int) Load 432 + Store 431(coordTemp) 433 + 435: 69 Load 71(g_tTex1df2) + 436: 6(int) Load 431(coordTemp) + 437: 21(fvec2) ImageRead 435 436 + Store 434(storeTemp) 437 + 438: 21(fvec2) Load 434(storeTemp) + 439: 21(fvec2) CompositeConstruct 399 399 + 440: 21(fvec2) FSub 438 439 + Store 434(storeTemp) 440 + 441: 69 Load 71(g_tTex1df2) + 442: 6(int) Load 431(coordTemp) + 443: 21(fvec2) Load 434(storeTemp) + ImageWrite 441 442 443 + 445: 73(ptr) AccessChain 61 51 + 446: 6(int) Load 445 + Store 444(coordTemp) 446 + 448: 83 Load 85(g_tTex1di2) + 449: 6(int) Load 444(coordTemp) + 450: 7(ivec2) ImageRead 448 449 + Store 447(storeTemp) 450 + 451: 7(ivec2) Load 447(storeTemp) + 452: 7(ivec2) CompositeConstruct 62 62 + 453: 7(ivec2) ISub 451 452 + Store 447(storeTemp) 453 + 454: 83 Load 85(g_tTex1di2) + 455: 6(int) Load 444(coordTemp) + 456: 7(ivec2) Load 447(storeTemp) + ImageWrite 454 455 456 + 458: 73(ptr) AccessChain 61 51 + 459: 6(int) Load 458 + Store 457(coordTemp) 459 + 461: 91 Load 93(g_tTex1du2) + 462: 6(int) Load 457(coordTemp) + 463: 14(ivec2) ImageRead 461 462 + Store 460(storeTemp) 463 + 464: 14(ivec2) Load 460(storeTemp) + 465: 7(ivec2) CompositeConstruct 62 62 + 466: 14(ivec2) ISub 464 465 + Store 460(storeTemp) 466 + 467: 91 Load 93(g_tTex1du2) + 468: 6(int) Load 457(coordTemp) + 469: 14(ivec2) Load 460(storeTemp) + ImageWrite 467 468 469 + 471: 73(ptr) AccessChain 61 51 + 472: 6(int) Load 471 + Store 470(coordTemp) 472 + 474: 69 Load 71(g_tTex1df2) + 475: 6(int) Load 470(coordTemp) + 476: 21(fvec2) ImageRead 474 475 + Store 473(storeTempPre) 476 + 478: 21(fvec2) Load 473(storeTempPre) + Store 477(storeTempPost) 478 + 479: 21(fvec2) Load 477(storeTempPost) + 480: 21(fvec2) CompositeConstruct 399 399 + 481: 21(fvec2) FAdd 479 480 + Store 477(storeTempPost) 481 + 482: 69 Load 71(g_tTex1df2) + 483: 6(int) Load 470(coordTemp) + 484: 21(fvec2) Load 477(storeTempPost) + ImageWrite 482 483 484 + 486: 73(ptr) AccessChain 61 51 + 487: 6(int) Load 486 + Store 485(coordTemp) 487 + 489: 91 Load 93(g_tTex1du2) + 490: 6(int) Load 485(coordTemp) + 491: 14(ivec2) ImageRead 489 490 + Store 488(storeTempPre) 491 + 493: 14(ivec2) Load 488(storeTempPre) + Store 492(storeTempPost) 493 + 494: 14(ivec2) Load 492(storeTempPost) + 495: 7(ivec2) CompositeConstruct 62 62 + 496: 14(ivec2) ISub 494 495 + Store 492(storeTempPost) 496 + 497: 91 Load 93(g_tTex1du2) + 498: 6(int) Load 485(coordTemp) + 499: 14(ivec2) Load 492(storeTempPost) + ImageWrite 497 498 499 + 501: 73(ptr) AccessChain 61 51 + 502: 6(int) Load 501 + Store 500(coordTemp) 502 + 504: 83 Load 85(g_tTex1di2) + 505: 6(int) Load 500(coordTemp) + 506: 7(ivec2) ImageRead 504 505 + Store 503(storeTempPre) 506 + 508: 7(ivec2) Load 503(storeTempPre) + Store 507(storeTempPost) 508 + 509: 7(ivec2) Load 507(storeTempPost) + 510: 7(ivec2) CompositeConstruct 62 62 + 511: 7(ivec2) IAdd 509 510 + Store 507(storeTempPost) 511 + 512: 83 Load 85(g_tTex1di2) + 513: 6(int) Load 500(coordTemp) + 514: 7(ivec2) Load 507(storeTempPost) + ImageWrite 512 513 514 + 516: 73(ptr) AccessChain 61 51 + 517: 6(int) Load 516 + Store 515(coordTemp) 517 + 519: 69 Load 71(g_tTex1df2) + 520: 6(int) Load 515(coordTemp) + 521: 21(fvec2) ImageRead 519 520 + Store 518(storeTempPre) 521 + 523: 21(fvec2) Load 518(storeTempPre) + Store 522(storeTempPost) 523 + 524: 21(fvec2) Load 522(storeTempPost) + 525: 21(fvec2) CompositeConstruct 399 399 + 526: 21(fvec2) FSub 524 525 + Store 522(storeTempPost) 526 + 527: 69 Load 71(g_tTex1df2) + 528: 6(int) Load 515(coordTemp) + 529: 21(fvec2) Load 522(storeTempPost) + ImageWrite 527 528 529 + 531: 73(ptr) AccessChain 61 51 + 532: 6(int) Load 531 + Store 530(coordTemp) 532 + 534: 83 Load 85(g_tTex1di2) + 535: 6(int) Load 530(coordTemp) + 536: 7(ivec2) ImageRead 534 535 + Store 533(storeTempPre) 536 + 538: 7(ivec2) Load 533(storeTempPre) + Store 537(storeTempPost) 538 + 539: 7(ivec2) Load 537(storeTempPost) + 540: 7(ivec2) CompositeConstruct 62 62 + 541: 7(ivec2) IAdd 539 540 + Store 537(storeTempPost) 541 + 542: 83 Load 85(g_tTex1di2) + 543: 6(int) Load 530(coordTemp) + 544: 7(ivec2) Load 537(storeTempPost) + ImageWrite 542 543 544 + 546: 73(ptr) AccessChain 61 51 + 547: 6(int) Load 546 + Store 545(coordTemp) 547 + 549: 91 Load 93(g_tTex1du2) + 550: 6(int) Load 545(coordTemp) + 551: 14(ivec2) ImageRead 549 550 + Store 548(storeTempPre) 551 + 553: 14(ivec2) Load 548(storeTempPre) + Store 552(storeTempPost) 553 + 554: 14(ivec2) Load 552(storeTempPost) + 555: 7(ivec2) CompositeConstruct 62 62 + 556: 14(ivec2) ISub 554 555 + Store 552(storeTempPost) 556 + 557: 91 Load 93(g_tTex1du2) + 558: 6(int) Load 545(coordTemp) + 559: 14(ivec2) Load 552(storeTempPost) + ImageWrite 557 558 559 + 561: 99 Load 101(g_tTex2df2) + 564: 21(fvec2) ImageRead 561 563 + Store 560(storeTemp) 564 + 565: 69 Load 71(g_tTex1df2) + 566: 21(fvec2) Load 560(storeTemp) + ImageWrite 565 62 566 + 573: 572(ptr) AccessChain 570(psout) 51 + Store 573 571 + 576: 572(ptr) AccessChain 570(psout) 51 + 577: 567(fvec4) Load 576 + Store 575(Color) 577 + Return + FunctionEnd + 11(Fn1(vi2;): 7(ivec2) Function None 9 + 10(x): 8(ptr) FunctionParameter + 12: Label + 42: 7(ivec2) Load 10(x) + ReturnValue 42 + FunctionEnd + 18(Fn1(vu2;): 14(ivec2) Function None 16 + 17(x): 15(ptr) FunctionParameter + 19: Label + 45: 14(ivec2) Load 17(x) + ReturnValue 45 + FunctionEnd + 25(Fn1(vf2;): 21(fvec2) Function None 23 + 24(x): 22(ptr) FunctionParameter + 26: Label + 48: 21(fvec2) Load 24(x) + ReturnValue 48 + FunctionEnd + 29(Fn2(vi2;): 2 Function None 27 + 28(x): 8(ptr) FunctionParameter + 30: Label + Store 28(x) 52 + Return + FunctionEnd + 33(Fn2(vu2;): 2 Function None 31 + 32(x): 15(ptr) FunctionParameter + 34: Label + Store 32(x) 54 + Return + FunctionEnd + 37(Fn2(vf2;): 2 Function None 35 + 36(x): 22(ptr) FunctionParameter + 38: Label + Store 36(x) 56 + Return + FunctionEnd + 40(SomeValue(): 21(fvec2) Function None 39 + 41: Label + 64: 63(ptr) AccessChain 61 62 + 65: 7(ivec2) Load 64 + 66: 21(fvec2) ConvertSToF 65 + ReturnValue 66 + FunctionEnd diff --git a/Test/hlsl.load.buffer.float.dx10.frag b/Test/hlsl.load.buffer.float.dx10.frag new file mode 100644 index 00000000..eeea9a63 --- /dev/null +++ b/Test/hlsl.load.buffer.float.dx10.frag @@ -0,0 +1,38 @@ +uniform Buffer g_tTexbfs_test : register(t0); + +Buffer g_tTexbfs; +Buffer g_tTexbis; +Buffer g_tTexbus; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // Buffer + float r00 = g_tTexbfs.Load(c1); + int r01 = g_tTexbis.Load(c1); + uint r02 = g_tTexbus.Load(c1); + + // TODO: other types that can be put in sampler buffers, like float2x2, and float3. + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.rw.scalar.bracket.frag b/Test/hlsl.rw.scalar.bracket.frag new file mode 100644 index 00000000..e185f05d --- /dev/null +++ b/Test/hlsl.rw.scalar.bracket.frag @@ -0,0 +1,140 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df1; +RWTexture1D g_tTex1di1; +RWTexture1D g_tTex1du1; + +RWTexture2D g_tTex2df1; +RWTexture2D g_tTex2di1; +RWTexture2D g_tTex2du1; + +RWTexture3D g_tTex3df1; +RWTexture3D g_tTex3di1; +RWTexture3D g_tTex3du1; + +RWTexture1DArray g_tTex1df1a; +RWTexture1DArray g_tTex1di1a; +RWTexture1DArray g_tTex1du1a; + +RWTexture2DArray g_tTex2df1a; +RWTexture2DArray g_tTex2di1a; +RWTexture2DArray g_tTex2du1a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +uniform float uf1; +uniform int ui1; +uniform uint uu1; + +int Fn1(in int x) { return x; } +uint Fn1(in uint x) { return x; } +float Fn1(in float x) { return x; } + +void Fn2(out int x) { x = int(0); } +void Fn2(out uint x) { x = uint(0); } +void Fn2(out float x) { x = float(0); } + +float SomeValue() { return c1; } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df1[c1]; + + float r00 = g_tTex1df1[c1]; + int r01 = g_tTex1di1[c1]; + uint r02 = g_tTex1du1[c1]; + + // 2D + float r10 = g_tTex2df1[c2]; + int r11 = g_tTex2di1[c2]; + uint r12 = g_tTex2du1[c2]; + + // 3D + float r20 = g_tTex3df1[c3]; + int r21 = g_tTex3di1[c3]; + uint r22 = g_tTex3du1[c3]; + + float lf1 = uf1; + + // Test as L-values + // 1D + g_tTex1df1[c1] = SomeValue(); // complex R-value + g_tTex1df1[c1] = lf1; + g_tTex1di1[c1] = int(2); + g_tTex1du1[c1] = uint(3); + + // Test some operator= things, which need to do both a load and a store. + float val1 = (g_tTex1df1[c1] *= 2.0); + g_tTex1df1[c1] -= 3.0; + g_tTex1df1[c1] += 4.0; + + g_tTex1di1[c1] /= 2; + g_tTex1di1[c1] %= 2; + g_tTex1di1[c1] &= 0xffff; + g_tTex1di1[c1] |= 0xf0f0; + g_tTex1di1[c1] <<= 2; + g_tTex1di1[c1] >>= 2; + + // 2D + g_tTex2df1[c2] = SomeValue(); // complex L-value + g_tTex2df1[c2] = lf1; + g_tTex2di1[c2] = int(5); + g_tTex2du1[c2] = uint(6); + + // 3D + g_tTex3df1[c3] = SomeValue(); // complex L-value + g_tTex3df1[c3] = lf1; + g_tTex3di1[c3] = int(8); + g_tTex3du1[c3] = uint(9); + + // Test function calling + Fn1(g_tTex1df1[c1]); // in + Fn1(g_tTex1di1[c1]); // in + Fn1(g_tTex1du1[c1]); // in + + Fn2(g_tTex1df1[c1]); // out + Fn2(g_tTex1di1[c1]); // out + Fn2(g_tTex1du1[c1]); // out + + // Test increment operators + // pre-ops + ++g_tTex1df1[c1]; + ++g_tTex1di1[c1]; + ++g_tTex1du1[c1]; + + --g_tTex1df1[c1]; + --g_tTex1di1[c1]; + --g_tTex1du1[c1]; + + // post-ops + g_tTex1df1[c1]++; + g_tTex1du1[c1]--; + g_tTex1di1[c1]++; + + g_tTex1df1[c1]--; + g_tTex1di1[c1]++; + g_tTex1du1[c1]--; + + // read and write + g_tTex1df1[1] = g_tTex2df1[int2(2, 3)]; + + psout.Color = 1.0; + + return psout; +} diff --git a/Test/hlsl.rw.vec2.bracket.frag b/Test/hlsl.rw.vec2.bracket.frag new file mode 100644 index 00000000..7b4a10a8 --- /dev/null +++ b/Test/hlsl.rw.vec2.bracket.frag @@ -0,0 +1,140 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df2; +RWTexture1D g_tTex1di2; +RWTexture1D g_tTex1du2; + +RWTexture2D g_tTex2df2; +RWTexture2D g_tTex2di2; +RWTexture2D g_tTex2du2; + +RWTexture3D g_tTex3df2; +RWTexture3D g_tTex3di2; +RWTexture3D g_tTex3du2; + +RWTexture1DArray g_tTex1df2a; +RWTexture1DArray g_tTex1di2a; +RWTexture1DArray g_tTex1du2a; + +RWTexture2DArray g_tTex2df2a; +RWTexture2DArray g_tTex2di2a; +RWTexture2DArray g_tTex2du2a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +uniform float2 uf2; +uniform int2 ui2; +uniform uint2 uu2; + +int2 Fn1(in int2 x) { return x; } +uint2 Fn1(in uint2 x) { return x; } +float2 Fn1(in float2 x) { return x; } + +void Fn2(out int2 x) { x = int2(0,0); } +void Fn2(out uint2 x) { x = uint2(0,0); } +void Fn2(out float2 x) { x = float2(0,0); } + +float2 SomeValue() { return c2; } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df2[c1]; + + float2 r00 = g_tTex1df2[c1]; + int2 r01 = g_tTex1di2[c1]; + uint2 r02 = g_tTex1du2[c1]; + + // 2D + float2 r10 = g_tTex2df2[c2]; + int2 r11 = g_tTex2di2[c2]; + uint2 r12 = g_tTex2du2[c2]; + + // 3D + float2 r20 = g_tTex3df2[c3]; + int2 r21 = g_tTex3di2[c3]; + uint2 r22 = g_tTex3du2[c3]; + + float2 lf2 = uf2; + + // Test as L-values + // 1D + g_tTex1df2[c1] = SomeValue(); // complex R-value + g_tTex1df2[c1] = lf2; + g_tTex1di2[c1] = int2(2,2); + g_tTex1du2[c1] = uint2(3,2); + + // Test some operator= things, which need to do both a load and a store. + float2 val1 = (g_tTex1df2[c1] *= 2.0); + g_tTex1df2[c1] -= 3.0; + g_tTex1df2[c1] += 4.0; + + g_tTex1di2[c1] /= 2; + g_tTex1di2[c1] %= 2; + g_tTex1di2[c1] &= 0xffff; + g_tTex1di2[c1] |= 0xf0f0; + g_tTex1di2[c1] <<= 2; + g_tTex1di2[c1] >>= 2; + + // 2D + g_tTex2df2[c2] = SomeValue(); // complex L-value + g_tTex2df2[c2] = lf2; + g_tTex2di2[c2] = int2(5,2); + g_tTex2du2[c2] = uint2(6,2); + + // 3D + g_tTex3df2[c3] = SomeValue(); // complex L-value + g_tTex3df2[c3] = lf2; + g_tTex3di2[c3] = int2(8,6); + g_tTex3du2[c3] = uint2(9,2); + + // Test function calling + Fn1(g_tTex1df2[c1]); // in + Fn1(g_tTex1di2[c1]); // in + Fn1(g_tTex1du2[c1]); // in + + Fn2(g_tTex1df2[c1]); // out + Fn2(g_tTex1di2[c1]); // out + Fn2(g_tTex1du2[c1]); // out + + // Test increment operators + // pre-ops + ++g_tTex1df2[c1]; + ++g_tTex1di2[c1]; + ++g_tTex1du2[c1]; + + --g_tTex1df2[c1]; + --g_tTex1di2[c1]; + --g_tTex1du2[c1]; + + // post-ops + g_tTex1df2[c1]++; + g_tTex1du2[c1]--; + g_tTex1di2[c1]++; + + g_tTex1df2[c1]--; + g_tTex1di2[c1]++; + g_tTex1du2[c1]--; + + // read and write + g_tTex1df2[1] = g_tTex2df2[int2(2,3)]; + + psout.Color = 1.0; + + return psout; +} diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 35b48312..fb3fb92f 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -823,6 +823,53 @@ public: default: return "none"; } } + static int getLayoutComponentCount(TLayoutFormat f) + { + switch (f) { + case ElfRgba32f: return 4; + case ElfRgba16f: return 4; + case ElfRg32f: return 2; + case ElfRg16f: return 2; + case ElfR11fG11fB10f: return 3; + case ElfR32f: return 1; + case ElfR16f: return 1; + case ElfRgba16: return 4; + case ElfRgb10A2: return 4; + case ElfRgba8: return 4; + case ElfRg16: return 2; + case ElfRg8: return 2; + case ElfR16: return 1; + case ElfR8: return 1; + case ElfRgba16Snorm: return 4; + case ElfRgba8Snorm: return 4; + case ElfRg16Snorm: return 2; + case ElfRg8Snorm: return 2; + case ElfR16Snorm: return 1; + case ElfR8Snorm: return 1; + + case ElfRgba32i: return 4; + case ElfRgba16i: return 4; + case ElfRgba8i: return 4; + case ElfRg32i: return 2; + case ElfRg16i: return 2; + case ElfRg8i: return 2; + case ElfR32i: return 1; + case ElfR16i: return 1; + case ElfR8i: return 1; + + case ElfRgba32ui: return 4; + case ElfRgba16ui: return 4; + case ElfRgba8ui: return 4; + case ElfRg32ui: return 2; + case ElfRg16ui: return 2; + case ElfRgb10a2ui: return 4; + case ElfRg8ui: return 2; + case ElfR32ui: return 1; + case ElfR16ui: return 1; + case ElfR8ui: return 1; + default: return 4; + } + } static const char* getLayoutDepthString(TLayoutDepth d) { switch (d) { diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 354a5dfe..cfca4b98 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -134,6 +134,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.load.basic.dx10.frag", "main"}, {"hlsl.load.basic.dx10.vert", "main"}, {"hlsl.load.buffer.dx10.frag", "main"}, + {"hlsl.load.buffer.float.dx10.frag", "main"}, {"hlsl.load.rwbuffer.dx10.frag", "main"}, {"hlsl.load.rwtexture.dx10.frag", "main"}, {"hlsl.load.rwtexture.array.dx10.frag", "main"}, @@ -148,6 +149,8 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.precise.frag", "main"}, {"hlsl.promotions.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, + {"hlsl.rw.scalar.bracket.frag", "main"}, + {"hlsl.rw.vec2.bracket.frag", "main"}, {"hlsl.sample.array.dx10.frag", "main"}, {"hlsl.sample.basic.dx10.frag", "main"}, {"hlsl.sample.offset.dx10.frag", "main"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 5f9ec267..c9c4716e 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -907,11 +907,11 @@ bool HlslGrammar::acceptTextureType(TType& type) return false; } - if (txType.getVectorSize() != 1 && txType.getVectorSize() != 4) { - // TODO: handle vec2/3 types - expected("vector size not yet supported in texture type"); - return false; - } + // if (txType.getVectorSize() != 1 && txType.getVectorSize() != 4 && !image) { + // // TODO: handle vec2/3 types + // expected("vector size not yet supported in texture type"); + // return false; + // } if (ms && acceptTokenClass(EHTokComma)) { // read sample count for multisample types, if given @@ -937,24 +937,14 @@ bool HlslGrammar::acceptTextureType(TType& type) } TArraySizes* arraySizes = nullptr; - const bool shadow = !image && (txType.isScalar() || (txType.isVector() && txType.getVectorSize() == 1)); + const bool shadow = false; // declared on the sampler TSampler sampler; TLayoutFormat format = ElfNone; - // RWBuffer and RWTexture (images) require a TLayoutFormat. We handle only a limit set. - if (image) { - if (txType.getVectorSize() != 4) - expected("4 component image"); - - switch (txType.getBasicType()) { - case EbtFloat: format = ElfRgba32f; break; - case EbtInt: format = ElfRgba32i; break; - case EbtUint: format = ElfRgba32ui; break; - default: - expected("unknown basic type in image format"); - } - } + // Buffer, RWBuffer and RWTexture (images) require a TLayoutFormat. We handle only a limit set. + if (image || dim == EsdBuffer) + format = parseContext.getLayoutFromTxType(token.loc, txType); // Non-image Buffers are combined if (dim == EsdBuffer && !image) { diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 3137bedb..1ba7d08a 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -147,6 +147,28 @@ bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const return false; } +// +// Return a TLayoutFormat corresponding to the given texture type. +// +TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const TType& txType) +{ + const int components = txType.getVectorSize(); + + const auto select = [&](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) { + return components == 1 ? v1 : + components == 2 ? v2 : v4; + }; + + switch (txType.getBasicType()) { + case EbtFloat: return select(ElfR32f, ElfRg32f, ElfRgba32f); + case EbtInt: return select(ElfR32i, ElfRg32i, ElfRgba32i); + case EbtUint: return select(ElfR32ui, ElfRg32ui, ElfRgba32ui); + default: + error(loc, "unknown basic type in image format", "", ""); + return ElfNone; + } +} + // // 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. @@ -265,10 +287,14 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* TIntermTyped* coord = lhsAsAggregate->getSequence()[1]->getAsTyped(); const TLayoutFormat fmt = object->getType().getQualifier().layoutFormat; - // We only handle 4 component formats at the moment. - assert(fmt == ElfRgba32f || fmt == ElfRgba32i || fmt == ElfRgba32ui); - const TType objDerefType(object->getType().getSampler().type, EvqTemporary, 4); + // We only handle this subset of the possible formats. + assert(fmt == ElfRgba32f || fmt == ElfRgba32i || fmt == ElfRgba32ui || + fmt == ElfRg32f || fmt == ElfRg32i || fmt == ElfRg32ui || + fmt == ElfR32f || fmt == ElfR32i || fmt == ElfR32ui); + + const TType objDerefType(object->getType().getSampler().type, EvqTemporary, + TQualifier::getLayoutComponentCount(fmt)); if (nodeAsBinary) { TIntermTyped* rhs = nodeAsBinary->getRight(); @@ -578,7 +604,7 @@ TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIn if (base->getType().getBasicType() == EbtSampler && !base->isArray()) { const TSampler& sampler = base->getType().getSampler(); if (sampler.isImage() || sampler.isTexture()) { - const int vecSize = 4; // TODO: handle arbitrary sizes (get from qualifier) + const int vecSize = TQualifier::getLayoutComponentCount(base->getType().getQualifier().layoutFormat); TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch); load->setType(TType(sampler.type, EvqTemporary, vecSize)); @@ -1781,7 +1807,9 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType txfetch->getSequence().push_back(argOffset); } - txfetch->setType(node->getType()); + int vecSize = TQualifier::getLayoutComponentCount(argTex->getType().getQualifier().layoutFormat); + + txfetch->setType(TType(node->getType().getBasicType(), EvqTemporary, vecSize)); txfetch->setLoc(loc); node = txfetch; diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index d8e75466..2eeba5ac 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -156,6 +156,8 @@ public: TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped* node); bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; + TLayoutFormat getLayoutFromTxType(const TSourceLoc&, const TType&); + protected: void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; From 8b0227ced9c46b2f28f8871df959cfa6b77dd289 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 14 Oct 2016 16:40:32 -0600 Subject: [PATCH 065/130] HLSL: phase 3b: Texture methods remember and return vector size. Also makes a (correct) test change for global -> temp vars. --- Test/baseResults/hlsl.array.flatten.frag.out | 8 +- .../hlsl.load.buffer.float.dx10.frag.out | 220 +++++++-------- .../hlsl.sample.array.dx10.frag.out | 36 +-- .../hlsl.sample.basic.dx10.frag.out | 48 ++-- .../hlsl.sample.offset.dx10.frag.out | 36 +-- .../hlsl.sample.offsetarray.dx10.frag.out | 24 +- .../hlsl.sample.sub-vec4.dx10.frag.out | 252 ++++++++++++++++++ .../hlsl.samplebias.array.dx10.frag.out | 36 +-- .../hlsl.samplebias.basic.dx10.frag.out | 48 ++-- .../hlsl.samplebias.offset.dx10.frag.out | 36 +-- .../hlsl.samplebias.offsetarray.dx10.frag.out | 24 +- .../hlsl.samplegrad.array.dx10.frag.out | 36 +-- .../hlsl.samplegrad.basic.dx10.frag.out | 48 ++-- .../hlsl.samplegrad.basic.dx10.vert.out | 48 ++-- .../hlsl.samplegrad.offset.dx10.frag.out | 36 +-- .../hlsl.samplegrad.offsetarray.dx10.frag.out | 24 +- .../hlsl.samplelevel.array.dx10.frag.out | 36 +-- .../hlsl.samplelevel.basic.dx10.frag.out | 48 ++-- .../hlsl.samplelevel.basic.dx10.vert.out | 48 ++-- .../hlsl.samplelevel.offset.dx10.frag.out | 36 +-- ...hlsl.samplelevel.offsetarray.dx10.frag.out | 24 +- Test/hlsl.sample.sub-vec4.dx10.frag | 24 ++ glslang/Include/Types.h | 52 +--- gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 9 +- hlsl/hlslParseHelper.cpp | 97 ++++--- hlsl/hlslParseables.cpp | 6 +- 27 files changed, 800 insertions(+), 541 deletions(-) create mode 100644 Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out create mode 100644 Test/hlsl.sample.sub-vec4.dx10.frag diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index 185c2cc6..cbfb0ef9 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -6,7 +6,7 @@ gl_FragCoord origin is upper left 0:17 Function Parameters: 0:? Sequence 0:18 Branch: Return with expression -0:18 texture (global 4-component vector of float) +0:18 texture (temp 4-component vector of float) 0:18 Construct combined texture-sampler (temp sampler1D) 0:? 'g_tex[1]' (uniform texture1D) 0:? 'g_samp[1]' (uniform sampler) @@ -18,7 +18,7 @@ gl_FragCoord origin is upper left 0:22 'l_samp' (in 3-element array of sampler) 0:? Sequence 0:23 Branch: Return with expression -0:23 texture (global 4-component vector of float) +0:23 texture (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1D) 0:23 direct index (temp texture1D) 0:23 'l_tex' (in 3-element array of texture1D) @@ -165,7 +165,7 @@ gl_FragCoord origin is upper left 0:17 Function Parameters: 0:? Sequence 0:18 Branch: Return with expression -0:18 texture (global 4-component vector of float) +0:18 texture (temp 4-component vector of float) 0:18 Construct combined texture-sampler (temp sampler1D) 0:? 'g_tex[1]' (uniform texture1D) 0:? 'g_samp[1]' (uniform sampler) @@ -177,7 +177,7 @@ gl_FragCoord origin is upper left 0:22 'l_samp' (in 3-element array of sampler) 0:? Sequence 0:23 Branch: Return with expression -0:23 texture (global 4-component vector of float) +0:23 texture (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1D) 0:23 direct index (temp texture1D) 0:23 'l_tex' (in 3-element array of texture1D) diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out index 87e96802..6d64b94c 100644 --- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -8,30 +8,33 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp float) 0:28 'r00' (temp float) -0:28 textureFetch (temp float) -0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) -0:28 c1: direct index for structure (layout(offset=0 ) uniform int) -0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:28 Constant: -0:28 0 (const uint) +0:28 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child (temp int) 0:29 'r01' (temp int) -0:29 textureFetch (temp int) -0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) -0:29 c1: direct index for structure (layout(offset=0 ) uniform int) -0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:29 Constant: -0:29 0 (const uint) +0:29 Construct int (temp int) +0:? textureFetch (temp 4-component vector of int) +0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child (temp uint) 0:30 'r02' (temp uint) -0:30 textureFetch (temp uint) -0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) -0:30 c1: direct index for structure (layout(offset=0 ) uniform int) -0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:30 Constant: -0:30 0 (const uint) +0:30 Construct uint (temp uint) +0:? textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) 0:34 move second child to first child (temp 4-component vector of float) 0:34 Color: direct index for structure (temp 4-component vector of float) 0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -86,30 +89,33 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp float) 0:28 'r00' (temp float) -0:28 textureFetch (temp float) -0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) -0:28 c1: direct index for structure (layout(offset=0 ) uniform int) -0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:28 Constant: -0:28 0 (const uint) +0:28 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) 0:29 Sequence 0:29 move second child to first child (temp int) 0:29 'r01' (temp int) -0:29 textureFetch (temp int) -0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) -0:29 c1: direct index for structure (layout(offset=0 ) uniform int) -0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:29 Constant: -0:29 0 (const uint) +0:29 Construct int (temp int) +0:? textureFetch (temp 4-component vector of int) +0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) 0:30 Sequence 0:30 move second child to first child (temp uint) 0:30 'r02' (temp uint) -0:30 textureFetch (temp uint) -0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) -0:30 c1: direct index for structure (layout(offset=0 ) uniform int) -0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:30 Constant: -0:30 0 (const uint) +0:30 Construct uint (temp uint) +0:? textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) 0:34 move second child to first child (temp 4-component vector of float) 0:34 Color: direct index for structure (temp 4-component vector of float) 0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) @@ -153,13 +159,13 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 70 +// Id's are bound by 74 Capability Shader Capability SampledBuffer 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 61 65 + EntryPoint Fragment 4 "main" 65 69 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r00" @@ -174,17 +180,17 @@ gl_FragCoord origin is upper left MemberName 18($Global) 6 "o3" MemberName 18($Global) 7 "o4" Name 20 "" - Name 28 "r01" - Name 32 "g_tTexbis" - Name 40 "r02" - Name 44 "g_tTexbus" - Name 51 "PS_OUTPUT" - MemberName 51(PS_OUTPUT) 0 "Color" - MemberName 51(PS_OUTPUT) 1 "Depth" - Name 53 "psout" - Name 61 "Color" - Name 65 "Depth" - Name 69 "g_tTexbfs_test" + Name 30 "r01" + Name 34 "g_tTexbis" + Name 43 "r02" + Name 47 "g_tTexbus" + Name 55 "PS_OUTPUT" + MemberName 55(PS_OUTPUT) 0 "Color" + MemberName 55(PS_OUTPUT) 1 "Depth" + Name 57 "psout" + Name 65 "Color" + Name 69 "Depth" + Name 73 "g_tTexbfs_test" Decorate 12(g_tTexbfs) DescriptorSet 0 MemberDecorate 18($Global) 0 Offset 0 MemberDecorate 18($Global) 1 Offset 8 @@ -196,12 +202,12 @@ gl_FragCoord origin is upper left MemberDecorate 18($Global) 7 Offset 80 Decorate 18($Global) Block Decorate 20 DescriptorSet 0 - Decorate 32(g_tTexbis) DescriptorSet 0 - Decorate 44(g_tTexbus) DescriptorSet 0 - Decorate 61(Color) Location 0 - Decorate 65(Depth) BuiltIn FragDepth - Decorate 69(g_tTexbfs_test) DescriptorSet 0 - Decorate 69(g_tTexbfs_test) Binding 0 + Decorate 34(g_tTexbis) DescriptorSet 0 + Decorate 47(g_tTexbus) DescriptorSet 0 + Decorate 65(Color) Location 0 + Decorate 69(Depth) BuiltIn FragDepth + Decorate 73(g_tTexbfs_test) DescriptorSet 0 + Decorate 73(g_tTexbfs_test) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -219,62 +225,66 @@ gl_FragCoord origin is upper left 20: 19(ptr) Variable Uniform 21: 14(int) Constant 0 22: TypePointer Uniform 14(int) - 27: TypePointer Function 14(int) - 29: TypeImage 14(int) Buffer sampled format:R32i - 30: TypeSampledImage 29 - 31: TypePointer UniformConstant 30 - 32(g_tTexbis): 31(ptr) Variable UniformConstant - 38: TypeInt 32 0 - 39: TypePointer Function 38(int) - 41: TypeImage 38(int) Buffer sampled format:R32ui - 42: TypeSampledImage 41 - 43: TypePointer UniformConstant 42 - 44(g_tTexbus): 43(ptr) Variable UniformConstant - 50: TypeVector 6(float) 4 - 51(PS_OUTPUT): TypeStruct 50(fvec4) 6(float) - 52: TypePointer Function 51(PS_OUTPUT) - 54: 6(float) Constant 1065353216 - 55: 50(fvec4) ConstantComposite 54 54 54 54 - 56: TypePointer Function 50(fvec4) - 58: 14(int) Constant 1 - 60: TypePointer Output 50(fvec4) - 61(Color): 60(ptr) Variable Output - 64: TypePointer Output 6(float) - 65(Depth): 64(ptr) Variable Output -69(g_tTexbfs_test): 11(ptr) Variable UniformConstant + 26: TypeVector 6(float) 4 + 29: TypePointer Function 14(int) + 31: TypeImage 14(int) Buffer sampled format:R32i + 32: TypeSampledImage 31 + 33: TypePointer UniformConstant 32 + 34(g_tTexbis): 33(ptr) Variable UniformConstant + 41: TypeInt 32 0 + 42: TypePointer Function 41(int) + 44: TypeImage 41(int) Buffer sampled format:R32ui + 45: TypeSampledImage 44 + 46: TypePointer UniformConstant 45 + 47(g_tTexbus): 46(ptr) Variable UniformConstant + 52: TypeVector 41(int) 4 + 55(PS_OUTPUT): TypeStruct 26(fvec4) 6(float) + 56: TypePointer Function 55(PS_OUTPUT) + 58: 6(float) Constant 1065353216 + 59: 26(fvec4) ConstantComposite 58 58 58 58 + 60: TypePointer Function 26(fvec4) + 62: 14(int) Constant 1 + 64: TypePointer Output 26(fvec4) + 65(Color): 64(ptr) Variable Output + 68: TypePointer Output 6(float) + 69(Depth): 68(ptr) Variable Output +73(g_tTexbfs_test): 11(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r00): 7(ptr) Variable Function - 28(r01): 27(ptr) Variable Function - 40(r02): 39(ptr) Variable Function - 53(psout): 52(ptr) Variable Function + 30(r01): 29(ptr) Variable Function + 43(r02): 42(ptr) Variable Function + 57(psout): 56(ptr) Variable Function 13: 10 Load 12(g_tTexbfs) 23: 22(ptr) AccessChain 20 21 24: 14(int) Load 23 25: 9 Image 13 - 26: 6(float) ImageFetch 25 24 - Store 8(r00) 26 - 33: 30 Load 32(g_tTexbis) - 34: 22(ptr) AccessChain 20 21 - 35: 14(int) Load 34 - 36: 29 Image 33 - 37: 14(int) ImageFetch 36 35 - Store 28(r01) 37 - 45: 42 Load 44(g_tTexbus) - 46: 22(ptr) AccessChain 20 21 - 47: 14(int) Load 46 - 48: 41 Image 45 - 49: 38(int) ImageFetch 48 47 - Store 40(r02) 49 - 57: 56(ptr) AccessChain 53(psout) 21 - Store 57 55 - 59: 7(ptr) AccessChain 53(psout) 58 - Store 59 54 - 62: 56(ptr) AccessChain 53(psout) 21 - 63: 50(fvec4) Load 62 - Store 61(Color) 63 - 66: 7(ptr) AccessChain 53(psout) 58 - 67: 6(float) Load 66 - Store 65(Depth) 67 + 27: 26(fvec4) ImageFetch 25 24 + 28: 6(float) CompositeExtract 27 0 + Store 8(r00) 28 + 35: 32 Load 34(g_tTexbis) + 36: 22(ptr) AccessChain 20 21 + 37: 14(int) Load 36 + 38: 31 Image 35 + 39: 17(ivec4) ImageFetch 38 37 + 40: 14(int) CompositeExtract 39 0 + Store 30(r01) 40 + 48: 45 Load 47(g_tTexbus) + 49: 22(ptr) AccessChain 20 21 + 50: 14(int) Load 49 + 51: 44 Image 48 + 53: 52(ivec4) ImageFetch 51 50 + 54: 41(int) CompositeExtract 53 0 + Store 43(r02) 54 + 61: 60(ptr) AccessChain 57(psout) 21 + Store 61 59 + 63: 7(ptr) AccessChain 57(psout) 62 + Store 63 58 + 66: 60(ptr) AccessChain 57(psout) 21 + 67: 26(fvec4) Load 66 + Store 65(Color) 67 + 70: 7(ptr) AccessChain 57(psout) 62 + 71: 6(float) Load 70 + Store 69(Depth) 71 Return FunctionEnd diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out index bb2962d9..6c6f187b 100644 --- a/Test/baseResults/hlsl.sample.array.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 texture (global 4-component vector of float) +0:27 texture (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -18,7 +18,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 texture (global 4-component vector of int) +0:28 texture (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -28,7 +28,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 texture (global 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 texture (global 4-component vector of float) +0:31 texture (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -49,7 +49,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 texture (global 4-component vector of int) +0:32 texture (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -60,7 +60,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 texture (global 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -71,7 +71,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 texture (global 4-component vector of float) +0:35 texture (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -83,7 +83,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 texture (global 4-component vector of int) +0:36 texture (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -95,7 +95,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 texture (global 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 texture (global 4-component vector of float) +0:27 texture (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -174,7 +174,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 texture (global 4-component vector of int) +0:28 texture (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 texture (global 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 texture (global 4-component vector of float) +0:31 texture (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -205,7 +205,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 texture (global 4-component vector of int) +0:32 texture (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -216,7 +216,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 texture (global 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -227,7 +227,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 texture (global 4-component vector of float) +0:35 texture (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -239,7 +239,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 texture (global 4-component vector of int) +0:36 texture (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -251,7 +251,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 texture (global 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out index b6cc8c6d..de9a4f4b 100644 --- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -94,7 +94,7 @@ gl_FragCoord origin is upper left 0:70 Sequence 0:70 move second child to first child (temp 4-component vector of float) 0:70 'txval10' (temp 4-component vector of float) -0:70 texture (global 4-component vector of float) +0:70 texture (temp 4-component vector of float) 0:70 Construct combined texture-sampler (temp sampler1D) 0:70 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -103,7 +103,7 @@ gl_FragCoord origin is upper left 0:71 Sequence 0:71 move second child to first child (temp 4-component vector of int) 0:71 'txval11' (temp 4-component vector of int) -0:71 texture (global 4-component vector of int) +0:71 texture (temp 4-component vector of int) 0:71 Construct combined texture-sampler (temp isampler1D) 0:71 'g_tTex1di4' (uniform itexture1D) 0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -112,7 +112,7 @@ gl_FragCoord origin is upper left 0:72 Sequence 0:72 move second child to first child (temp 4-component vector of uint) 0:72 'txval12' (temp 4-component vector of uint) -0:72 texture (global 4-component vector of uint) +0:72 texture (temp 4-component vector of uint) 0:72 Construct combined texture-sampler (temp usampler1D) 0:72 'g_tTex1du4' (uniform utexture1D) 0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -121,7 +121,7 @@ gl_FragCoord origin is upper left 0:74 Sequence 0:74 move second child to first child (temp 4-component vector of float) 0:74 'txval20' (temp 4-component vector of float) -0:74 texture (global 4-component vector of float) +0:74 texture (temp 4-component vector of float) 0:74 Construct combined texture-sampler (temp sampler2D) 0:74 'g_tTex2df4' (uniform texture2D) 0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -131,7 +131,7 @@ gl_FragCoord origin is upper left 0:75 Sequence 0:75 move second child to first child (temp 4-component vector of int) 0:75 'txval21' (temp 4-component vector of int) -0:75 texture (global 4-component vector of int) +0:75 texture (temp 4-component vector of int) 0:75 Construct combined texture-sampler (temp isampler2D) 0:75 'g_tTex2di4' (uniform itexture2D) 0:75 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -141,7 +141,7 @@ gl_FragCoord origin is upper left 0:76 Sequence 0:76 move second child to first child (temp 4-component vector of uint) 0:76 'txval22' (temp 4-component vector of uint) -0:76 texture (global 4-component vector of uint) +0:76 texture (temp 4-component vector of uint) 0:76 Construct combined texture-sampler (temp usampler2D) 0:76 'g_tTex2du4' (uniform utexture2D) 0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -151,7 +151,7 @@ gl_FragCoord origin is upper left 0:78 Sequence 0:78 move second child to first child (temp 4-component vector of float) 0:78 'txval30' (temp 4-component vector of float) -0:78 texture (global 4-component vector of float) +0:78 texture (temp 4-component vector of float) 0:78 Construct combined texture-sampler (temp sampler3D) 0:78 'g_tTex3df4' (uniform texture3D) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -162,7 +162,7 @@ gl_FragCoord origin is upper left 0:79 Sequence 0:79 move second child to first child (temp 4-component vector of int) 0:79 'txval31' (temp 4-component vector of int) -0:79 texture (global 4-component vector of int) +0:79 texture (temp 4-component vector of int) 0:79 Construct combined texture-sampler (temp isampler3D) 0:79 'g_tTex3di4' (uniform itexture3D) 0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -173,7 +173,7 @@ gl_FragCoord origin is upper left 0:80 Sequence 0:80 move second child to first child (temp 4-component vector of uint) 0:80 'txval32' (temp 4-component vector of uint) -0:80 texture (global 4-component vector of uint) +0:80 texture (temp 4-component vector of uint) 0:80 Construct combined texture-sampler (temp usampler3D) 0:80 'g_tTex3du4' (uniform utexture3D) 0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:82 Sequence 0:82 move second child to first child (temp 4-component vector of float) 0:82 'txval40' (temp 4-component vector of float) -0:82 texture (global 4-component vector of float) +0:82 texture (temp 4-component vector of float) 0:82 Construct combined texture-sampler (temp samplerCube) 0:82 'g_tTexcdf4' (uniform textureCube) 0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -195,7 +195,7 @@ gl_FragCoord origin is upper left 0:83 Sequence 0:83 move second child to first child (temp 4-component vector of int) 0:83 'txval41' (temp 4-component vector of int) -0:83 texture (global 4-component vector of int) +0:83 texture (temp 4-component vector of int) 0:83 Construct combined texture-sampler (temp isamplerCube) 0:83 'g_tTexcdi4' (uniform itextureCube) 0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -206,7 +206,7 @@ gl_FragCoord origin is upper left 0:84 Sequence 0:84 move second child to first child (temp 4-component vector of uint) 0:84 'txval42' (temp 4-component vector of uint) -0:84 texture (global 4-component vector of uint) +0:84 texture (temp 4-component vector of uint) 0:84 Construct combined texture-sampler (temp usamplerCube) 0:84 'g_tTexcdu4' (uniform utextureCube) 0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -363,7 +363,7 @@ gl_FragCoord origin is upper left 0:70 Sequence 0:70 move second child to first child (temp 4-component vector of float) 0:70 'txval10' (temp 4-component vector of float) -0:70 texture (global 4-component vector of float) +0:70 texture (temp 4-component vector of float) 0:70 Construct combined texture-sampler (temp sampler1D) 0:70 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -372,7 +372,7 @@ gl_FragCoord origin is upper left 0:71 Sequence 0:71 move second child to first child (temp 4-component vector of int) 0:71 'txval11' (temp 4-component vector of int) -0:71 texture (global 4-component vector of int) +0:71 texture (temp 4-component vector of int) 0:71 Construct combined texture-sampler (temp isampler1D) 0:71 'g_tTex1di4' (uniform itexture1D) 0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -381,7 +381,7 @@ gl_FragCoord origin is upper left 0:72 Sequence 0:72 move second child to first child (temp 4-component vector of uint) 0:72 'txval12' (temp 4-component vector of uint) -0:72 texture (global 4-component vector of uint) +0:72 texture (temp 4-component vector of uint) 0:72 Construct combined texture-sampler (temp usampler1D) 0:72 'g_tTex1du4' (uniform utexture1D) 0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -390,7 +390,7 @@ gl_FragCoord origin is upper left 0:74 Sequence 0:74 move second child to first child (temp 4-component vector of float) 0:74 'txval20' (temp 4-component vector of float) -0:74 texture (global 4-component vector of float) +0:74 texture (temp 4-component vector of float) 0:74 Construct combined texture-sampler (temp sampler2D) 0:74 'g_tTex2df4' (uniform texture2D) 0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -400,7 +400,7 @@ gl_FragCoord origin is upper left 0:75 Sequence 0:75 move second child to first child (temp 4-component vector of int) 0:75 'txval21' (temp 4-component vector of int) -0:75 texture (global 4-component vector of int) +0:75 texture (temp 4-component vector of int) 0:75 Construct combined texture-sampler (temp isampler2D) 0:75 'g_tTex2di4' (uniform itexture2D) 0:75 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -410,7 +410,7 @@ gl_FragCoord origin is upper left 0:76 Sequence 0:76 move second child to first child (temp 4-component vector of uint) 0:76 'txval22' (temp 4-component vector of uint) -0:76 texture (global 4-component vector of uint) +0:76 texture (temp 4-component vector of uint) 0:76 Construct combined texture-sampler (temp usampler2D) 0:76 'g_tTex2du4' (uniform utexture2D) 0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -420,7 +420,7 @@ gl_FragCoord origin is upper left 0:78 Sequence 0:78 move second child to first child (temp 4-component vector of float) 0:78 'txval30' (temp 4-component vector of float) -0:78 texture (global 4-component vector of float) +0:78 texture (temp 4-component vector of float) 0:78 Construct combined texture-sampler (temp sampler3D) 0:78 'g_tTex3df4' (uniform texture3D) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -431,7 +431,7 @@ gl_FragCoord origin is upper left 0:79 Sequence 0:79 move second child to first child (temp 4-component vector of int) 0:79 'txval31' (temp 4-component vector of int) -0:79 texture (global 4-component vector of int) +0:79 texture (temp 4-component vector of int) 0:79 Construct combined texture-sampler (temp isampler3D) 0:79 'g_tTex3di4' (uniform itexture3D) 0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -442,7 +442,7 @@ gl_FragCoord origin is upper left 0:80 Sequence 0:80 move second child to first child (temp 4-component vector of uint) 0:80 'txval32' (temp 4-component vector of uint) -0:80 texture (global 4-component vector of uint) +0:80 texture (temp 4-component vector of uint) 0:80 Construct combined texture-sampler (temp usampler3D) 0:80 'g_tTex3du4' (uniform utexture3D) 0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -453,7 +453,7 @@ gl_FragCoord origin is upper left 0:82 Sequence 0:82 move second child to first child (temp 4-component vector of float) 0:82 'txval40' (temp 4-component vector of float) -0:82 texture (global 4-component vector of float) +0:82 texture (temp 4-component vector of float) 0:82 Construct combined texture-sampler (temp samplerCube) 0:82 'g_tTexcdf4' (uniform textureCube) 0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -464,7 +464,7 @@ gl_FragCoord origin is upper left 0:83 Sequence 0:83 move second child to first child (temp 4-component vector of int) 0:83 'txval41' (temp 4-component vector of int) -0:83 texture (global 4-component vector of int) +0:83 texture (temp 4-component vector of int) 0:83 Construct combined texture-sampler (temp isamplerCube) 0:83 'g_tTexcdi4' (uniform itextureCube) 0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -475,7 +475,7 @@ gl_FragCoord origin is upper left 0:84 Sequence 0:84 move second child to first child (temp 4-component vector of uint) 0:84 'txval42' (temp 4-component vector of uint) -0:84 texture (global 4-component vector of uint) +0:84 texture (temp 4-component vector of uint) 0:84 Construct combined texture-sampler (temp usamplerCube) 0:84 'g_tTexcdu4' (uniform utextureCube) 0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out index 9de5f49b..67bf043f 100644 --- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureOffset (global 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -19,7 +19,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureOffset (global 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -30,7 +30,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureOffset (global 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -41,7 +41,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureOffset (global 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -54,7 +54,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureOffset (global 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -67,7 +67,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureOffset (global 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -80,7 +80,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureOffset (global 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -95,7 +95,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureOffset (global 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -110,7 +110,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureOffset (global 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -185,7 +185,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureOffset (global 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -196,7 +196,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureOffset (global 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -207,7 +207,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureOffset (global 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -218,7 +218,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureOffset (global 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -231,7 +231,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureOffset (global 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureOffset (global 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -257,7 +257,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureOffset (global 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureOffset (global 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -287,7 +287,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureOffset (global 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out index f4646d44..83a0e8b7 100644 --- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:23 Sequence 0:23 move second child to first child (temp 4-component vector of float) 0:23 'txval10' (temp 4-component vector of float) -0:23 textureOffset (global 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1DArray) 0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -20,7 +20,7 @@ gl_FragCoord origin is upper left 0:24 Sequence 0:24 move second child to first child (temp 4-component vector of int) 0:24 'txval11' (temp 4-component vector of int) -0:24 textureOffset (global 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) 0:24 Construct combined texture-sampler (temp isampler1DArray) 0:24 'g_tTex1di4' (uniform itexture1DArray) 0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -32,7 +32,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of uint) 0:25 'txval12' (temp 4-component vector of uint) -0:25 textureOffset (global 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) 0:25 Construct combined texture-sampler (temp usampler1DArray) 0:25 'g_tTex1du4' (uniform utexture1DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval20' (temp 4-component vector of float) -0:27 textureOffset (global 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler2DArray) 0:27 'g_tTex2df4' (uniform texture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -58,7 +58,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval21' (temp 4-component vector of int) -0:28 textureOffset (global 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler2DArray) 0:28 'g_tTex2di4' (uniform itexture2DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -72,7 +72,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval22' (temp 4-component vector of uint) -0:29 textureOffset (global 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler2DArray) 0:29 'g_tTex2du4' (uniform utexture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -140,7 +140,7 @@ gl_FragCoord origin is upper left 0:23 Sequence 0:23 move second child to first child (temp 4-component vector of float) 0:23 'txval10' (temp 4-component vector of float) -0:23 textureOffset (global 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1DArray) 0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:24 Sequence 0:24 move second child to first child (temp 4-component vector of int) 0:24 'txval11' (temp 4-component vector of int) -0:24 textureOffset (global 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) 0:24 Construct combined texture-sampler (temp isampler1DArray) 0:24 'g_tTex1di4' (uniform itexture1DArray) 0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of uint) 0:25 'txval12' (temp 4-component vector of uint) -0:25 textureOffset (global 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) 0:25 Construct combined texture-sampler (temp usampler1DArray) 0:25 'g_tTex1du4' (uniform utexture1DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -176,7 +176,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval20' (temp 4-component vector of float) -0:27 textureOffset (global 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler2DArray) 0:27 'g_tTex2df4' (uniform texture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -190,7 +190,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval21' (temp 4-component vector of int) -0:28 textureOffset (global 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler2DArray) 0:28 'g_tTex2di4' (uniform itexture2DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -204,7 +204,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval22' (temp 4-component vector of uint) -0:29 textureOffset (global 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler2DArray) 0:29 'g_tTex2du4' (uniform utexture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out new file mode 100644 index 00000000..abe1cb5a --- /dev/null +++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out @@ -0,0 +1,252 @@ +hlsl.sample.sub-vec4.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'txval10' (temp float) +0:17 Construct float (temp float) +0:? texture (temp 4-component vector of float) +0:17 Construct combined texture-sampler (temp sampler1D) +0:17 'g_tTex1df1' (uniform texture1D) +0:17 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:17 Constant: +0:17 0.100000 +0:18 Sequence +0:18 move second child to first child (temp 2-component vector of float) +0:18 'txval11' (temp 2-component vector of float) +0:18 Construct float (temp 2-component vector of float) +0:? texture (temp 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:18 'g_tTex1df2' (uniform texture1D) +0:18 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:18 Constant: +0:18 0.200000 +0:19 Sequence +0:19 move second child to first child (temp 3-component vector of float) +0:19 'txval12' (temp 3-component vector of float) +0:19 Construct float (temp 3-component vector of float) +0:? texture (temp 4-component vector of float) +0:19 Construct combined texture-sampler (temp sampler1D) +0:19 'g_tTex1df3' (uniform texture1D) +0:19 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:19 Constant: +0:19 0.200000 +0:20 Sequence +0:20 move second child to first child (temp 4-component vector of float) +0:20 'txval13' (temp 4-component vector of float) +0:20 texture (temp 4-component vector of float) +0:20 Construct combined texture-sampler (temp sampler1D) +0:20 'g_tTex1df4' (uniform texture1D) +0:20 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:20 Constant: +0:20 0.200000 +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 'psout' (temp structure{temp 4-component vector of float Color}) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:23 Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:23 Color: direct index for structure (temp 4-component vector of float) +0:23 'psout' (temp structure{temp 4-component vector of float Color}) +0:23 Constant: +0:23 0 (const int) +0:23 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (uniform texture1D) +0:? 'g_tTex1df2' (uniform texture1D) +0:? 'g_tTex1df3' (uniform texture1D) +0:? 'g_tTex1df4' (uniform texture1D) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'txval10' (temp float) +0:17 Construct float (temp float) +0:? texture (temp 4-component vector of float) +0:17 Construct combined texture-sampler (temp sampler1D) +0:17 'g_tTex1df1' (uniform texture1D) +0:17 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:17 Constant: +0:17 0.100000 +0:18 Sequence +0:18 move second child to first child (temp 2-component vector of float) +0:18 'txval11' (temp 2-component vector of float) +0:18 Construct float (temp 2-component vector of float) +0:? texture (temp 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:18 'g_tTex1df2' (uniform texture1D) +0:18 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:18 Constant: +0:18 0.200000 +0:19 Sequence +0:19 move second child to first child (temp 3-component vector of float) +0:19 'txval12' (temp 3-component vector of float) +0:19 Construct float (temp 3-component vector of float) +0:? texture (temp 4-component vector of float) +0:19 Construct combined texture-sampler (temp sampler1D) +0:19 'g_tTex1df3' (uniform texture1D) +0:19 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:19 Constant: +0:19 0.200000 +0:20 Sequence +0:20 move second child to first child (temp 4-component vector of float) +0:20 'txval13' (temp 4-component vector of float) +0:20 texture (temp 4-component vector of float) +0:20 Construct combined texture-sampler (temp sampler1D) +0:20 'g_tTex1df4' (uniform texture1D) +0:20 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:20 Constant: +0:20 0.200000 +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 'psout' (temp structure{temp 4-component vector of float Color}) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:23 Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:23 Color: direct index for structure (temp 4-component vector of float) +0:23 'psout' (temp structure{temp 4-component vector of float Color}) +0:23 Constant: +0:23 0 (const int) +0:23 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (uniform texture1D) +0:? 'g_tTex1df2' (uniform texture1D) +0:? 'g_tTex1df3' (uniform texture1D) +0:? 'g_tTex1df4' (uniform texture1D) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 67 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 63 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "txval10" + Name 11 "g_tTex1df1" + Name 15 "g_sSamp" + Name 25 "txval11" + Name 26 "g_tTex1df2" + Name 37 "txval12" + Name 38 "g_tTex1df3" + Name 48 "txval13" + Name 49 "g_tTex1df4" + Name 54 "PS_OUTPUT" + MemberName 54(PS_OUTPUT) 0 "Color" + Name 56 "psout" + Name 63 "Color" + Decorate 11(g_tTex1df1) DescriptorSet 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 26(g_tTex1df2) DescriptorSet 0 + Decorate 38(g_tTex1df3) DescriptorSet 0 + Decorate 49(g_tTex1df4) DescriptorSet 0 + Decorate 63(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df1): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeSampledImage 9 + 19: 6(float) Constant 1036831949 + 20: TypeVector 6(float) 4 + 23: TypeVector 6(float) 2 + 24: TypePointer Function 23(fvec2) + 26(g_tTex1df2): 10(ptr) Variable UniformConstant + 30: 6(float) Constant 1045220557 + 35: TypeVector 6(float) 3 + 36: TypePointer Function 35(fvec3) + 38(g_tTex1df3): 10(ptr) Variable UniformConstant + 47: TypePointer Function 20(fvec4) + 49(g_tTex1df4): 10(ptr) Variable UniformConstant + 54(PS_OUTPUT): TypeStruct 20(fvec4) + 55: TypePointer Function 54(PS_OUTPUT) + 57: TypeInt 32 1 + 58: 57(int) Constant 0 + 59: 6(float) Constant 1065353216 + 60: 20(fvec4) ConstantComposite 59 59 59 59 + 62: TypePointer Output 20(fvec4) + 63(Color): 62(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 8(txval10): 7(ptr) Variable Function + 25(txval11): 24(ptr) Variable Function + 37(txval12): 36(ptr) Variable Function + 48(txval13): 47(ptr) Variable Function + 56(psout): 55(ptr) Variable Function + 12: 9 Load 11(g_tTex1df1) + 16: 13 Load 15(g_sSamp) + 18: 17 SampledImage 12 16 + 21: 20(fvec4) ImageSampleImplicitLod 18 19 + 22: 6(float) CompositeExtract 21 0 + Store 8(txval10) 22 + 27: 9 Load 26(g_tTex1df2) + 28: 13 Load 15(g_sSamp) + 29: 17 SampledImage 27 28 + 31: 20(fvec4) ImageSampleImplicitLod 29 30 + 32: 6(float) CompositeExtract 31 0 + 33: 6(float) CompositeExtract 31 1 + 34: 23(fvec2) CompositeConstruct 32 33 + Store 25(txval11) 34 + 39: 9 Load 38(g_tTex1df3) + 40: 13 Load 15(g_sSamp) + 41: 17 SampledImage 39 40 + 42: 20(fvec4) ImageSampleImplicitLod 41 30 + 43: 6(float) CompositeExtract 42 0 + 44: 6(float) CompositeExtract 42 1 + 45: 6(float) CompositeExtract 42 2 + 46: 35(fvec3) CompositeConstruct 43 44 45 + Store 37(txval12) 46 + 50: 9 Load 49(g_tTex1df4) + 51: 13 Load 15(g_sSamp) + 52: 17 SampledImage 50 51 + 53: 20(fvec4) ImageSampleImplicitLod 52 30 + Store 48(txval13) 53 + 61: 47(ptr) AccessChain 56(psout) 58 + Store 61 60 + 64: 47(ptr) AccessChain 56(psout) 58 + 65: 20(fvec4) Load 64 + Store 63(Color) 65 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out index 539855e0..b2b38b65 100644 --- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 texture (global 4-component vector of float) +0:27 texture (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -20,7 +20,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 texture (global 4-component vector of int) +0:28 texture (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -32,7 +32,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 texture (global 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 texture (global 4-component vector of float) +0:31 texture (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -57,7 +57,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 texture (global 4-component vector of int) +0:32 texture (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 texture (global 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -83,7 +83,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 texture (global 4-component vector of float) +0:35 texture (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -97,7 +97,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 texture (global 4-component vector of int) +0:36 texture (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -111,7 +111,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 texture (global 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -182,7 +182,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 texture (global 4-component vector of float) +0:27 texture (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 texture (global 4-component vector of int) +0:28 texture (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -206,7 +206,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 texture (global 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -218,7 +218,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 texture (global 4-component vector of float) +0:31 texture (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -231,7 +231,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 texture (global 4-component vector of int) +0:32 texture (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 texture (global 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -257,7 +257,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 texture (global 4-component vector of float) +0:35 texture (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -271,7 +271,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 texture (global 4-component vector of int) +0:36 texture (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -285,7 +285,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 texture (global 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out index 9fb8b1a0..c7949146 100644 --- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 texture (global 4-component vector of float) +0:31 texture (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -19,7 +19,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 texture (global 4-component vector of int) +0:32 texture (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -30,7 +30,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 texture (global 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -41,7 +41,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 texture (global 4-component vector of float) +0:35 texture (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 texture (global 4-component vector of int) +0:36 texture (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 texture (global 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 texture (global 4-component vector of float) +0:39 texture (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -90,7 +90,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 texture (global 4-component vector of int) +0:40 texture (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -103,7 +103,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 texture (global 4-component vector of uint) +0:41 texture (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -116,7 +116,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:43 'txval40' (temp 4-component vector of float) -0:43 texture (global 4-component vector of float) +0:43 texture (temp 4-component vector of float) 0:43 Construct combined texture-sampler (temp samplerCube) 0:43 'g_tTexcdf4' (uniform textureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -129,7 +129,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of int) 0:44 'txval41' (temp 4-component vector of int) -0:44 texture (global 4-component vector of int) +0:44 texture (temp 4-component vector of int) 0:44 Construct combined texture-sampler (temp isamplerCube) 0:44 'g_tTexcdi4' (uniform itextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -142,7 +142,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of uint) 0:45 'txval42' (temp 4-component vector of uint) -0:45 texture (global 4-component vector of uint) +0:45 texture (temp 4-component vector of uint) 0:45 Construct combined texture-sampler (temp usamplerCube) 0:45 'g_tTexcdu4' (uniform utextureCube) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -215,7 +215,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 texture (global 4-component vector of float) +0:31 texture (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -226,7 +226,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 texture (global 4-component vector of int) +0:32 texture (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -237,7 +237,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 texture (global 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -248,7 +248,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 texture (global 4-component vector of float) +0:35 texture (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -260,7 +260,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 texture (global 4-component vector of int) +0:36 texture (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 texture (global 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -284,7 +284,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 texture (global 4-component vector of float) +0:39 texture (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -297,7 +297,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 texture (global 4-component vector of int) +0:40 texture (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -310,7 +310,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 texture (global 4-component vector of uint) +0:41 texture (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -323,7 +323,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:43 'txval40' (temp 4-component vector of float) -0:43 texture (global 4-component vector of float) +0:43 texture (temp 4-component vector of float) 0:43 Construct combined texture-sampler (temp samplerCube) 0:43 'g_tTexcdf4' (uniform textureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -336,7 +336,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of int) 0:44 'txval41' (temp 4-component vector of int) -0:44 texture (global 4-component vector of int) +0:44 texture (temp 4-component vector of int) 0:44 Construct combined texture-sampler (temp isamplerCube) 0:44 'g_tTexcdi4' (uniform itextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -349,7 +349,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of uint) 0:45 'txval42' (temp 4-component vector of uint) -0:45 texture (global 4-component vector of uint) +0:45 texture (temp 4-component vector of uint) 0:45 Construct combined texture-sampler (temp usamplerCube) 0:45 'g_tTexcdu4' (uniform utextureCube) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index 643e0039..900eb4b0 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureOffset (global 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureOffset (global 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureOffset (global 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureOffset (global 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -62,7 +62,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureOffset (global 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureOffset (global 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -92,7 +92,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureOffset (global 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -109,7 +109,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureOffset (global 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -126,7 +126,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureOffset (global 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -203,7 +203,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureOffset (global 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -216,7 +216,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureOffset (global 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -229,7 +229,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureOffset (global 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -242,7 +242,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureOffset (global 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -257,7 +257,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureOffset (global 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureOffset (global 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -287,7 +287,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureOffset (global 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -304,7 +304,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureOffset (global 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -321,7 +321,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureOffset (global 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index 3ab84b9a..bd216222 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:23 Sequence 0:23 move second child to first child (temp 4-component vector of float) 0:23 'txval10' (temp 4-component vector of float) -0:23 textureOffset (global 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1DArray) 0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:24 Sequence 0:24 move second child to first child (temp 4-component vector of int) 0:24 'txval11' (temp 4-component vector of int) -0:24 textureOffset (global 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) 0:24 Construct combined texture-sampler (temp isampler1DArray) 0:24 'g_tTex1di4' (uniform itexture1DArray) 0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -36,7 +36,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of uint) 0:25 'txval12' (temp 4-component vector of uint) -0:25 textureOffset (global 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) 0:25 Construct combined texture-sampler (temp usampler1DArray) 0:25 'g_tTex1du4' (uniform utexture1DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval20' (temp 4-component vector of float) -0:27 textureOffset (global 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler2DArray) 0:27 'g_tTex2df4' (uniform texture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -66,7 +66,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval21' (temp 4-component vector of int) -0:28 textureOffset (global 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler2DArray) 0:28 'g_tTex2di4' (uniform itexture2DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -82,7 +82,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval22' (temp 4-component vector of uint) -0:29 textureOffset (global 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler2DArray) 0:29 'g_tTex2du4' (uniform utexture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:23 Sequence 0:23 move second child to first child (temp 4-component vector of float) 0:23 'txval10' (temp 4-component vector of float) -0:23 textureOffset (global 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1DArray) 0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -166,7 +166,7 @@ gl_FragCoord origin is upper left 0:24 Sequence 0:24 move second child to first child (temp 4-component vector of int) 0:24 'txval11' (temp 4-component vector of int) -0:24 textureOffset (global 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) 0:24 Construct combined texture-sampler (temp isampler1DArray) 0:24 'g_tTex1di4' (uniform itexture1DArray) 0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -180,7 +180,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of uint) 0:25 'txval12' (temp 4-component vector of uint) -0:25 textureOffset (global 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) 0:25 Construct combined texture-sampler (temp usampler1DArray) 0:25 'g_tTex1du4' (uniform utexture1DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval20' (temp 4-component vector of float) -0:27 textureOffset (global 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler2DArray) 0:27 'g_tTex2df4' (uniform texture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -210,7 +210,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval21' (temp 4-component vector of int) -0:28 textureOffset (global 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler2DArray) 0:28 'g_tTex2di4' (uniform itexture2DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -226,7 +226,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval22' (temp 4-component vector of uint) -0:29 textureOffset (global 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler2DArray) 0:29 'g_tTex2du4' (uniform utexture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out index 1513492a..46a6bbc1 100644 --- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 textureGrad (global 4-component vector of float) +0:27 textureGrad (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 textureGrad (global 4-component vector of int) +0:28 textureGrad (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -36,7 +36,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 textureGrad (global 4-component vector of uint) +0:29 textureGrad (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 textureGrad (global 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -67,7 +67,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 textureGrad (global 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -84,7 +84,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 textureGrad (global 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -101,7 +101,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 textureGrad (global 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -121,7 +121,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 textureGrad (global 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -141,7 +141,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 textureGrad (global 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -218,7 +218,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 textureGrad (global 4-component vector of float) +0:27 textureGrad (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 textureGrad (global 4-component vector of int) +0:28 textureGrad (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -246,7 +246,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 textureGrad (global 4-component vector of uint) +0:29 textureGrad (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -260,7 +260,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 textureGrad (global 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -277,7 +277,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 textureGrad (global 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -294,7 +294,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 textureGrad (global 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -311,7 +311,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 textureGrad (global 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -331,7 +331,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 textureGrad (global 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -351,7 +351,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 textureGrad (global 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out index 92c0c342..395efc26 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureGrad (global 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureGrad (global 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureGrad (global 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureGrad (global 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -63,7 +63,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureGrad (global 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -79,7 +79,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureGrad (global 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -95,7 +95,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureGrad (global 4-component vector of float) +0:39 textureGrad (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -114,7 +114,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureGrad (global 4-component vector of int) +0:40 textureGrad (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -133,7 +133,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureGrad (global 4-component vector of uint) +0:41 textureGrad (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:43 'txval40' (temp 4-component vector of float) -0:43 textureGrad (global 4-component vector of float) +0:43 textureGrad (temp 4-component vector of float) 0:43 Construct combined texture-sampler (temp samplerCube) 0:43 'g_tTexcdf4' (uniform textureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -171,7 +171,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of int) 0:44 'txval41' (temp 4-component vector of int) -0:44 textureGrad (global 4-component vector of int) +0:44 textureGrad (temp 4-component vector of int) 0:44 Construct combined texture-sampler (temp isamplerCube) 0:44 'g_tTexcdi4' (uniform itextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -190,7 +190,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of uint) 0:45 'txval42' (temp 4-component vector of uint) -0:45 textureGrad (global 4-component vector of uint) +0:45 textureGrad (temp 4-component vector of uint) 0:45 Construct combined texture-sampler (temp usamplerCube) 0:45 'g_tTexcdu4' (uniform utextureCube) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -269,7 +269,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureGrad (global 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -282,7 +282,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureGrad (global 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -295,7 +295,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureGrad (global 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -308,7 +308,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureGrad (global 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -324,7 +324,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureGrad (global 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -340,7 +340,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureGrad (global 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -356,7 +356,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureGrad (global 4-component vector of float) +0:39 textureGrad (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -375,7 +375,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureGrad (global 4-component vector of int) +0:40 textureGrad (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -394,7 +394,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureGrad (global 4-component vector of uint) +0:41 textureGrad (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -413,7 +413,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:43 'txval40' (temp 4-component vector of float) -0:43 textureGrad (global 4-component vector of float) +0:43 textureGrad (temp 4-component vector of float) 0:43 Construct combined texture-sampler (temp samplerCube) 0:43 'g_tTexcdf4' (uniform textureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -432,7 +432,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of int) 0:44 'txval41' (temp 4-component vector of int) -0:44 textureGrad (global 4-component vector of int) +0:44 textureGrad (temp 4-component vector of int) 0:44 Construct combined texture-sampler (temp isamplerCube) 0:44 'g_tTexcdi4' (uniform itextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -451,7 +451,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of uint) 0:45 'txval42' (temp 4-component vector of uint) -0:45 textureGrad (global 4-component vector of uint) +0:45 textureGrad (temp 4-component vector of uint) 0:45 Construct combined texture-sampler (temp usamplerCube) 0:45 'g_tTexcdu4' (uniform utextureCube) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index e8909345..2e79be32 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -7,7 +7,7 @@ Shader version: 450 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of float) 0:30 'txval10' (temp 4-component vector of float) -0:30 textureGrad (global 4-component vector of float) +0:30 textureGrad (temp 4-component vector of float) 0:30 Construct combined texture-sampler (temp sampler1D) 0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -20,7 +20,7 @@ Shader version: 450 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of int) 0:31 'txval11' (temp 4-component vector of int) -0:31 textureGrad (global 4-component vector of int) +0:31 textureGrad (temp 4-component vector of int) 0:31 Construct combined texture-sampler (temp isampler1D) 0:31 'g_tTex1di4' (uniform itexture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -33,7 +33,7 @@ Shader version: 450 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of uint) 0:32 'txval12' (temp 4-component vector of uint) -0:32 textureGrad (global 4-component vector of uint) +0:32 textureGrad (temp 4-component vector of uint) 0:32 Construct combined texture-sampler (temp usampler1D) 0:32 'g_tTex1du4' (uniform utexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -46,7 +46,7 @@ Shader version: 450 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) 0:34 'txval20' (temp 4-component vector of float) -0:34 textureGrad (global 4-component vector of float) +0:34 textureGrad (temp 4-component vector of float) 0:34 Construct combined texture-sampler (temp sampler2D) 0:34 'g_tTex2df4' (uniform texture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -62,7 +62,7 @@ Shader version: 450 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of int) 0:35 'txval21' (temp 4-component vector of int) -0:35 textureGrad (global 4-component vector of int) +0:35 textureGrad (temp 4-component vector of int) 0:35 Construct combined texture-sampler (temp isampler2D) 0:35 'g_tTex2di4' (uniform itexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -78,7 +78,7 @@ Shader version: 450 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of uint) 0:36 'txval22' (temp 4-component vector of uint) -0:36 textureGrad (global 4-component vector of uint) +0:36 textureGrad (temp 4-component vector of uint) 0:36 Construct combined texture-sampler (temp usampler2D) 0:36 'g_tTex2du4' (uniform utexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -94,7 +94,7 @@ Shader version: 450 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of float) 0:38 'txval30' (temp 4-component vector of float) -0:38 textureGrad (global 4-component vector of float) +0:38 textureGrad (temp 4-component vector of float) 0:38 Construct combined texture-sampler (temp sampler3D) 0:38 'g_tTex3df4' (uniform texture3D) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -113,7 +113,7 @@ Shader version: 450 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of int) 0:39 'txval31' (temp 4-component vector of int) -0:39 textureGrad (global 4-component vector of int) +0:39 textureGrad (temp 4-component vector of int) 0:39 Construct combined texture-sampler (temp isampler3D) 0:39 'g_tTex3di4' (uniform itexture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -132,7 +132,7 @@ Shader version: 450 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of uint) 0:40 'txval32' (temp 4-component vector of uint) -0:40 textureGrad (global 4-component vector of uint) +0:40 textureGrad (temp 4-component vector of uint) 0:40 Construct combined texture-sampler (temp usampler3D) 0:40 'g_tTex3du4' (uniform utexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -151,7 +151,7 @@ Shader version: 450 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:42 'txval40' (temp 4-component vector of float) -0:42 textureGrad (global 4-component vector of float) +0:42 textureGrad (temp 4-component vector of float) 0:42 Construct combined texture-sampler (temp samplerCube) 0:42 'g_tTexcdf4' (uniform textureCube) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -170,7 +170,7 @@ Shader version: 450 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of int) 0:43 'txval41' (temp 4-component vector of int) -0:43 textureGrad (global 4-component vector of int) +0:43 textureGrad (temp 4-component vector of int) 0:43 Construct combined texture-sampler (temp isamplerCube) 0:43 'g_tTexcdi4' (uniform itextureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -189,7 +189,7 @@ Shader version: 450 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of uint) 0:44 'txval42' (temp 4-component vector of uint) -0:44 textureGrad (global 4-component vector of uint) +0:44 textureGrad (temp 4-component vector of uint) 0:44 Construct combined texture-sampler (temp usamplerCube) 0:44 'g_tTexcdu4' (uniform utextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -253,7 +253,7 @@ Shader version: 450 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of float) 0:30 'txval10' (temp 4-component vector of float) -0:30 textureGrad (global 4-component vector of float) +0:30 textureGrad (temp 4-component vector of float) 0:30 Construct combined texture-sampler (temp sampler1D) 0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -266,7 +266,7 @@ Shader version: 450 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of int) 0:31 'txval11' (temp 4-component vector of int) -0:31 textureGrad (global 4-component vector of int) +0:31 textureGrad (temp 4-component vector of int) 0:31 Construct combined texture-sampler (temp isampler1D) 0:31 'g_tTex1di4' (uniform itexture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -279,7 +279,7 @@ Shader version: 450 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of uint) 0:32 'txval12' (temp 4-component vector of uint) -0:32 textureGrad (global 4-component vector of uint) +0:32 textureGrad (temp 4-component vector of uint) 0:32 Construct combined texture-sampler (temp usampler1D) 0:32 'g_tTex1du4' (uniform utexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -292,7 +292,7 @@ Shader version: 450 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) 0:34 'txval20' (temp 4-component vector of float) -0:34 textureGrad (global 4-component vector of float) +0:34 textureGrad (temp 4-component vector of float) 0:34 Construct combined texture-sampler (temp sampler2D) 0:34 'g_tTex2df4' (uniform texture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -308,7 +308,7 @@ Shader version: 450 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of int) 0:35 'txval21' (temp 4-component vector of int) -0:35 textureGrad (global 4-component vector of int) +0:35 textureGrad (temp 4-component vector of int) 0:35 Construct combined texture-sampler (temp isampler2D) 0:35 'g_tTex2di4' (uniform itexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -324,7 +324,7 @@ Shader version: 450 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of uint) 0:36 'txval22' (temp 4-component vector of uint) -0:36 textureGrad (global 4-component vector of uint) +0:36 textureGrad (temp 4-component vector of uint) 0:36 Construct combined texture-sampler (temp usampler2D) 0:36 'g_tTex2du4' (uniform utexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -340,7 +340,7 @@ Shader version: 450 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of float) 0:38 'txval30' (temp 4-component vector of float) -0:38 textureGrad (global 4-component vector of float) +0:38 textureGrad (temp 4-component vector of float) 0:38 Construct combined texture-sampler (temp sampler3D) 0:38 'g_tTex3df4' (uniform texture3D) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -359,7 +359,7 @@ Shader version: 450 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of int) 0:39 'txval31' (temp 4-component vector of int) -0:39 textureGrad (global 4-component vector of int) +0:39 textureGrad (temp 4-component vector of int) 0:39 Construct combined texture-sampler (temp isampler3D) 0:39 'g_tTex3di4' (uniform itexture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -378,7 +378,7 @@ Shader version: 450 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of uint) 0:40 'txval32' (temp 4-component vector of uint) -0:40 textureGrad (global 4-component vector of uint) +0:40 textureGrad (temp 4-component vector of uint) 0:40 Construct combined texture-sampler (temp usampler3D) 0:40 'g_tTex3du4' (uniform utexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -397,7 +397,7 @@ Shader version: 450 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:42 'txval40' (temp 4-component vector of float) -0:42 textureGrad (global 4-component vector of float) +0:42 textureGrad (temp 4-component vector of float) 0:42 Construct combined texture-sampler (temp samplerCube) 0:42 'g_tTexcdf4' (uniform textureCube) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -416,7 +416,7 @@ Shader version: 450 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of int) 0:43 'txval41' (temp 4-component vector of int) -0:43 textureGrad (global 4-component vector of int) +0:43 textureGrad (temp 4-component vector of int) 0:43 Construct combined texture-sampler (temp isamplerCube) 0:43 'g_tTexcdi4' (uniform itextureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -435,7 +435,7 @@ Shader version: 450 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of uint) 0:44 'txval42' (temp 4-component vector of uint) -0:44 textureGrad (global 4-component vector of uint) +0:44 textureGrad (temp 4-component vector of uint) 0:44 Construct combined texture-sampler (temp usamplerCube) 0:44 'g_tTexcdu4' (uniform utextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out index 9145aa4d..7ef5e077 100644 --- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureGradOffset (global 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -23,7 +23,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureGradOffset (global 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureGradOffset (global 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureGradOffset (global 4-component vector of float) +0:35 textureGradOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -72,7 +72,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureGradOffset (global 4-component vector of int) +0:36 textureGradOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -91,7 +91,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureGradOffset (global 4-component vector of uint) +0:37 textureGradOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -110,7 +110,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureGradOffset (global 4-component vector of float) +0:39 textureGradOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -133,7 +133,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureGradOffset (global 4-component vector of int) +0:40 textureGradOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -156,7 +156,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureGradOffset (global 4-component vector of uint) +0:41 textureGradOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -239,7 +239,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureGradOffset (global 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureGradOffset (global 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -269,7 +269,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureGradOffset (global 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -284,7 +284,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureGradOffset (global 4-component vector of float) +0:35 textureGradOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -303,7 +303,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureGradOffset (global 4-component vector of int) +0:36 textureGradOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -322,7 +322,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureGradOffset (global 4-component vector of uint) +0:37 textureGradOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -341,7 +341,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureGradOffset (global 4-component vector of float) +0:39 textureGradOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -364,7 +364,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureGradOffset (global 4-component vector of int) +0:40 textureGradOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -387,7 +387,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureGradOffset (global 4-component vector of uint) +0:41 textureGradOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out index e964ff93..2043f38a 100644 --- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 textureGradOffset (global 4-component vector of float) +0:27 textureGradOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -24,7 +24,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 textureGradOffset (global 4-component vector of int) +0:28 textureGradOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -40,7 +40,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 textureGradOffset (global 4-component vector of uint) +0:29 textureGradOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -56,7 +56,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 textureGradOffset (global 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -76,7 +76,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 textureGradOffset (global 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -96,7 +96,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 textureGradOffset (global 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -173,7 +173,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 textureGradOffset (global 4-component vector of float) +0:27 textureGradOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -189,7 +189,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 textureGradOffset (global 4-component vector of int) +0:28 textureGradOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -205,7 +205,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 textureGradOffset (global 4-component vector of uint) +0:29 textureGradOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -221,7 +221,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 textureGradOffset (global 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -241,7 +241,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 textureGradOffset (global 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -261,7 +261,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 textureGradOffset (global 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out index d031665f..351e2ed1 100644 --- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 textureLod (global 4-component vector of float) +0:27 textureLod (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -20,7 +20,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 textureLod (global 4-component vector of int) +0:28 textureLod (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4a' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -32,7 +32,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 textureLod (global 4-component vector of uint) +0:29 textureLod (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4a' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 textureLod (global 4-component vector of float) +0:31 textureLod (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4a' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -57,7 +57,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 textureLod (global 4-component vector of int) +0:32 textureLod (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4a' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 textureLod (global 4-component vector of uint) +0:33 textureLod (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4a' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -83,7 +83,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 textureLod (global 4-component vector of float) +0:35 textureLod (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4a' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -97,7 +97,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 textureLod (global 4-component vector of int) +0:36 textureLod (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4a' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -111,7 +111,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 textureLod (global 4-component vector of uint) +0:37 textureLod (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4a' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -182,7 +182,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval10' (temp 4-component vector of float) -0:27 textureLod (global 4-component vector of float) +0:27 textureLod (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler1DArray) 0:27 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval11' (temp 4-component vector of int) -0:28 textureLod (global 4-component vector of int) +0:28 textureLod (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler1DArray) 0:28 'g_tTex1di4a' (uniform itexture1DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -206,7 +206,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval12' (temp 4-component vector of uint) -0:29 textureLod (global 4-component vector of uint) +0:29 textureLod (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler1DArray) 0:29 'g_tTex1du4a' (uniform utexture1DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -218,7 +218,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval20' (temp 4-component vector of float) -0:31 textureLod (global 4-component vector of float) +0:31 textureLod (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler2DArray) 0:31 'g_tTex2df4a' (uniform texture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -231,7 +231,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval21' (temp 4-component vector of int) -0:32 textureLod (global 4-component vector of int) +0:32 textureLod (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler2DArray) 0:32 'g_tTex2di4a' (uniform itexture2DArray) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval22' (temp 4-component vector of uint) -0:33 textureLod (global 4-component vector of uint) +0:33 textureLod (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler2DArray) 0:33 'g_tTex2du4a' (uniform utexture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -257,7 +257,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 textureLod (global 4-component vector of float) +0:35 textureLod (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4a' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -271,7 +271,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 textureLod (global 4-component vector of int) +0:36 textureLod (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4a' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -285,7 +285,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 textureLod (global 4-component vector of uint) +0:37 textureLod (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4a' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out index 4a937502..d37090fa 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of float) 0:32 'txval10' (temp 4-component vector of float) -0:32 textureLod (global 4-component vector of float) +0:32 textureLod (temp 4-component vector of float) 0:32 Construct combined texture-sampler (temp sampler1D) 0:32 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -19,7 +19,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of int) 0:33 'txval11' (temp 4-component vector of int) -0:33 textureLod (global 4-component vector of int) +0:33 textureLod (temp 4-component vector of int) 0:33 Construct combined texture-sampler (temp isampler1D) 0:33 'g_tTex1di4' (uniform itexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -30,7 +30,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of uint) 0:34 'txval12' (temp 4-component vector of uint) -0:34 textureLod (global 4-component vector of uint) +0:34 textureLod (temp 4-component vector of uint) 0:34 Construct combined texture-sampler (temp usampler1D) 0:34 'g_tTex1du4' (uniform utexture1D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -41,7 +41,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:36 'txval20' (temp 4-component vector of float) -0:36 textureLod (global 4-component vector of float) +0:36 textureLod (temp 4-component vector of float) 0:36 Construct combined texture-sampler (temp sampler2D) 0:36 'g_tTex2df4' (uniform texture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of int) 0:37 'txval21' (temp 4-component vector of int) -0:37 textureLod (global 4-component vector of int) +0:37 textureLod (temp 4-component vector of int) 0:37 Construct combined texture-sampler (temp isampler2D) 0:37 'g_tTex2di4' (uniform itexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of uint) 0:38 'txval22' (temp 4-component vector of uint) -0:38 textureLod (global 4-component vector of uint) +0:38 textureLod (temp 4-component vector of uint) 0:38 Construct combined texture-sampler (temp usampler2D) 0:38 'g_tTex2du4' (uniform utexture2D) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of float) 0:40 'txval30' (temp 4-component vector of float) -0:40 textureLod (global 4-component vector of float) +0:40 textureLod (temp 4-component vector of float) 0:40 Construct combined texture-sampler (temp sampler3D) 0:40 'g_tTex3df4' (uniform texture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -90,7 +90,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of int) 0:41 'txval31' (temp 4-component vector of int) -0:41 textureLod (global 4-component vector of int) +0:41 textureLod (temp 4-component vector of int) 0:41 Construct combined texture-sampler (temp isampler3D) 0:41 'g_tTex3di4' (uniform itexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -103,7 +103,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of uint) 0:42 'txval32' (temp 4-component vector of uint) -0:42 textureLod (global 4-component vector of uint) +0:42 textureLod (temp 4-component vector of uint) 0:42 Construct combined texture-sampler (temp usampler3D) 0:42 'g_tTex3du4' (uniform utexture3D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -116,7 +116,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of float) 0:44 'txval40' (temp 4-component vector of float) -0:44 textureLod (global 4-component vector of float) +0:44 textureLod (temp 4-component vector of float) 0:44 Construct combined texture-sampler (temp samplerCube) 0:44 'g_tTexcdf4' (uniform textureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -129,7 +129,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of int) 0:45 'txval41' (temp 4-component vector of int) -0:45 textureLod (global 4-component vector of int) +0:45 textureLod (temp 4-component vector of int) 0:45 Construct combined texture-sampler (temp isamplerCube) 0:45 'g_tTexcdi4' (uniform itextureCube) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -142,7 +142,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of uint) 0:46 'txval42' (temp 4-component vector of uint) -0:46 textureLod (global 4-component vector of uint) +0:46 textureLod (temp 4-component vector of uint) 0:46 Construct combined texture-sampler (temp usamplerCube) 0:46 'g_tTexcdu4' (uniform utextureCube) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -216,7 +216,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of float) 0:32 'txval10' (temp 4-component vector of float) -0:32 textureLod (global 4-component vector of float) +0:32 textureLod (temp 4-component vector of float) 0:32 Construct combined texture-sampler (temp sampler1D) 0:32 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -227,7 +227,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of int) 0:33 'txval11' (temp 4-component vector of int) -0:33 textureLod (global 4-component vector of int) +0:33 textureLod (temp 4-component vector of int) 0:33 Construct combined texture-sampler (temp isampler1D) 0:33 'g_tTex1di4' (uniform itexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -238,7 +238,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of uint) 0:34 'txval12' (temp 4-component vector of uint) -0:34 textureLod (global 4-component vector of uint) +0:34 textureLod (temp 4-component vector of uint) 0:34 Construct combined texture-sampler (temp usampler1D) 0:34 'g_tTex1du4' (uniform utexture1D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -249,7 +249,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of float) 0:36 'txval20' (temp 4-component vector of float) -0:36 textureLod (global 4-component vector of float) +0:36 textureLod (temp 4-component vector of float) 0:36 Construct combined texture-sampler (temp sampler2D) 0:36 'g_tTex2df4' (uniform texture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -261,7 +261,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of int) 0:37 'txval21' (temp 4-component vector of int) -0:37 textureLod (global 4-component vector of int) +0:37 textureLod (temp 4-component vector of int) 0:37 Construct combined texture-sampler (temp isampler2D) 0:37 'g_tTex2di4' (uniform itexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -273,7 +273,7 @@ gl_FragCoord origin is upper left 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of uint) 0:38 'txval22' (temp 4-component vector of uint) -0:38 textureLod (global 4-component vector of uint) +0:38 textureLod (temp 4-component vector of uint) 0:38 Construct combined texture-sampler (temp usampler2D) 0:38 'g_tTex2du4' (uniform utexture2D) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -285,7 +285,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of float) 0:40 'txval30' (temp 4-component vector of float) -0:40 textureLod (global 4-component vector of float) +0:40 textureLod (temp 4-component vector of float) 0:40 Construct combined texture-sampler (temp sampler3D) 0:40 'g_tTex3df4' (uniform texture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -298,7 +298,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of int) 0:41 'txval31' (temp 4-component vector of int) -0:41 textureLod (global 4-component vector of int) +0:41 textureLod (temp 4-component vector of int) 0:41 Construct combined texture-sampler (temp isampler3D) 0:41 'g_tTex3di4' (uniform itexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -311,7 +311,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of uint) 0:42 'txval32' (temp 4-component vector of uint) -0:42 textureLod (global 4-component vector of uint) +0:42 textureLod (temp 4-component vector of uint) 0:42 Construct combined texture-sampler (temp usampler3D) 0:42 'g_tTex3du4' (uniform utexture3D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -324,7 +324,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of float) 0:44 'txval40' (temp 4-component vector of float) -0:44 textureLod (global 4-component vector of float) +0:44 textureLod (temp 4-component vector of float) 0:44 Construct combined texture-sampler (temp samplerCube) 0:44 'g_tTexcdf4' (uniform textureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -337,7 +337,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of int) 0:45 'txval41' (temp 4-component vector of int) -0:45 textureLod (global 4-component vector of int) +0:45 textureLod (temp 4-component vector of int) 0:45 Construct combined texture-sampler (temp isamplerCube) 0:45 'g_tTexcdi4' (uniform itextureCube) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -350,7 +350,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of uint) 0:46 'txval42' (temp 4-component vector of uint) -0:46 textureLod (global 4-component vector of uint) +0:46 textureLod (temp 4-component vector of uint) 0:46 Construct combined texture-sampler (temp usamplerCube) 0:46 'g_tTexcdu4' (uniform utextureCube) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index c18fa89b..04382997 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -7,7 +7,7 @@ Shader version: 450 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of float) 0:30 'txval10' (temp 4-component vector of float) -0:30 textureLod (global 4-component vector of float) +0:30 textureLod (temp 4-component vector of float) 0:30 Construct combined texture-sampler (temp sampler1D) 0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -18,7 +18,7 @@ Shader version: 450 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of int) 0:31 'txval11' (temp 4-component vector of int) -0:31 textureLod (global 4-component vector of int) +0:31 textureLod (temp 4-component vector of int) 0:31 Construct combined texture-sampler (temp isampler1D) 0:31 'g_tTex1di4' (uniform itexture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -29,7 +29,7 @@ Shader version: 450 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of uint) 0:32 'txval12' (temp 4-component vector of uint) -0:32 textureLod (global 4-component vector of uint) +0:32 textureLod (temp 4-component vector of uint) 0:32 Construct combined texture-sampler (temp usampler1D) 0:32 'g_tTex1du4' (uniform utexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -40,7 +40,7 @@ Shader version: 450 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) 0:34 'txval20' (temp 4-component vector of float) -0:34 textureLod (global 4-component vector of float) +0:34 textureLod (temp 4-component vector of float) 0:34 Construct combined texture-sampler (temp sampler2D) 0:34 'g_tTex2df4' (uniform texture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -52,7 +52,7 @@ Shader version: 450 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of int) 0:35 'txval21' (temp 4-component vector of int) -0:35 textureLod (global 4-component vector of int) +0:35 textureLod (temp 4-component vector of int) 0:35 Construct combined texture-sampler (temp isampler2D) 0:35 'g_tTex2di4' (uniform itexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -64,7 +64,7 @@ Shader version: 450 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of uint) 0:36 'txval22' (temp 4-component vector of uint) -0:36 textureLod (global 4-component vector of uint) +0:36 textureLod (temp 4-component vector of uint) 0:36 Construct combined texture-sampler (temp usampler2D) 0:36 'g_tTex2du4' (uniform utexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -76,7 +76,7 @@ Shader version: 450 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of float) 0:38 'txval30' (temp 4-component vector of float) -0:38 textureLod (global 4-component vector of float) +0:38 textureLod (temp 4-component vector of float) 0:38 Construct combined texture-sampler (temp sampler3D) 0:38 'g_tTex3df4' (uniform texture3D) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -89,7 +89,7 @@ Shader version: 450 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of int) 0:39 'txval31' (temp 4-component vector of int) -0:39 textureLod (global 4-component vector of int) +0:39 textureLod (temp 4-component vector of int) 0:39 Construct combined texture-sampler (temp isampler3D) 0:39 'g_tTex3di4' (uniform itexture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -102,7 +102,7 @@ Shader version: 450 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of uint) 0:40 'txval32' (temp 4-component vector of uint) -0:40 textureLod (global 4-component vector of uint) +0:40 textureLod (temp 4-component vector of uint) 0:40 Construct combined texture-sampler (temp usampler3D) 0:40 'g_tTex3du4' (uniform utexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -115,7 +115,7 @@ Shader version: 450 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:42 'txval40' (temp 4-component vector of float) -0:42 textureLod (global 4-component vector of float) +0:42 textureLod (temp 4-component vector of float) 0:42 Construct combined texture-sampler (temp samplerCube) 0:42 'g_tTexcdf4' (uniform textureCube) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -128,7 +128,7 @@ Shader version: 450 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of int) 0:43 'txval41' (temp 4-component vector of int) -0:43 textureLod (global 4-component vector of int) +0:43 textureLod (temp 4-component vector of int) 0:43 Construct combined texture-sampler (temp isamplerCube) 0:43 'g_tTexcdi4' (uniform itextureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -141,7 +141,7 @@ Shader version: 450 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of uint) 0:44 'txval42' (temp 4-component vector of uint) -0:44 textureLod (global 4-component vector of uint) +0:44 textureLod (temp 4-component vector of uint) 0:44 Construct combined texture-sampler (temp usamplerCube) 0:44 'g_tTexcdu4' (uniform utextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -199,7 +199,7 @@ Shader version: 450 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of float) 0:30 'txval10' (temp 4-component vector of float) -0:30 textureLod (global 4-component vector of float) +0:30 textureLod (temp 4-component vector of float) 0:30 Construct combined texture-sampler (temp sampler1D) 0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -210,7 +210,7 @@ Shader version: 450 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of int) 0:31 'txval11' (temp 4-component vector of int) -0:31 textureLod (global 4-component vector of int) +0:31 textureLod (temp 4-component vector of int) 0:31 Construct combined texture-sampler (temp isampler1D) 0:31 'g_tTex1di4' (uniform itexture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -221,7 +221,7 @@ Shader version: 450 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of uint) 0:32 'txval12' (temp 4-component vector of uint) -0:32 textureLod (global 4-component vector of uint) +0:32 textureLod (temp 4-component vector of uint) 0:32 Construct combined texture-sampler (temp usampler1D) 0:32 'g_tTex1du4' (uniform utexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -232,7 +232,7 @@ Shader version: 450 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) 0:34 'txval20' (temp 4-component vector of float) -0:34 textureLod (global 4-component vector of float) +0:34 textureLod (temp 4-component vector of float) 0:34 Construct combined texture-sampler (temp sampler2D) 0:34 'g_tTex2df4' (uniform texture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -244,7 +244,7 @@ Shader version: 450 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of int) 0:35 'txval21' (temp 4-component vector of int) -0:35 textureLod (global 4-component vector of int) +0:35 textureLod (temp 4-component vector of int) 0:35 Construct combined texture-sampler (temp isampler2D) 0:35 'g_tTex2di4' (uniform itexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -256,7 +256,7 @@ Shader version: 450 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of uint) 0:36 'txval22' (temp 4-component vector of uint) -0:36 textureLod (global 4-component vector of uint) +0:36 textureLod (temp 4-component vector of uint) 0:36 Construct combined texture-sampler (temp usampler2D) 0:36 'g_tTex2du4' (uniform utexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -268,7 +268,7 @@ Shader version: 450 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of float) 0:38 'txval30' (temp 4-component vector of float) -0:38 textureLod (global 4-component vector of float) +0:38 textureLod (temp 4-component vector of float) 0:38 Construct combined texture-sampler (temp sampler3D) 0:38 'g_tTex3df4' (uniform texture3D) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -281,7 +281,7 @@ Shader version: 450 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of int) 0:39 'txval31' (temp 4-component vector of int) -0:39 textureLod (global 4-component vector of int) +0:39 textureLod (temp 4-component vector of int) 0:39 Construct combined texture-sampler (temp isampler3D) 0:39 'g_tTex3di4' (uniform itexture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -294,7 +294,7 @@ Shader version: 450 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of uint) 0:40 'txval32' (temp 4-component vector of uint) -0:40 textureLod (global 4-component vector of uint) +0:40 textureLod (temp 4-component vector of uint) 0:40 Construct combined texture-sampler (temp usampler3D) 0:40 'g_tTex3du4' (uniform utexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -307,7 +307,7 @@ Shader version: 450 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of float) 0:42 'txval40' (temp 4-component vector of float) -0:42 textureLod (global 4-component vector of float) +0:42 textureLod (temp 4-component vector of float) 0:42 Construct combined texture-sampler (temp samplerCube) 0:42 'g_tTexcdf4' (uniform textureCube) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -320,7 +320,7 @@ Shader version: 450 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of int) 0:43 'txval41' (temp 4-component vector of int) -0:43 textureLod (global 4-component vector of int) +0:43 textureLod (temp 4-component vector of int) 0:43 Construct combined texture-sampler (temp isamplerCube) 0:43 'g_tTexcdi4' (uniform itextureCube) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -333,7 +333,7 @@ Shader version: 450 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of uint) 0:44 'txval42' (temp 4-component vector of uint) -0:44 textureLod (global 4-component vector of uint) +0:44 textureLod (temp 4-component vector of uint) 0:44 Construct combined texture-sampler (temp usamplerCube) 0:44 'g_tTexcdu4' (uniform utextureCube) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out index 4d816499..0f0f9681 100644 --- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureLodOffset (global 4-component vector of float) +0:31 textureLodOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureLodOffset (global 4-component vector of int) +0:32 textureLodOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureLodOffset (global 4-component vector of uint) +0:33 textureLodOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureLodOffset (global 4-component vector of float) +0:35 textureLodOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -62,7 +62,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureLodOffset (global 4-component vector of int) +0:36 textureLodOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureLodOffset (global 4-component vector of uint) +0:37 textureLodOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -92,7 +92,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureLodOffset (global 4-component vector of float) +0:39 textureLodOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -109,7 +109,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureLodOffset (global 4-component vector of int) +0:40 textureLodOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -126,7 +126,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureLodOffset (global 4-component vector of uint) +0:41 textureLodOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -203,7 +203,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of float) 0:31 'txval10' (temp 4-component vector of float) -0:31 textureLodOffset (global 4-component vector of float) +0:31 textureLodOffset (temp 4-component vector of float) 0:31 Construct combined texture-sampler (temp sampler1D) 0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -216,7 +216,7 @@ gl_FragCoord origin is upper left 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of int) 0:32 'txval11' (temp 4-component vector of int) -0:32 textureLodOffset (global 4-component vector of int) +0:32 textureLodOffset (temp 4-component vector of int) 0:32 Construct combined texture-sampler (temp isampler1D) 0:32 'g_tTex1di4' (uniform itexture1D) 0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -229,7 +229,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of uint) 0:33 'txval12' (temp 4-component vector of uint) -0:33 textureLodOffset (global 4-component vector of uint) +0:33 textureLodOffset (temp 4-component vector of uint) 0:33 Construct combined texture-sampler (temp usampler1D) 0:33 'g_tTex1du4' (uniform utexture1D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -242,7 +242,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval20' (temp 4-component vector of float) -0:35 textureLodOffset (global 4-component vector of float) +0:35 textureLodOffset (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp sampler2D) 0:35 'g_tTex2df4' (uniform texture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -257,7 +257,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval21' (temp 4-component vector of int) -0:36 textureLodOffset (global 4-component vector of int) +0:36 textureLodOffset (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isampler2D) 0:36 'g_tTex2di4' (uniform itexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval22' (temp 4-component vector of uint) -0:37 textureLodOffset (global 4-component vector of uint) +0:37 textureLodOffset (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usampler2D) 0:37 'g_tTex2du4' (uniform utexture2D) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -287,7 +287,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval30' (temp 4-component vector of float) -0:39 textureLodOffset (global 4-component vector of float) +0:39 textureLodOffset (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler3D) 0:39 'g_tTex3df4' (uniform texture3D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -304,7 +304,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval31' (temp 4-component vector of int) -0:40 textureLodOffset (global 4-component vector of int) +0:40 textureLodOffset (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler3D) 0:40 'g_tTex3di4' (uniform itexture3D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -321,7 +321,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval32' (temp 4-component vector of uint) -0:41 textureLodOffset (global 4-component vector of uint) +0:41 textureLodOffset (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler3D) 0:41 'g_tTex3du4' (uniform utexture3D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out index ef3dcf19..8eb74cd0 100644 --- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:23 Sequence 0:23 move second child to first child (temp 4-component vector of float) 0:23 'txval10' (temp 4-component vector of float) -0:23 textureLodOffset (global 4-component vector of float) +0:23 textureLodOffset (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1DArray) 0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:24 Sequence 0:24 move second child to first child (temp 4-component vector of int) 0:24 'txval11' (temp 4-component vector of int) -0:24 textureLodOffset (global 4-component vector of int) +0:24 textureLodOffset (temp 4-component vector of int) 0:24 Construct combined texture-sampler (temp isampler1DArray) 0:24 'g_tTex1di4' (uniform itexture1DArray) 0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -36,7 +36,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of uint) 0:25 'txval12' (temp 4-component vector of uint) -0:25 textureLodOffset (global 4-component vector of uint) +0:25 textureLodOffset (temp 4-component vector of uint) 0:25 Construct combined texture-sampler (temp usampler1DArray) 0:25 'g_tTex1du4' (uniform utexture1DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval20' (temp 4-component vector of float) -0:27 textureLodOffset (global 4-component vector of float) +0:27 textureLodOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler2DArray) 0:27 'g_tTex2df4' (uniform texture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -66,7 +66,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval21' (temp 4-component vector of int) -0:28 textureLodOffset (global 4-component vector of int) +0:28 textureLodOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler2DArray) 0:28 'g_tTex2di4' (uniform itexture2DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -82,7 +82,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval22' (temp 4-component vector of uint) -0:29 textureLodOffset (global 4-component vector of uint) +0:29 textureLodOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler2DArray) 0:29 'g_tTex2du4' (uniform utexture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:23 Sequence 0:23 move second child to first child (temp 4-component vector of float) 0:23 'txval10' (temp 4-component vector of float) -0:23 textureLodOffset (global 4-component vector of float) +0:23 textureLodOffset (temp 4-component vector of float) 0:23 Construct combined texture-sampler (temp sampler1DArray) 0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) 0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -166,7 +166,7 @@ gl_FragCoord origin is upper left 0:24 Sequence 0:24 move second child to first child (temp 4-component vector of int) 0:24 'txval11' (temp 4-component vector of int) -0:24 textureLodOffset (global 4-component vector of int) +0:24 textureLodOffset (temp 4-component vector of int) 0:24 Construct combined texture-sampler (temp isampler1DArray) 0:24 'g_tTex1di4' (uniform itexture1DArray) 0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -180,7 +180,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of uint) 0:25 'txval12' (temp 4-component vector of uint) -0:25 textureLodOffset (global 4-component vector of uint) +0:25 textureLodOffset (temp 4-component vector of uint) 0:25 Construct combined texture-sampler (temp usampler1DArray) 0:25 'g_tTex1du4' (uniform utexture1DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 'txval20' (temp 4-component vector of float) -0:27 textureLodOffset (global 4-component vector of float) +0:27 textureLodOffset (temp 4-component vector of float) 0:27 Construct combined texture-sampler (temp sampler2DArray) 0:27 'g_tTex2df4' (uniform texture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -210,7 +210,7 @@ gl_FragCoord origin is upper left 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of int) 0:28 'txval21' (temp 4-component vector of int) -0:28 textureLodOffset (global 4-component vector of int) +0:28 textureLodOffset (temp 4-component vector of int) 0:28 Construct combined texture-sampler (temp isampler2DArray) 0:28 'g_tTex2di4' (uniform itexture2DArray) 0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -226,7 +226,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of uint) 0:29 'txval22' (temp 4-component vector of uint) -0:29 textureLodOffset (global 4-component vector of uint) +0:29 textureLodOffset (temp 4-component vector of uint) 0:29 Construct combined texture-sampler (temp usampler2DArray) 0:29 'g_tTex2du4' (uniform utexture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/hlsl.sample.sub-vec4.dx10.frag b/Test/hlsl.sample.sub-vec4.dx10.frag new file mode 100644 index 00000000..991d976a --- /dev/null +++ b/Test/hlsl.sample.sub-vec4.dx10.frag @@ -0,0 +1,24 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df1; +Texture1D g_tTex1df2; +Texture1D g_tTex1df3; +Texture1D g_tTex1df4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float txval10 = g_tTex1df1 . Sample(g_sSamp, 0.1); + float2 txval11 = g_tTex1df2 . Sample(g_sSamp, 0.2); + float3 txval12 = g_tTex1df3 . Sample(g_sSamp, 0.2); + float4 txval13 = g_tTex1df4 . Sample(g_sSamp, 0.2); + + psout.Color = 1.0; + return psout; +} diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index fb3fb92f..6c8cb825 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -78,6 +78,7 @@ 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() bool external : 1; // GL_OES_EGL_image_external + unsigned int vectorSize : 3; // return vector size. TODO: support arbitrary types. bool isImage() const { return image && dim != EsdSubpass; } bool isSubpass() const { return dim == EsdSubpass; } @@ -99,6 +100,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler, combined = false; sampler = false; external = false; + vectorSize = 4; } // make a combined sampler and texture @@ -164,7 +166,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, image == right.image && combined == right.combined && sampler == right.sampler && - external == right.external; + external == right.external && + vectorSize == right.vectorSize; } bool operator!=(const TSampler& right) const @@ -823,53 +826,6 @@ public: default: return "none"; } } - static int getLayoutComponentCount(TLayoutFormat f) - { - switch (f) { - case ElfRgba32f: return 4; - case ElfRgba16f: return 4; - case ElfRg32f: return 2; - case ElfRg16f: return 2; - case ElfR11fG11fB10f: return 3; - case ElfR32f: return 1; - case ElfR16f: return 1; - case ElfRgba16: return 4; - case ElfRgb10A2: return 4; - case ElfRgba8: return 4; - case ElfRg16: return 2; - case ElfRg8: return 2; - case ElfR16: return 1; - case ElfR8: return 1; - case ElfRgba16Snorm: return 4; - case ElfRgba8Snorm: return 4; - case ElfRg16Snorm: return 2; - case ElfRg8Snorm: return 2; - case ElfR16Snorm: return 1; - case ElfR8Snorm: return 1; - - case ElfRgba32i: return 4; - case ElfRgba16i: return 4; - case ElfRgba8i: return 4; - case ElfRg32i: return 2; - case ElfRg16i: return 2; - case ElfRg8i: return 2; - case ElfR32i: return 1; - case ElfR16i: return 1; - case ElfR8i: return 1; - - case ElfRgba32ui: return 4; - case ElfRgba16ui: return 4; - case ElfRgba8ui: return 4; - case ElfRg32ui: return 2; - case ElfRg16ui: return 2; - case ElfRgb10a2ui: return 4; - case ElfRg8ui: return 2; - case ElfR32ui: return 1; - case ElfR16ui: return 1; - case ElfR8ui: return 1; - default: return 4; - } - } static const char* getLayoutDepthString(TLayoutDepth d) { switch (d) { diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index cfca4b98..04e2d170 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -177,6 +177,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.samplelevel.basic.dx10.vert", "main"}, {"hlsl.samplelevel.offset.dx10.frag", "main"}, {"hlsl.samplelevel.offsetarray.dx10.frag", "main"}, + { "hlsl.sample.sub-vec4.dx10.frag", "main"}, {"hlsl.semicolons.frag", "main"}, {"hlsl.shapeConv.frag", "main"}, {"hlsl.shapeConvRet.frag", "main"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index c9c4716e..f064f1fa 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -907,12 +907,6 @@ bool HlslGrammar::acceptTextureType(TType& type) return false; } - // if (txType.getVectorSize() != 1 && txType.getVectorSize() != 4 && !image) { - // // TODO: handle vec2/3 types - // expected("vector size not yet supported in texture type"); - // return false; - // } - if (ms && acceptTokenClass(EHTokComma)) { // read sample count for multisample types, if given if (! peekTokenClass(EHTokIntConstant)) { @@ -957,6 +951,9 @@ bool HlslGrammar::acceptTextureType(TType& type) sampler.setTexture(txType.getBasicType(), dim, array, shadow, ms); } } + + // Remember the declared vector size. + sampler.vectorSize = txType.getVectorSize(); type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); type.getQualifier().layoutFormat = format; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 1ba7d08a..97999d0e 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -154,15 +154,15 @@ TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const { const int components = txType.getVectorSize(); - const auto select = [&](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) { + const auto selectFormat = [&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) { return components == 1 ? v1 : components == 2 ? v2 : v4; }; switch (txType.getBasicType()) { - case EbtFloat: return select(ElfR32f, ElfRg32f, ElfRgba32f); - case EbtInt: return select(ElfR32i, ElfRg32i, ElfRgba32i); - case EbtUint: return select(ElfR32ui, ElfRg32ui, ElfRgba32ui); + case EbtFloat: return selectFormat(ElfR32f, ElfRg32f, ElfRgba32f); + case EbtInt: return selectFormat(ElfR32i, ElfRg32i, ElfRgba32i); + case EbtUint: return selectFormat(ElfR32ui, ElfRg32ui, ElfRgba32ui); default: error(loc, "unknown basic type in image format", "", ""); return ElfNone; @@ -286,6 +286,8 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* coord = lhsAsAggregate->getSequence()[1]->getAsTyped(); + const TSampler& texSampler = object->getType().getSampler(); + const TLayoutFormat fmt = object->getType().getQualifier().layoutFormat; // We only handle this subset of the possible formats. @@ -293,8 +295,7 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* fmt == ElfRg32f || fmt == ElfRg32i || fmt == ElfRg32ui || fmt == ElfR32f || fmt == ElfR32i || fmt == ElfR32ui); - const TType objDerefType(object->getType().getSampler().type, EvqTemporary, - TQualifier::getLayoutComponentCount(fmt)); + const TType objDerefType(texSampler.type, EvqTemporary, texSampler.vectorSize); if (nodeAsBinary) { TIntermTyped* rhs = nodeAsBinary->getRight(); @@ -604,10 +605,9 @@ TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIn if (base->getType().getBasicType() == EbtSampler && !base->isArray()) { const TSampler& sampler = base->getType().getSampler(); if (sampler.isImage() || sampler.isTexture()) { - const int vecSize = TQualifier::getLayoutComponentCount(base->getType().getQualifier().layoutFormat); TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch); - load->setType(TType(sampler.type, EvqTemporary, vecSize)); + load->setType(TType(sampler.type, EvqTemporary, sampler.vectorSize)); load->setLoc(loc); load->getSequence().push_back(base); load->getSequence().push_back(index); @@ -1444,6 +1444,31 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (!node || !node->getAsOperator()) return; + const auto clampReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) { + // Sampler return must always be a vec4, but we can construct a shorter vector + result->setType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize())); + + if (sampler.vectorSize < node->getVectorSize()) { + // Too many components. Construct shorter vector from it. + const TType clampedType(result->getType().getBasicType(), EvqTemporary, sampler.vectorSize); + + TOperator op; + + switch (sampler.type) { + case EbtInt: op = EOpConstructInt; break; + case EbtUint: op = EOpConstructUint; break; + case EbtFloat: op = EOpConstructFloat; break; + default: + error(loc, "unknown basic type in texture op", "", ""); + } + + result = constructBuiltIn(clampedType, op, result, loc, false); + } + + result->setLoc(loc); + return result; + }; + const TOperator op = node->getAsOperator()->getOp(); const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr; @@ -1452,10 +1477,8 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType case EOpTexture: { // Texture with ddx & ddy is really gradient form in HLSL - if (argAggregate->getSequence().size() == 4) { + if (argAggregate->getSequence().size() == 4) node->getAsAggregate()->setOperator(EOpTextureGrad); - break; - } break; } @@ -1471,14 +1494,16 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType TIntermTyped* bias = intermediate.addIndex(EOpIndexDirect, arg1, w, loc); TOperator constructOp = EOpNull; - switch (arg0->getType().getSampler().dim) { + const TSampler& sampler = arg0->getType().getSampler(); + + switch (sampler.dim) { case Esd1D: constructOp = EOpConstructFloat; break; // 1D case Esd2D: constructOp = EOpConstructVec2; break; // 2D case Esd3D: constructOp = EOpConstructVec3; break; // 3D case EsdCube: constructOp = EOpConstructVec3; break; // also 3D default: break; } - + TIntermAggregate* constructCoord = new TIntermAggregate(constructOp); constructCoord->getSequence().push_back(arg1); constructCoord->setLoc(loc); @@ -1487,8 +1512,8 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType tex->getSequence().push_back(arg0); // sampler tex->getSequence().push_back(constructCoord); // coordinate tex->getSequence().push_back(bias); // bias - tex->setLoc(loc); - node = tex; + + node = clampReturn(tex, sampler); break; } @@ -1502,6 +1527,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* argBias = nullptr; TIntermTyped* argOffset = nullptr; + const TSampler& sampler = argTex->getType().getSampler(); int nextArg = 3; @@ -1527,9 +1553,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); - txsample->setType(node->getType()); - txsample->setLoc(loc); - node = txsample; + node = clampReturn(txsample, sampler); break; } @@ -1542,6 +1566,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType TIntermTyped* argDDX = argAggregate->getSequence()[3]->getAsTyped(); TIntermTyped* argDDY = argAggregate->getSequence()[4]->getAsTyped(); TIntermTyped* argOffset = nullptr; + const TSampler& sampler = argTex->getType().getSampler(); TOperator textureOp = EOpTextureGrad; @@ -1561,9 +1586,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); - txsample->setType(node->getType()); - txsample->setLoc(loc); - node = txsample; + node = clampReturn(txsample, sampler); break; } @@ -1582,9 +1605,9 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType assert(texType.getBasicType() == EbtSampler); - const TSampler& texSampler = texType.getSampler(); - const TSamplerDim dim = texSampler.dim; - const bool isImage = texSampler.isImage(); + const TSampler& sampler = texType.getSampler(); + const TSamplerDim dim = sampler.dim; + const bool isImage = sampler.isImage(); const int numArgs = (int)argAggregate->getSequence().size(); int numDims = 0; @@ -1600,11 +1623,11 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType } // Arrayed adds another dimension for the number of array elements - if (texSampler.isArrayed()) + if (sampler.isArrayed()) ++numDims; // Establish whether we're querying mip levels - const bool mipQuery = (numArgs > (numDims + 1)) && (!texSampler.isMultiSample()); + const bool mipQuery = (numArgs > (numDims + 1)) && (!sampler.isMultiSample()); // AST assumes integer return. Will be converted to float if required. TIntermAggregate* sizeQuery = new TIntermAggregate(isImage ? EOpImageQuerySize : EOpTextureQuerySize); @@ -1662,7 +1685,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType } // 2DMS formats query # samples, which needs a different query op - if (texSampler.isMultiSample()) { + if (sampler.isMultiSample()) { TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + numDims]->getAsTyped(); TIntermAggregate* samplesQuery = new TIntermAggregate(EOpImageQuerySamples); @@ -1751,9 +1774,10 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType TIntermTyped* lodComponent = nullptr; TIntermTyped* coordSwizzle = nullptr; - const bool isMS = argTex->getType().getSampler().isMultiSample(); - const bool isBuffer = argTex->getType().getSampler().dim == EsdBuffer; - const bool isImage = argTex->getType().getSampler().isImage(); + const TSampler& sampler = argTex->getType().getSampler(); + const bool isMS = sampler.isMultiSample(); + const bool isBuffer = sampler.dim == EsdBuffer; + const bool isImage = sampler.isImage(); const TBasicType coordBaseType = argCoord->getType().getBasicType(); // Last component of coordinate is the mip level, for non-MS. we separate them here: @@ -1807,11 +1831,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType txfetch->getSequence().push_back(argOffset); } - int vecSize = TQualifier::getLayoutComponentCount(argTex->getType().getQualifier().layoutFormat); - - txfetch->setType(TType(node->getType().getBasicType(), EvqTemporary, vecSize)); - txfetch->setLoc(loc); - node = txfetch; + node = clampReturn(txfetch, sampler); break; } @@ -1823,7 +1843,8 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); TIntermTyped* argLod = argAggregate->getSequence()[3]->getAsTyped(); TIntermTyped* argOffset = nullptr; - + const TSampler& sampler = argTex->getType().getSampler(); + const int numArgs = (int)argAggregate->getSequence().size(); if (numArgs == 5) // offset, if present @@ -1841,9 +1862,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); - txsample->setType(node->getType()); - txsample->setLoc(loc); - node = txsample; + node = clampReturn(txsample, sampler); break; } diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index a2d500f2..d33cfb89 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -708,15 +708,15 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "SampleLevel", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangAll }, { "SampleLevel", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangAll }, - { "Load", /*!O*/ "V4", nullptr, "%@*,V", "FIU,I", EShLangAll }, + { "Load", /*!O*/ "V4", nullptr, "%@,V", "FIU,I", EShLangAll }, { "Load", /* O*/ "V4", nullptr, "%@,V,V", "FIU,I,I", EShLangAll }, { "Load", /* +sampleidex*/ "V4", nullptr, "$&,V,S", "FIU,I,I", EShLangAll }, { "Load", /* +samplindex, offset*/ "V4", nullptr, "$&,V,S,V", "FIU,I,I,I", EShLangAll }, // RWTexture loads { "Load", "V4", nullptr, "!#,V", "FIU,I", EShLangAll }, - // RWBuffer loads - { "Load", "V4", nullptr, "~1,V", "FIU,I", EShLangAll }, + // (RW)Buffer loads + { "Load", "V4", nullptr, "~*1,V", "FIU,I", EShLangAll }, { "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll }, { "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangAll }, From cce8d48bcc9a0794845cf284f2caccf3458c8bf4 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 14 Oct 2016 18:36:42 -0600 Subject: [PATCH 066/130] HLSL: phase 3c: add option to use Unknown storage format This uses the Unknown storage format, instead of deducing the format from the texture declaration type. --- StandAlone/StandAlone.cpp | 8 +++++++ .../hlsl.sample.sub-vec4.dx10.frag.out | 8 +++---- glslang/MachineIndependent/ShaderLang.cpp | 1 + .../MachineIndependent/localintermediate.h | 8 +++++-- glslang/Public/ShaderLang.h | 1 + hlsl/hlslParseHelper.cpp | 22 +++++-------------- 6 files changed, 25 insertions(+), 23 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index f0a4f93c..7ffd2324 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -82,6 +82,7 @@ enum TOptions { EOptionCascadingErrors = (1 << 18), EOptionAutoMapBindings = (1 << 19), EOptionFlattenUniformArrays = (1 << 20), + EOptionNoStorageFormat = (1 << 21), }; // @@ -290,6 +291,9 @@ void ProcessArguments(int argc, char* argv[]) lowerword == "flatten-uniform-array" || lowerword == "fua") { Options |= EOptionFlattenUniformArrays; + } else if (lowerword == "no-storage-format" || // synonyms + lowerword == "nsf") { + Options |= EOptionNoStorageFormat; } else { usage(); } @@ -542,6 +546,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]); shader->setShiftUboBinding(baseUboBinding[compUnit.stage]); shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); + shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); if (Options & EOptionAutoMapBindings) shader->setAutoMapBindings(true); @@ -945,6 +950,9 @@ void usage() "\n" " --flatten-uniform-arrays flatten uniform texture & sampler arrays to scalars\n" " --fua synonym for --flatten-uniform-arrays\n" + "\n" + " --no-storage-format use Unknown image format\n" + " --nsf synonym for --no-storage-format\n" ); exit(EFailUsage); diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out index abe1cb5a..5a97ed96 100644 --- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out @@ -18,7 +18,7 @@ gl_FragCoord origin is upper left 0:18 Sequence 0:18 move second child to first child (temp 2-component vector of float) 0:18 'txval11' (temp 2-component vector of float) -0:18 Construct float (temp 2-component vector of float) +0:18 Construct vec2 (temp 2-component vector of float) 0:? texture (temp 4-component vector of float) 0:18 Construct combined texture-sampler (temp sampler1D) 0:18 'g_tTex1df2' (uniform texture1D) @@ -28,7 +28,7 @@ gl_FragCoord origin is upper left 0:19 Sequence 0:19 move second child to first child (temp 3-component vector of float) 0:19 'txval12' (temp 3-component vector of float) -0:19 Construct float (temp 3-component vector of float) +0:19 Construct vec3 (temp 3-component vector of float) 0:? texture (temp 4-component vector of float) 0:19 Construct combined texture-sampler (temp sampler1D) 0:19 'g_tTex1df3' (uniform texture1D) @@ -94,7 +94,7 @@ gl_FragCoord origin is upper left 0:18 Sequence 0:18 move second child to first child (temp 2-component vector of float) 0:18 'txval11' (temp 2-component vector of float) -0:18 Construct float (temp 2-component vector of float) +0:18 Construct vec2 (temp 2-component vector of float) 0:? texture (temp 4-component vector of float) 0:18 Construct combined texture-sampler (temp sampler1D) 0:18 'g_tTex1df2' (uniform texture1D) @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:19 Sequence 0:19 move second child to first child (temp 3-component vector of float) 0:19 'txval12' (temp 3-component vector of float) -0:19 Construct float (temp 3-component vector of float) +0:19 Construct vec3 (temp 3-component vector of float) 0:? texture (temp 4-component vector of float) 0:19 Construct combined texture-sampler (temp sampler1D) 0:19 'g_tTex1df3' (uniform texture1D) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 5333af45..6d044452 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1497,6 +1497,7 @@ void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShift void TShader::setShiftUboBinding(unsigned int base) { intermediate->setShiftUboBinding(base); } void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); } void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } +void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); } // // Turn the shader strings into a parse tree in the TIntermediate. diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 348b78e0..aae22ecc 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -146,7 +146,8 @@ public: shiftTextureBinding(0), shiftUboBinding(0), autoMapBindings(false), - flattenUniformArrays(false) + flattenUniformArrays(false), + useUnknownFormat(false) { localSize[0] = 1; localSize[1] = 1; @@ -179,7 +180,9 @@ public: bool getAutoMapBindings() const { return autoMapBindings; } void setFlattenUniformArrays(bool flatten) { flattenUniformArrays = flatten; } bool getFlattenUniformArrays() const { return flattenUniformArrays; } - + void setNoStorageFormat(bool b) { useUnknownFormat = b; } + bool getNoStorageFormat() const { return useUnknownFormat; } + void setVersion(int v) { version = v; } int getVersion() const { return version; } void setProfile(EProfile p) { profile = p; } @@ -397,6 +400,7 @@ protected: unsigned int shiftUboBinding; bool autoMapBindings; bool flattenUniformArrays; + bool useUnknownFormat; EProfile profile; int version; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 6b894c19..e5e8b4d7 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -309,6 +309,7 @@ public: void setShiftUboBinding(unsigned int base); void setAutoMapBindings(bool map); void setFlattenUniformArrays(bool flatten); + void setNoStorageFormat(bool useUnknownFormat); // Interface to #include handlers. // diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 97999d0e..aa415452 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -154,7 +154,10 @@ TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const { const int components = txType.getVectorSize(); - const auto selectFormat = [&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) { + const auto selectFormat = [this,&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) { + if (intermediate.getNoStorageFormat()) + return ElfNone; + return components == 1 ? v1 : components == 2 ? v2 : v4; }; @@ -288,13 +291,6 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* const TSampler& texSampler = object->getType().getSampler(); - const TLayoutFormat fmt = object->getType().getQualifier().layoutFormat; - - // We only handle this subset of the possible formats. - assert(fmt == ElfRgba32f || fmt == ElfRgba32i || fmt == ElfRgba32ui || - fmt == ElfRg32f || fmt == ElfRg32i || fmt == ElfRg32ui || - fmt == ElfR32f || fmt == ElfR32i || fmt == ElfR32ui); - const TType objDerefType(texSampler.type, EvqTemporary, texSampler.vectorSize); if (nodeAsBinary) { @@ -1452,15 +1448,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType // Too many components. Construct shorter vector from it. const TType clampedType(result->getType().getBasicType(), EvqTemporary, sampler.vectorSize); - TOperator op; - - switch (sampler.type) { - case EbtInt: op = EOpConstructInt; break; - case EbtUint: op = EOpConstructUint; break; - case EbtFloat: op = EOpConstructFloat; break; - default: - error(loc, "unknown basic type in texture op", "", ""); - } + const TOperator op = intermediate.mapTypeToConstructorOp(clampedType); result = constructBuiltIn(clampedType, op, result, loc, false); } From 425af5f6b03b66ff14283d4ba9e8c045d453514f Mon Sep 17 00:00:00 2001 From: Josh Gargus Date: Sat, 15 Oct 2016 15:19:59 -0700 Subject: [PATCH 067/130] Use a recursive mutex. --- glslang/OSDependent/Unix/ossource.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index 0e6d7307..7e84d4eb 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -165,10 +165,27 @@ bool OS_FreeTLSIndex(OS_TLSIndex nIndex) return false; } -static pthread_mutex_t gMutex; -void InitGlobalLock() { pthread_mutex_init(&gMutex, NULL); } -void GetGlobalLock() { pthread_mutex_lock(&gMutex); } -void ReleaseGlobalLock() { pthread_mutex_unlock(&gMutex); } +namespace { +pthread_mutex_t gMutex; +} + +void InitGlobalLock() +{ + pthread_mutexattr_t mutexattr; + pthread_mutexattr_init(&mutexattr); + pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&gMutex, &mutexattr); +} + +void GetGlobalLock() +{ + pthread_mutex_lock(&gMutex); +} + +void ReleaseGlobalLock() +{ + pthread_mutex_unlock(&gMutex); +} // TODO: non-windows: if we need these on linux, flesh them out void* OS_CreateThread(TThreadEntrypoint /*entry*/) From 4a3467933e1ca6e184aba29a3a12db40b1833a77 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 16 Oct 2016 11:50:46 -0600 Subject: [PATCH 068/130] Build: Fix unsigned/signed warning. --- glslang/Include/revision.h | 4 ++-- hlsl/hlslParseHelper.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 0521e2e8..3cdfdb01 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1560" -#define GLSLANG_DATE "07-Oct-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1601" +#define GLSLANG_DATE "16-Oct-2016" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index b7ee7f40..78f18b67 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1444,7 +1444,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType // Sampler return must always be a vec4, but we can construct a shorter vector result->setType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize())); - if (sampler.vectorSize < node->getVectorSize()) { + if (sampler.vectorSize < (unsigned)node->getVectorSize()) { // Too many components. Construct shorter vector from it. const TType clampedType(result->getType().getBasicType(), EvqTemporary, sampler.vectorSize); From b50fd17acbddc53d0d4d9f7ad84b990ad0e71774 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 16 Oct 2016 12:12:11 -0600 Subject: [PATCH 069/130] HLSL: Support SV_Coverage and SV_DispatchThreadId; catch SV_GroupIndex. --- Test/baseResults/hlsl.basic.comp.out | 59 +++++++++++++++++++++++ Test/baseResults/hlsl.inoutquals.frag.out | 17 +++++-- Test/hlsl.basic.comp | 6 +++ Test/hlsl.inoutquals.frag | 2 +- glslang/Include/revision.h | 2 +- gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 10 ++-- 7 files changed, 88 insertions(+), 9 deletions(-) create mode 100755 Test/baseResults/hlsl.basic.comp.out create mode 100644 Test/hlsl.basic.comp diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out new file mode 100755 index 00000000..1948ec3c --- /dev/null +++ b/Test/baseResults/hlsl.basic.comp.out @@ -0,0 +1,59 @@ +hlsl.basic.comp +Shader version: 450 +local_size = (1, 1, 1) +0:? Sequence +0:4 Function Definition: main( (temp void) +0:4 Function Parameters: +0:? Sequence +0:5 dti: direct index for structure (layout(offset=0 ) uniform int LocalInvocationID) +0:5 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) +0:5 Constant: +0:5 0 (const uint) +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) + + +Linked compute stage: + + +Shader version: 450 +local_size = (1, 1, 1) +0:? Sequence +0:4 Function Definition: main( (temp void) +0:4 Function Parameters: +0:? Sequence +0:5 dti: direct index for structure (layout(offset=0 ) uniform int LocalInvocationID) +0:5 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) +0:5 Constant: +0:5 0 (const uint) +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 11 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Name 4 "main" + Name 7 "$Global" + MemberName 7($Global) 0 "dti" + Name 9 "" + MemberDecorate 7($Global) 0 Offset 0 + MemberDecorate 7($Global) 0 BuiltIn LocalInvocationId + Decorate 7($Global) Block + Decorate 9 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7($Global): TypeStruct 6(int) + 8: TypePointer Uniform 7($Global) + 9: 8(ptr) Variable Uniform + 10: 6(int) Constant 0 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out index 83fe24bd..b2716a4c 100644 --- a/Test/baseResults/hlsl.inoutquals.frag.out +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -18,9 +18,10 @@ gl_FragCoord origin is upper left 0:11 'x' (in float) 0:11 Constant: 0:11 -1.000000 -0:15 Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:15 Function Definition: main(vf4;i1; (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: 0:15 'inpos' (noperspective in 4-component vector of float FragCoord) +0:15 'sampleMask' (out int SampleMaskIn) 0:? Sequence 0:18 Sequence 0:18 move second child to first child (temp float) @@ -74,6 +75,7 @@ gl_FragCoord origin is upper left 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) 0:? 'inpos' (noperspective in 4-component vector of float FragCoord) +0:? 'sampleMask' (out int SampleMaskIn) Linked fragment stage: @@ -98,9 +100,10 @@ gl_FragCoord origin is upper left 0:11 'x' (in float) 0:11 Constant: 0:11 -1.000000 -0:15 Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:15 Function Definition: main(vf4;i1; (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: 0:15 'inpos' (noperspective in 4-component vector of float FragCoord) +0:15 'sampleMask' (out int SampleMaskIn) 0:? Sequence 0:18 Sequence 0:18 move second child to first child (temp float) @@ -154,15 +157,17 @@ gl_FragCoord origin is upper left 0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'Depth' (out float FragDepth) 0:? 'inpos' (noperspective in 4-component vector of float FragCoord) +0:? 'sampleMask' (out int SampleMaskIn) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 61 +// Id's are bound by 63 Capability Shader + Capability SampleRateShading 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 45 53 57 + EntryPoint Fragment 4 "main" 45 53 57 62 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 12 "MyFunc(f1;f1;f1;" @@ -182,10 +187,12 @@ gl_FragCoord origin is upper left Name 45 "inpos" Name 53 "Color" Name 57 "Depth" + Name 62 "sampleMask" Decorate 45(inpos) NoPerspective Decorate 45(inpos) BuiltIn FragCoord Decorate 53(Color) Location 0 Decorate 57(Depth) BuiltIn FragDepth + Decorate 62(sampleMask) BuiltIn SampleMask 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -211,6 +218,8 @@ gl_FragCoord origin is upper left 53(Color): 52(ptr) Variable Output 56: TypePointer Output 6(float) 57(Depth): 56(ptr) Variable Output + 61: TypePointer Output 34(int) + 62(sampleMask): 61(ptr) Variable Output 4(main): 2 Function None 3 5: Label 17(x): 7(ptr) Variable Function diff --git a/Test/hlsl.basic.comp b/Test/hlsl.basic.comp new file mode 100644 index 00000000..5e435105 --- /dev/null +++ b/Test/hlsl.basic.comp @@ -0,0 +1,6 @@ +int dti : SV_DispatchThreadID; + +void main() +{ + dti; +} diff --git a/Test/hlsl.inoutquals.frag b/Test/hlsl.inoutquals.frag index 91798d57..32346882 100644 --- a/Test/hlsl.inoutquals.frag +++ b/Test/hlsl.inoutquals.frag @@ -11,7 +11,7 @@ void MyFunc(in float x, out float y, inout float z) x = -1; // no effect since x = in param } -PS_OUTPUT main(noperspective in float4 inpos : SV_Position) +PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask : SV_Coverage) { PS_OUTPUT psout; diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 3cdfdb01..882a2d0c 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1601" +#define GLSLANG_REVISION "Overload400-PrecQual.1602" #define GLSLANG_DATE "16-Oct-2016" diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index f50c749c..b50816a1 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -86,6 +86,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.array.multidim.frag", "main"}, {"hlsl.assoc.frag", "PixelShaderFunction"}, {"hlsl.attribute.frag", "PixelShaderFunction"}, + {"hlsl.basic.comp", "main"}, {"hlsl.buffer.frag", "PixelShaderFunction"}, {"hlsl.calculatelod.dx10.frag", "main"}, {"hlsl.calculatelodunclamped.dx10.frag", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 78f18b67..b4c417d9 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -2935,6 +2935,8 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, con qualifier.builtIn = EbvTessLevelInner; else if (semanticUpperCase == "SV_GSINSTANCEID") qualifier.builtIn = EbvInvocationId; + else if (semanticUpperCase == "SV_DISPATCHTHREADID") + qualifier.builtIn = EbvLocalInvocationId; else if (semanticUpperCase == "SV_GROUPTHREADID") qualifier.builtIn = EbvLocalInvocationId; else if (semanticUpperCase == "SV_GROUPID") @@ -2943,6 +2945,8 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, con qualifier.builtIn = EbvTessCoord; else if (semanticUpperCase == "SV_DEPTH") qualifier.builtIn = EbvFragDepth; + else if( semanticUpperCase == "SV_COVERAGE") + qualifier.builtIn = EbvSampleMask; //TODO, these need to get refined to be more specific else if( semanticUpperCase == "SV_DEPTHGREATEREQUAL") @@ -2950,9 +2954,9 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, con else if( semanticUpperCase == "SV_DEPTHLESSEQUAL") qualifier.builtIn = EbvFragDepthLesser; else if( semanticUpperCase == "SV_STENCILREF") - error(loc, "unimplemented", "SV_STENCILREF", ""); - else if( semanticUpperCase == "SV_COVERAGE") - error(loc, "unimplemented", "SV_COVERAGE", ""); + error(loc, "unimplemented; need ARB_shader_stencil_export", "SV_STENCILREF", ""); + else if( semanticUpperCase == "SV_GROUPINDEX") + error(loc, "unimplemented", "SV_GROUPINDEX", ""); } // From 5d45eadedc37141d27100ce312af7125ec7058ab Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 16 Oct 2016 12:22:20 -0600 Subject: [PATCH 070/130] HLSL: Turn on tests for groupshared. --- Test/baseResults/hlsl.basic.comp.out | 49 +- Test/baseResults/hlsl.intrinsics.comp.out | 544 +++++++++++----------- Test/baseResults/hlsl.intrinsics.frag.out | 80 ++-- Test/hlsl.basic.comp | 4 +- Test/hlsl.intrinsics.comp | 26 +- Test/hlsl.intrinsics.frag | 26 +- glslang/Include/revision.h | 2 +- 7 files changed, 365 insertions(+), 366 deletions(-) diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out index 1948ec3c..c6dc3e5c 100755 --- a/Test/baseResults/hlsl.basic.comp.out +++ b/Test/baseResults/hlsl.basic.comp.out @@ -2,15 +2,14 @@ hlsl.basic.comp Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:4 Function Definition: main( (temp void) +0:4 Function Definition: main(i1; (temp void) 0:4 Function Parameters: +0:4 'dti' (in int LocalInvocationID) 0:? Sequence -0:5 dti: direct index for structure (layout(offset=0 ) uniform int LocalInvocationID) -0:5 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) -0:5 Constant: -0:5 0 (const uint) +0:5 'dti' (in int LocalInvocationID) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) +0:? 'a' (shared 100-element array of 4-component vector of float) +0:? 'dti' (in int LocalInvocationID) Linked compute stage: @@ -19,40 +18,40 @@ Linked compute stage: Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:4 Function Definition: main( (temp void) +0:4 Function Definition: main(i1; (temp void) 0:4 Function Parameters: +0:4 'dti' (in int LocalInvocationID) 0:? Sequence -0:5 dti: direct index for structure (layout(offset=0 ) uniform int LocalInvocationID) -0:5 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) -0:5 Constant: -0:5 0 (const uint) +0:5 'dti' (in int LocalInvocationID) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int LocalInvocationID dti}) +0:? 'a' (shared 100-element array of 4-component vector of float) +0:? 'dti' (in int LocalInvocationID) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 11 +// Id's are bound by 16 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 "main" + EntryPoint GLCompute 4 "main" 8 ExecutionMode 4 LocalSize 1 1 1 Name 4 "main" - Name 7 "$Global" - MemberName 7($Global) 0 "dti" - Name 9 "" - MemberDecorate 7($Global) 0 Offset 0 - MemberDecorate 7($Global) 0 BuiltIn LocalInvocationId - Decorate 7($Global) Block - Decorate 9 DescriptorSet 0 + Name 8 "dti" + Name 15 "a" + Decorate 8(dti) BuiltIn LocalInvocationId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 - 7($Global): TypeStruct 6(int) - 8: TypePointer Uniform 7($Global) - 9: 8(ptr) Variable Uniform - 10: 6(int) Constant 0 + 7: TypePointer Input 6(int) + 8(dti): 7(ptr) Variable Input + 9: TypeFloat 32 + 10: TypeVector 9(float) 4 + 11: TypeInt 32 0 + 12: 11(int) Constant 100 + 13: TypeArray 10(fvec4) 12 + 14: TypePointer Workgroup 13 + 15(a): 14(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label Return diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out index f7339755..cd366fcb 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -13,64 +13,64 @@ local_size = (1, 1, 1) 0:21 all (global bool) 0:21 'inF0' (in float) 0:24 AtomicAdd (global void) -0:24 'gs_ua' (global uint) -0:24 'gs_ub' (global 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' (global uint) -0:25 'gs_ub' (global uint) +0:25 'gs_ua' (shared uint) +0:25 'gs_ub' (shared uint) 0:26 AtomicAnd (global void) -0:26 'gs_ua' (global uint) -0:26 'gs_ub' (global 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 'gs_ua' (global uint) -0:27 'gs_ub' (global 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' (global uint) -0:28 'gs_ub' (global uint) -0:28 'gs_uc' (global uint) +0:28 'gs_ua' (shared uint) +0:28 'gs_ub' (shared uint) +0:28 'gs_uc' (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 'gs_ua' (global uint) -0:29 'gs_ub' (global uint) +0:29 'gs_ua' (shared uint) +0:29 'gs_ub' (shared uint) 0:30 AtomicMax (global void) -0:30 'gs_ua' (global uint) -0:30 'gs_ub' (global uint) +0:30 'gs_ua' (shared uint) +0:30 'gs_ub' (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 'gs_ua' (global uint) -0:31 'gs_ub' (global uint) +0:31 'gs_ua' (shared uint) +0:31 'gs_ub' (shared uint) 0:32 AtomicMin (global void) -0:32 'gs_ua' (global uint) -0:32 'gs_ub' (global 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 'gs_ua' (global uint) -0:33 'gs_ub' (global uint) +0:33 'gs_ua' (shared uint) +0:33 'gs_ub' (shared uint) 0:34 AtomicOr (global void) -0:34 'gs_ua' (global uint) -0:34 'gs_ub' (global 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 'gs_ua' (global uint) -0:35 'gs_ub' (global uint) +0:35 'gs_ua' (shared uint) +0:35 'gs_ub' (shared uint) 0:36 AtomicXor (global void) -0:36 'gs_ua' (global uint) -0:36 'gs_ub' (global 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 'gs_ua' (global uint) -0:37 'gs_ub' (global 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 @@ -94,64 +94,64 @@ local_size = (1, 1, 1) 0:55 all (global bool) 0:55 'inF0' (in 2-component vector of float) 0:58 AtomicAdd (global void) -0:58 'gs_ua2' (global 2-component vector of uint) -0:58 'gs_ub2' (global 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' (global 2-component vector of uint) -0:59 'gs_ub2' (global 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 (global void) -0:60 'gs_ua2' (global 2-component vector of uint) -0:60 'gs_ub2' (global 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' (global 2-component vector of uint) -0:61 'gs_ub2' (global 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' (global 2-component vector of uint) -0:62 'gs_ub2' (global 2-component vector of uint) -0:62 'gs_uc2' (global 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: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 'gs_ua2' (global 2-component vector of uint) -0:63 'gs_ub2' (global 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 (global void) -0:64 'gs_ua2' (global 2-component vector of uint) -0:64 'gs_ub2' (global 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 'gs_ua2' (global 2-component vector of uint) -0:65 'gs_ub2' (global 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 (global void) -0:66 'gs_ua2' (global 2-component vector of uint) -0:66 'gs_ub2' (global 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: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 'gs_ua2' (global 2-component vector of uint) -0:67 'gs_ub2' (global 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 (global void) -0:68 'gs_ua2' (global 2-component vector of uint) -0:68 'gs_ub2' (global 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 'gs_ua2' (global 2-component vector of uint) -0:69 'gs_ub2' (global 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 (global void) -0:70 'gs_ua2' (global 2-component vector of uint) -0:70 'gs_ub2' (global 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 'gs_ua2' (global 2-component vector of uint) -0:71 'gs_ub2' (global 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:? Constant: 0:? 1.000000 @@ -167,64 +167,64 @@ local_size = (1, 1, 1) 0:82 all (global bool) 0:82 'inF0' (in 3-component vector of float) 0:85 AtomicAdd (global void) -0:85 'gs_ua3' (global 3-component vector of uint) -0:85 'gs_ub3' (global 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' (global 3-component vector of uint) -0:86 'gs_ub3' (global 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 (global void) -0:87 'gs_ua3' (global 3-component vector of uint) -0:87 'gs_ub3' (global 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' (global 3-component vector of uint) -0:88 'gs_ub3' (global 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' (global 3-component vector of uint) -0:89 'gs_ub3' (global 3-component vector of uint) -0:89 'gs_uc3' (global 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: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 'gs_ua3' (global 3-component vector of uint) -0:90 'gs_ub3' (global 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 (global void) -0:91 'gs_ua3' (global 3-component vector of uint) -0:91 'gs_ub3' (global 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 'gs_ua3' (global 3-component vector of uint) -0:92 'gs_ub3' (global 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 (global void) -0:93 'gs_ua3' (global 3-component vector of uint) -0:93 'gs_ub3' (global 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: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 'gs_ua3' (global 3-component vector of uint) -0:94 'gs_ub3' (global 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 (global void) -0:95 'gs_ua3' (global 3-component vector of uint) -0:95 'gs_ub3' (global 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 'gs_ua3' (global 3-component vector of uint) -0:96 'gs_ub3' (global 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 (global void) -0:97 'gs_ua3' (global 3-component vector of uint) -0:97 'gs_ub3' (global 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 'gs_ua3' (global 3-component vector of uint) -0:98 'gs_ub3' (global 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:? Constant: 0:? 1.000000 @@ -241,64 +241,64 @@ local_size = (1, 1, 1) 0:109 all (global bool) 0:109 'inF0' (layout(location=0 ) in 4-component vector of float) 0:112 AtomicAdd (global void) -0:112 'gs_ua4' (global 4-component vector of uint) -0:112 'gs_ub4' (global 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' (global 4-component vector of uint) -0:113 'gs_ub4' (global 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 (global void) -0:114 'gs_ua4' (global 4-component vector of uint) -0:114 'gs_ub4' (global 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' (global 4-component vector of uint) -0:115 'gs_ub4' (global 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' (global 4-component vector of uint) -0:116 'gs_ub4' (global 4-component vector of uint) -0:116 'gs_uc4' (global 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: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 'gs_ua4' (global 4-component vector of uint) -0:117 'gs_ub4' (global 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 (global void) -0:118 'gs_ua4' (global 4-component vector of uint) -0:118 'gs_ub4' (global 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 'gs_ua4' (global 4-component vector of uint) -0:119 'gs_ub4' (global 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 (global void) -0:120 'gs_ua4' (global 4-component vector of uint) -0:120 'gs_ub4' (global 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: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 'gs_ua4' (global 4-component vector of uint) -0:121 'gs_ub4' (global 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 (global void) -0:122 'gs_ua4' (global 4-component vector of uint) -0:122 'gs_ub4' (global 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 'gs_ua4' (global 4-component vector of uint) -0:123 'gs_ub4' (global 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 (global void) -0:124 'gs_ua4' (global 4-component vector of uint) -0:124 'gs_ub4' (global 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 'gs_ua4' (global 4-component vector of uint) -0:125 'gs_ub4' (global 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 Sequence 0:128 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -309,18 +309,18 @@ local_size = (1, 1, 1) 0:? 4.000000 0:128 Branch: Return 0:? Linker Objects -0:? 'gs_ua' (global uint) -0:? 'gs_ub' (global uint) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -0:? 'gs_ua4' (global 4-component vector of uint) -0:? 'gs_ub4' (global 4-component vector of uint) -0:? 'gs_uc4' (global 4-component vector of uint) +0:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +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:? '@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) @@ -346,64 +346,64 @@ local_size = (1, 1, 1) 0:21 all (global bool) 0:21 'inF0' (in float) 0:24 AtomicAdd (global void) -0:24 'gs_ua' (global uint) -0:24 'gs_ub' (global 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' (global uint) -0:25 'gs_ub' (global uint) +0:25 'gs_ua' (shared uint) +0:25 'gs_ub' (shared uint) 0:26 AtomicAnd (global void) -0:26 'gs_ua' (global uint) -0:26 'gs_ub' (global 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 'gs_ua' (global uint) -0:27 'gs_ub' (global 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' (global uint) -0:28 'gs_ub' (global uint) -0:28 'gs_uc' (global uint) +0:28 'gs_ua' (shared uint) +0:28 'gs_ub' (shared uint) +0:28 'gs_uc' (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 'gs_ua' (global uint) -0:29 'gs_ub' (global uint) +0:29 'gs_ua' (shared uint) +0:29 'gs_ub' (shared uint) 0:30 AtomicMax (global void) -0:30 'gs_ua' (global uint) -0:30 'gs_ub' (global uint) +0:30 'gs_ua' (shared uint) +0:30 'gs_ub' (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 'gs_ua' (global uint) -0:31 'gs_ub' (global uint) +0:31 'gs_ua' (shared uint) +0:31 'gs_ub' (shared uint) 0:32 AtomicMin (global void) -0:32 'gs_ua' (global uint) -0:32 'gs_ub' (global 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 'gs_ua' (global uint) -0:33 'gs_ub' (global uint) +0:33 'gs_ua' (shared uint) +0:33 'gs_ub' (shared uint) 0:34 AtomicOr (global void) -0:34 'gs_ua' (global uint) -0:34 'gs_ub' (global 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 'gs_ua' (global uint) -0:35 'gs_ub' (global uint) +0:35 'gs_ua' (shared uint) +0:35 'gs_ub' (shared uint) 0:36 AtomicXor (global void) -0:36 'gs_ua' (global uint) -0:36 'gs_ub' (global 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 'gs_ua' (global uint) -0:37 'gs_ub' (global 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 @@ -427,64 +427,64 @@ local_size = (1, 1, 1) 0:55 all (global bool) 0:55 'inF0' (in 2-component vector of float) 0:58 AtomicAdd (global void) -0:58 'gs_ua2' (global 2-component vector of uint) -0:58 'gs_ub2' (global 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' (global 2-component vector of uint) -0:59 'gs_ub2' (global 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 (global void) -0:60 'gs_ua2' (global 2-component vector of uint) -0:60 'gs_ub2' (global 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' (global 2-component vector of uint) -0:61 'gs_ub2' (global 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' (global 2-component vector of uint) -0:62 'gs_ub2' (global 2-component vector of uint) -0:62 'gs_uc2' (global 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: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 'gs_ua2' (global 2-component vector of uint) -0:63 'gs_ub2' (global 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 (global void) -0:64 'gs_ua2' (global 2-component vector of uint) -0:64 'gs_ub2' (global 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 'gs_ua2' (global 2-component vector of uint) -0:65 'gs_ub2' (global 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 (global void) -0:66 'gs_ua2' (global 2-component vector of uint) -0:66 'gs_ub2' (global 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: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 'gs_ua2' (global 2-component vector of uint) -0:67 'gs_ub2' (global 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 (global void) -0:68 'gs_ua2' (global 2-component vector of uint) -0:68 'gs_ub2' (global 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 'gs_ua2' (global 2-component vector of uint) -0:69 'gs_ub2' (global 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 (global void) -0:70 'gs_ua2' (global 2-component vector of uint) -0:70 'gs_ub2' (global 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 'gs_ua2' (global 2-component vector of uint) -0:71 'gs_ub2' (global 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:? Constant: 0:? 1.000000 @@ -500,64 +500,64 @@ local_size = (1, 1, 1) 0:82 all (global bool) 0:82 'inF0' (in 3-component vector of float) 0:85 AtomicAdd (global void) -0:85 'gs_ua3' (global 3-component vector of uint) -0:85 'gs_ub3' (global 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' (global 3-component vector of uint) -0:86 'gs_ub3' (global 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 (global void) -0:87 'gs_ua3' (global 3-component vector of uint) -0:87 'gs_ub3' (global 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' (global 3-component vector of uint) -0:88 'gs_ub3' (global 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' (global 3-component vector of uint) -0:89 'gs_ub3' (global 3-component vector of uint) -0:89 'gs_uc3' (global 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: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 'gs_ua3' (global 3-component vector of uint) -0:90 'gs_ub3' (global 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 (global void) -0:91 'gs_ua3' (global 3-component vector of uint) -0:91 'gs_ub3' (global 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 'gs_ua3' (global 3-component vector of uint) -0:92 'gs_ub3' (global 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 (global void) -0:93 'gs_ua3' (global 3-component vector of uint) -0:93 'gs_ub3' (global 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: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 'gs_ua3' (global 3-component vector of uint) -0:94 'gs_ub3' (global 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 (global void) -0:95 'gs_ua3' (global 3-component vector of uint) -0:95 'gs_ub3' (global 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 'gs_ua3' (global 3-component vector of uint) -0:96 'gs_ub3' (global 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 (global void) -0:97 'gs_ua3' (global 3-component vector of uint) -0:97 'gs_ub3' (global 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 'gs_ua3' (global 3-component vector of uint) -0:98 'gs_ub3' (global 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:? Constant: 0:? 1.000000 @@ -574,64 +574,64 @@ local_size = (1, 1, 1) 0:109 all (global bool) 0:109 'inF0' (layout(location=0 ) in 4-component vector of float) 0:112 AtomicAdd (global void) -0:112 'gs_ua4' (global 4-component vector of uint) -0:112 'gs_ub4' (global 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' (global 4-component vector of uint) -0:113 'gs_ub4' (global 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 (global void) -0:114 'gs_ua4' (global 4-component vector of uint) -0:114 'gs_ub4' (global 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' (global 4-component vector of uint) -0:115 'gs_ub4' (global 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' (global 4-component vector of uint) -0:116 'gs_ub4' (global 4-component vector of uint) -0:116 'gs_uc4' (global 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: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 'gs_ua4' (global 4-component vector of uint) -0:117 'gs_ub4' (global 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 (global void) -0:118 'gs_ua4' (global 4-component vector of uint) -0:118 'gs_ub4' (global 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 'gs_ua4' (global 4-component vector of uint) -0:119 'gs_ub4' (global 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 (global void) -0:120 'gs_ua4' (global 4-component vector of uint) -0:120 'gs_ub4' (global 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: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 'gs_ua4' (global 4-component vector of uint) -0:121 'gs_ub4' (global 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 (global void) -0:122 'gs_ua4' (global 4-component vector of uint) -0:122 'gs_ub4' (global 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 'gs_ua4' (global 4-component vector of uint) -0:123 'gs_ub4' (global 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 (global void) -0:124 'gs_ua4' (global 4-component vector of uint) -0:124 'gs_ub4' (global 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 'gs_ua4' (global 4-component vector of uint) -0:125 'gs_ub4' (global 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 Sequence 0:128 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -642,18 +642,18 @@ local_size = (1, 1, 1) 0:? 4.000000 0:128 Branch: Return 0:? Linker Objects -0:? 'gs_ua' (global uint) -0:? 'gs_ub' (global uint) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -0:? 'gs_ua4' (global 4-component vector of uint) -0:? 'gs_ub4' (global 4-component vector of uint) -0:? 'gs_uc4' (global 4-component vector of uint) +0:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +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:? '@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) @@ -740,35 +740,35 @@ local_size = (1, 1, 1) 39: TypePointer Function 38(ivec3) 40: TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr) 49: TypeBool - 51: TypePointer Private 8(int) - 52(gs_ua): 51(ptr) Variable Private - 53(gs_ub): 51(ptr) Variable Private + 51: TypePointer Workgroup 8(int) + 52(gs_ua): 51(ptr) Variable Workgroup + 53(gs_ub): 51(ptr) Variable Workgroup 55: 8(int) Constant 1 56: 8(int) Constant 0 - 66(gs_uc): 51(ptr) Variable Private + 66(gs_uc): 51(ptr) Variable Workgroup 87: 6(float) Constant 0 - 94: TypePointer Private 26(ivec2) - 95(gs_ua2): 94(ptr) Variable Private - 96(gs_ub2): 94(ptr) Variable Private - 107(gs_uc2): 94(ptr) Variable Private + 94: TypePointer Workgroup 26(ivec2) + 95(gs_ua2): 94(ptr) Variable Workgroup + 96(gs_ub2): 94(ptr) Variable Workgroup + 107(gs_uc2): 94(ptr) Variable Workgroup 128: 6(float) Constant 1065353216 129: 6(float) Constant 1073741824 130: 24(fvec2) ConstantComposite 128 129 - 135: TypePointer Private 38(ivec3) - 136(gs_ua3): 135(ptr) Variable Private - 137(gs_ub3): 135(ptr) Variable Private - 148(gs_uc3): 135(ptr) Variable Private + 135: TypePointer Workgroup 38(ivec3) + 136(gs_ua3): 135(ptr) Variable Workgroup + 137(gs_ub3): 135(ptr) Variable Workgroup + 148(gs_uc3): 135(ptr) Variable Workgroup 169: 6(float) Constant 1077936128 170: 36(fvec3) ConstantComposite 128 129 169 173: TypeVector 6(float) 4 174: TypePointer Input 173(fvec4) 175(inF0): 174(ptr) Variable Input 178: TypeVector 8(int) 4 - 179: TypePointer Private 178(ivec4) - 180(gs_ua4): 179(ptr) Variable Private - 181(gs_ub4): 179(ptr) Variable Private + 179: TypePointer Workgroup 178(ivec4) + 180(gs_ua4): 179(ptr) Variable Workgroup + 181(gs_ub4): 179(ptr) Variable Workgroup 184: TypePointer Function 178(ivec4) - 193(gs_uc4): 179(ptr) Variable Private + 193(gs_uc4): 179(ptr) Variable Workgroup 214: TypePointer Output 173(fvec4) 215(@entryPointOutput): 214(ptr) Variable Output 216: 6(float) Constant 1082130432 diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 4009d8da..d5a0f998 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -2782,18 +2782,18 @@ gl_FragCoord origin is upper left 0:492 0 (const int) 0:492 Branch: Return 0:? Linker Objects -0:? 'gs_ua' (global uint) -0:? 'gs_ub' (global uint) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -0:? 'gs_ua4' (global 4-component vector of uint) -0:? 'gs_ub4' (global 4-component vector of uint) -0:? 'gs_uc4' (global 4-component vector of uint) +0:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +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:? 'color' (layout(location=0 ) out 4-component vector of float) @@ -5583,18 +5583,18 @@ gl_FragCoord origin is upper left 0:492 0 (const int) 0:492 Branch: Return 0:? Linker Objects -0:? 'gs_ua' (global uint) -0:? 'gs_ub' (global uint) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -0:? 'gs_ua4' (global 4-component vector of uint) -0:? 'gs_ub4' (global 4-component vector of uint) -0:? 'gs_uc4' (global 4-component vector of uint) +0:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +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:? 'color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 @@ -6250,22 +6250,22 @@ gl_FragCoord origin is upper left 1802: 48(fvec4) ConstantComposite 284 284 284 284 1804: TypePointer Output 48(fvec4) 1805(color): 1804(ptr) Variable Output - 1809: TypePointer Private 8(int) - 1810(gs_ua): 1809(ptr) Variable Private - 1811(gs_ub): 1809(ptr) Variable Private - 1812(gs_uc): 1809(ptr) Variable Private - 1813: TypePointer Private 26(ivec2) - 1814(gs_ua2): 1813(ptr) Variable Private - 1815(gs_ub2): 1813(ptr) Variable Private - 1816(gs_uc2): 1813(ptr) Variable Private - 1817: TypePointer Private 38(ivec3) - 1818(gs_ua3): 1817(ptr) Variable Private - 1819(gs_ub3): 1817(ptr) Variable Private - 1820(gs_uc3): 1817(ptr) Variable Private - 1821: TypePointer Private 50(ivec4) - 1822(gs_ua4): 1821(ptr) Variable Private - 1823(gs_ub4): 1821(ptr) Variable Private - 1824(gs_uc4): 1821(ptr) Variable Private + 1809: TypePointer Workgroup 8(int) + 1810(gs_ua): 1809(ptr) Variable Workgroup + 1811(gs_ub): 1809(ptr) Variable Workgroup + 1812(gs_uc): 1809(ptr) Variable Workgroup + 1813: TypePointer Workgroup 26(ivec2) + 1814(gs_ua2): 1813(ptr) Variable Workgroup + 1815(gs_ub2): 1813(ptr) Variable Workgroup + 1816(gs_uc2): 1813(ptr) Variable Workgroup + 1817: TypePointer Workgroup 38(ivec3) + 1818(gs_ua3): 1817(ptr) Variable Workgroup + 1819(gs_ub3): 1817(ptr) Variable Workgroup + 1820(gs_uc3): 1817(ptr) Variable Workgroup + 1821: TypePointer Workgroup 50(ivec4) + 1822(gs_ua4): 1821(ptr) Variable Workgroup + 1823(gs_ub4): 1821(ptr) Variable Workgroup + 1824(gs_uc4): 1821(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label 1800(ps_output): 1799(ptr) Variable Function diff --git a/Test/hlsl.basic.comp b/Test/hlsl.basic.comp index 5e435105..8a65a596 100644 --- a/Test/hlsl.basic.comp +++ b/Test/hlsl.basic.comp @@ -1,6 +1,6 @@ -int dti : SV_DispatchThreadID; +groupshared float4 a[100]; -void main() +void main(int dti : SV_DispatchThreadID) { dti; } diff --git a/Test/hlsl.intrinsics.comp b/Test/hlsl.intrinsics.comp index 12b7caab..bce2d27d 100644 --- a/Test/hlsl.intrinsics.comp +++ b/Test/hlsl.intrinsics.comp @@ -1,17 +1,17 @@ -#define gs static // TODO: define as groupshared when available in the grammar -gs uint gs_ua; -gs uint gs_ub; -gs uint gs_uc; -gs uint2 gs_ua2; -gs uint2 gs_ub2; -gs uint2 gs_uc2; -gs uint3 gs_ua3; -gs uint3 gs_ub3; -gs uint3 gs_uc3; -gs uint4 gs_ua4; -gs uint4 gs_ub4; -gs uint4 gs_uc4; + +groupshared uint gs_ua; +groupshared uint gs_ub; +groupshared uint gs_uc; +groupshared uint2 gs_ua2; +groupshared uint2 gs_ub2; +groupshared uint2 gs_uc2; +groupshared uint3 gs_ua3; +groupshared uint3 gs_ub3; +groupshared uint3 gs_uc3; +groupshared uint4 gs_ua4; +groupshared uint4 gs_ub4; +groupshared uint4 gs_uc4; float ComputeShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) { diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag index 90387ccc..03e7ed38 100644 --- a/Test/hlsl.intrinsics.frag +++ b/Test/hlsl.intrinsics.frag @@ -1,17 +1,17 @@ -#define gs static // TODO: define as groupshared when available in the grammar -gs uint gs_ua; -gs uint gs_ub; -gs uint gs_uc; -gs uint2 gs_ua2; -gs uint2 gs_ub2; -gs uint2 gs_uc2; -gs uint3 gs_ua3; -gs uint3 gs_ub3; -gs uint3 gs_uc3; -gs uint4 gs_ua4; -gs uint4 gs_ub4; -gs uint4 gs_uc4; + +groupshared uint gs_ua; +groupshared uint gs_ub; +groupshared uint gs_uc; +groupshared uint2 gs_ua2; +groupshared uint2 gs_ub2; +groupshared uint2 gs_uc2; +groupshared uint3 gs_ua3; +groupshared uint3 gs_ub3; +groupshared uint3 gs_uc3; +groupshared uint4 gs_ua4; +groupshared uint4 gs_ub4; +groupshared uint4 gs_uc4; float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) { diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 882a2d0c..c8b1b10a 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1602" +#define GLSLANG_REVISION "Overload400-PrecQual.1603" #define GLSLANG_DATE "16-Oct-2016" From e5921f1309230cb7dea5d9d53bd3bc38c07da037 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Sat, 15 Oct 2016 10:29:58 -0600 Subject: [PATCH 071/130] HLSL: Fix unary and binary operator type conversion issues This fixes defects as follows: 1. handleLvalue could be called on a non-L-value, and it shouldn't be. 2. HLSL allows unary negation on non-bool values. TUnaryOperator::promote can now promote other types (e.g, int, float) to bool for this op. 3. HLSL allows binary logical operations (&&, ||) on arbitrary types, similar (2). 4. HLSL allows mod operation on arbitrary types, which will be promoted. E.g, int % float -> float % float. --- Test/baseResults/hlsl.logical.binary.frag.out | 220 +++++++++++++ Test/baseResults/hlsl.logical.unary.frag.out | 292 ++++++++++++++++++ Test/baseResults/hlsl.promote.binary.frag.out | 280 +++++++++++++++++ Test/hlsl.logical.binary.frag | 21 ++ Test/hlsl.logical.unary.frag | 29 ++ Test/hlsl.promote.binary.frag | 28 ++ glslang/Include/intermediate.h | 8 +- glslang/MachineIndependent/Intermediate.cpp | 66 +++- .../MachineIndependent/localintermediate.h | 5 +- gtests/Hlsl.FromFile.cpp | 5 +- hlsl/hlslGrammar.cpp | 5 +- hlsl/hlslParseables.cpp | 3 - 12 files changed, 946 insertions(+), 16 deletions(-) create mode 100644 Test/baseResults/hlsl.logical.binary.frag.out create mode 100644 Test/baseResults/hlsl.logical.unary.frag.out create mode 100644 Test/baseResults/hlsl.promote.binary.frag.out create mode 100644 Test/hlsl.logical.binary.frag create mode 100644 Test/hlsl.logical.unary.frag create mode 100644 Test/hlsl.promote.binary.frag diff --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out new file mode 100644 index 00000000..9e6593ee --- /dev/null +++ b/Test/baseResults/hlsl.logical.binary.frag.out @@ -0,0 +1,220 @@ +hlsl.logical.binary.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Test condition and select (temp void) +0:13 Condition +0:13 logical-and (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:13 Convert int to bool (temp bool) +0:13 Convert float to int (temp int) +0:13 fval: direct index for structure (layout(offset=32 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 2 (const uint) +0:13 true case is null +0:14 Test condition and select (temp void) +0:14 Condition +0:14 logical-or (temp bool) +0:14 Convert int to bool (temp bool) +0:14 ival: direct index for structure (layout(offset=0 ) uniform int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 0 (const uint) +0:14 Convert int to bool (temp bool) +0:14 Convert float to int (temp int) +0:14 fval: direct index for structure (layout(offset=32 ) uniform float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 2 (const uint) +0:14 true case is null +0:17 move second child to first child (temp 4-component vector of float) +0:17 Color: direct index for structure (temp 4-component vector of float) +0:17 'psout' (temp structure{temp 4-component vector of float Color}) +0:17 Constant: +0:17 0 (const int) +0:17 Constant: +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:18 Sequence +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:18 Color: direct index for structure (temp 4-component vector of float) +0:18 'psout' (temp structure{temp 4-component vector of float Color}) +0:18 Constant: +0:18 0 (const int) +0:18 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Test condition and select (temp void) +0:13 Condition +0:13 logical-and (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:13 Convert int to bool (temp bool) +0:13 Convert float to int (temp int) +0:13 fval: direct index for structure (layout(offset=32 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 2 (const uint) +0:13 true case is null +0:14 Test condition and select (temp void) +0:14 Condition +0:14 logical-or (temp bool) +0:14 Convert int to bool (temp bool) +0:14 ival: direct index for structure (layout(offset=0 ) uniform int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 0 (const uint) +0:14 Convert int to bool (temp bool) +0:14 Convert float to int (temp int) +0:14 fval: direct index for structure (layout(offset=32 ) uniform float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 2 (const uint) +0:14 true case is null +0:17 move second child to first child (temp 4-component vector of float) +0:17 Color: direct index for structure (temp 4-component vector of float) +0:17 'psout' (temp structure{temp 4-component vector of float Color}) +0:17 Constant: +0:17 0 (const int) +0:17 Constant: +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:18 Sequence +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:18 Color: direct index for structure (temp 4-component vector of float) +0:18 'psout' (temp structure{temp 4-component vector of float Color}) +0:18 Constant: +0:18 0 (const int) +0:18 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 57 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 53 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "$Global" + MemberName 11($Global) 0 "ival" + MemberName 11($Global) 1 "ival4" + MemberName 11($Global) 2 "fval" + MemberName 11($Global) 3 "fval4" + Name 13 "" + Name 45 "PS_OUTPUT" + MemberName 45(PS_OUTPUT) 0 "Color" + Name 47 "psout" + Name 53 "Color" + MemberDecorate 11($Global) 0 Offset 0 + MemberDecorate 11($Global) 1 Offset 16 + MemberDecorate 11($Global) 2 Offset 32 + MemberDecorate 11($Global) 3 Offset 48 + Decorate 11($Global) Block + Decorate 13 DescriptorSet 0 + Decorate 53(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeBool + 7: TypeInt 32 1 + 8: TypeVector 7(int) 4 + 9: TypeFloat 32 + 10: TypeVector 9(float) 4 + 11($Global): TypeStruct 7(int) 8(ivec4) 9(float) 10(fvec4) + 12: TypePointer Uniform 11($Global) + 13: 12(ptr) Variable Uniform + 14: 7(int) Constant 0 + 15: TypePointer Uniform 7(int) + 18: TypeInt 32 0 + 19: 18(int) Constant 0 + 23: 7(int) Constant 2 + 24: TypePointer Uniform 9(float) + 45(PS_OUTPUT): TypeStruct 10(fvec4) + 46: TypePointer Function 45(PS_OUTPUT) + 48: 9(float) Constant 1065353216 + 49: 10(fvec4) ConstantComposite 48 48 48 48 + 50: TypePointer Function 10(fvec4) + 52: TypePointer Output 10(fvec4) + 53(Color): 52(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 47(psout): 46(ptr) Variable Function + 16: 15(ptr) AccessChain 13 14 + 17: 7(int) Load 16 + 20: 6(bool) INotEqual 17 19 + SelectionMerge 22 None + BranchConditional 20 21 22 + 21: Label + 25: 24(ptr) AccessChain 13 23 + 26: 9(float) Load 25 + 27: 7(int) ConvertFToS 26 + 28: 6(bool) INotEqual 27 19 + Branch 22 + 22: Label + 29: 6(bool) Phi 20 5 28 21 + SelectionMerge 31 None + BranchConditional 29 30 31 + 30: Label + Branch 31 + 31: Label + 32: 15(ptr) AccessChain 13 14 + 33: 7(int) Load 32 + 34: 6(bool) INotEqual 33 19 + 35: 6(bool) LogicalNot 34 + SelectionMerge 37 None + BranchConditional 35 36 37 + 36: Label + 38: 24(ptr) AccessChain 13 23 + 39: 9(float) Load 38 + 40: 7(int) ConvertFToS 39 + 41: 6(bool) INotEqual 40 19 + Branch 37 + 37: Label + 42: 6(bool) Phi 34 31 41 36 + SelectionMerge 44 None + BranchConditional 42 43 44 + 43: Label + Branch 44 + 44: Label + 51: 50(ptr) AccessChain 47(psout) 14 + Store 51 49 + 54: 50(ptr) AccessChain 47(psout) 14 + 55: 10(fvec4) Load 54 + Store 53(Color) 55 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out new file mode 100644 index 00000000..e3def3c0 --- /dev/null +++ b/Test/baseResults/hlsl.logical.unary.frag.out @@ -0,0 +1,292 @@ +hlsl.logical.unary.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Negate conditional (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:14 Negate conditional (temp 4-component vector of bool) +0:14 Convert int to bool (temp 4-component vector of bool) +0:14 ival4: direct index for structure (layout(offset=16 ) uniform 4-component vector of int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 1 (const uint) +0:16 Negate conditional (temp bool) +0:16 Convert float to bool (temp bool) +0:16 fval: direct index for structure (layout(offset=32 ) uniform float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 2 (const uint) +0:17 Negate conditional (temp 4-component vector of bool) +0:17 Convert float to bool (temp 4-component vector of bool) +0:17 fval4: direct index for structure (layout(offset=48 ) uniform 4-component vector of float) +0:17 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:17 Constant: +0:17 3 (const uint) +0:19 Test condition and select (temp void) +0:19 Condition +0:19 ival: direct index for structure (layout(offset=0 ) uniform int) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 0 (const uint) +0:19 true case is null +0:20 Test condition and select (temp void) +0:20 Condition +0:20 fval: direct index for structure (layout(offset=32 ) uniform float) +0:20 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:20 Constant: +0:20 2 (const uint) +0:20 true case is null +0:21 Test condition and select (temp void) +0:21 Condition +0:21 Negate conditional (temp bool) +0:21 Convert int to bool (temp bool) +0:21 ival: direct index for structure (layout(offset=0 ) uniform int) +0:21 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:21 Constant: +0:21 0 (const uint) +0:21 true case is null +0:22 Test condition and select (temp void) +0:22 Condition +0:22 Negate conditional (temp bool) +0:22 Convert float to bool (temp bool) +0:22 fval: direct index for structure (layout(offset=32 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 2 (const uint) +0:22 true case is null +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Negate conditional (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:14 Negate conditional (temp 4-component vector of bool) +0:14 Convert int to bool (temp 4-component vector of bool) +0:14 ival4: direct index for structure (layout(offset=16 ) uniform 4-component vector of int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 1 (const uint) +0:16 Negate conditional (temp bool) +0:16 Convert float to bool (temp bool) +0:16 fval: direct index for structure (layout(offset=32 ) uniform float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 2 (const uint) +0:17 Negate conditional (temp 4-component vector of bool) +0:17 Convert float to bool (temp 4-component vector of bool) +0:17 fval4: direct index for structure (layout(offset=48 ) uniform 4-component vector of float) +0:17 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:17 Constant: +0:17 3 (const uint) +0:19 Test condition and select (temp void) +0:19 Condition +0:19 ival: direct index for structure (layout(offset=0 ) uniform int) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 0 (const uint) +0:19 true case is null +0:20 Test condition and select (temp void) +0:20 Condition +0:20 fval: direct index for structure (layout(offset=32 ) uniform float) +0:20 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:20 Constant: +0:20 2 (const uint) +0:20 true case is null +0:21 Test condition and select (temp void) +0:21 Condition +0:21 Negate conditional (temp bool) +0:21 Convert int to bool (temp bool) +0:21 ival: direct index for structure (layout(offset=0 ) uniform int) +0:21 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:21 Constant: +0:21 0 (const uint) +0:21 true case is null +0:22 Test condition and select (temp void) +0:22 Condition +0:22 Negate conditional (temp bool) +0:22 Convert float to bool (temp bool) +0:22 fval: direct index for structure (layout(offset=32 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 2 (const uint) +0:22 true case is null +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 77 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 73 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 10 "$Global" + MemberName 10($Global) 0 "ival" + MemberName 10($Global) 1 "ival4" + MemberName 10($Global) 2 "fval" + MemberName 10($Global) 3 "fval4" + Name 12 "" + Name 65 "PS_OUTPUT" + MemberName 65(PS_OUTPUT) 0 "Color" + Name 67 "psout" + Name 73 "Color" + MemberDecorate 10($Global) 0 Offset 0 + MemberDecorate 10($Global) 1 Offset 16 + MemberDecorate 10($Global) 2 Offset 32 + MemberDecorate 10($Global) 3 Offset 48 + Decorate 10($Global) Block + Decorate 12 DescriptorSet 0 + Decorate 73(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 4 + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10($Global): TypeStruct 6(int) 7(ivec4) 8(float) 9(fvec4) + 11: TypePointer Uniform 10($Global) + 12: 11(ptr) Variable Uniform + 13: 6(int) Constant 0 + 14: TypePointer Uniform 6(int) + 17: TypeBool + 18: TypeInt 32 0 + 19: 18(int) Constant 0 + 22: 6(int) Constant 1 + 23: TypePointer Uniform 7(ivec4) + 26: TypeVector 17(bool) 4 + 27: TypeVector 18(int) 4 + 28: 27(ivec4) ConstantComposite 19 19 19 19 + 31: 6(int) Constant 2 + 32: TypePointer Uniform 8(float) + 35: 8(float) Constant 0 + 38: 6(int) Constant 3 + 39: TypePointer Uniform 9(fvec4) + 42: 9(fvec4) ConstantComposite 35 35 35 35 + 65(PS_OUTPUT): TypeStruct 9(fvec4) + 66: TypePointer Function 65(PS_OUTPUT) + 68: 8(float) Constant 1065353216 + 69: 9(fvec4) ConstantComposite 68 68 68 68 + 70: TypePointer Function 9(fvec4) + 72: TypePointer Output 9(fvec4) + 73(Color): 72(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 67(psout): 66(ptr) Variable Function + 15: 14(ptr) AccessChain 12 13 + 16: 6(int) Load 15 + 20: 17(bool) INotEqual 16 19 + 21: 17(bool) LogicalNot 20 + 24: 23(ptr) AccessChain 12 22 + 25: 7(ivec4) Load 24 + 29: 26(bvec4) INotEqual 25 28 + 30: 26(bvec4) LogicalNot 29 + 33: 32(ptr) AccessChain 12 31 + 34: 8(float) Load 33 + 36: 17(bool) FOrdNotEqual 34 35 + 37: 17(bool) LogicalNot 36 + 40: 39(ptr) AccessChain 12 38 + 41: 9(fvec4) Load 40 + 43: 26(bvec4) FOrdNotEqual 41 42 + 44: 26(bvec4) LogicalNot 43 + 45: 14(ptr) AccessChain 12 13 + 46: 6(int) Load 45 + SelectionMerge 48 None + BranchConditional 46 47 48 + 47: Label + Branch 48 + 48: Label + 49: 32(ptr) AccessChain 12 31 + 50: 8(float) Load 49 + SelectionMerge 52 None + BranchConditional 50 51 52 + 51: Label + Branch 52 + 52: Label + 53: 14(ptr) AccessChain 12 13 + 54: 6(int) Load 53 + 55: 17(bool) INotEqual 54 19 + 56: 17(bool) LogicalNot 55 + SelectionMerge 58 None + BranchConditional 56 57 58 + 57: Label + Branch 58 + 58: Label + 59: 32(ptr) AccessChain 12 31 + 60: 8(float) Load 59 + 61: 17(bool) FOrdNotEqual 60 35 + 62: 17(bool) LogicalNot 61 + SelectionMerge 64 None + BranchConditional 62 63 64 + 63: Label + Branch 64 + 64: Label + 71: 70(ptr) AccessChain 67(psout) 13 + Store 71 69 + 74: 70(ptr) AccessChain 67(psout) 13 + 75: 9(fvec4) Load 74 + Store 73(Color) 75 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out new file mode 100644 index 00000000..a2e7176c --- /dev/null +++ b/Test/baseResults/hlsl.promote.binary.frag.out @@ -0,0 +1,280 @@ +hlsl.promote.binary.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:15 mod (temp float) +0:15 Convert int to float (temp float) +0:15 ival: direct index for structure (layout(offset=32 ) uniform int) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 2 (const uint) +0:15 fval: direct index for structure (layout(offset=64 ) uniform float) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 4 (const uint) +0:16 mod (temp 4-component vector of float) +0:16 Convert int to float (temp 4-component vector of float) +0:16 ival4: direct index for structure (layout(offset=48 ) uniform 4-component vector of int) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 3 (const uint) +0:16 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 5 (const uint) +0:18 mod (temp float) +0:18 Convert bool to float (temp float) +0:18 bval: direct index for structure (layout(offset=0 ) uniform bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 0 (const uint) +0:18 fval: direct index for structure (layout(offset=64 ) uniform float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 4 (const uint) +0:19 mod (temp 4-component vector of float) +0:19 Convert bool to float (temp 4-component vector of float) +0:19 bval4: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 1 (const uint) +0:19 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 5 (const uint) +0:21 Sequence +0:21 move second child to first child (temp int) +0:21 'l_int' (temp int) +0:21 Constant: +0:21 1 (const int) +0:22 mod second child into first child (temp int) +0:22 'l_int' (temp int) +0:22 Convert float to int (temp int) +0:22 fval: direct index for structure (layout(offset=64 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 4 (const uint) +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:15 mod (temp float) +0:15 Convert int to float (temp float) +0:15 ival: direct index for structure (layout(offset=32 ) uniform int) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 2 (const uint) +0:15 fval: direct index for structure (layout(offset=64 ) uniform float) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 4 (const uint) +0:16 mod (temp 4-component vector of float) +0:16 Convert int to float (temp 4-component vector of float) +0:16 ival4: direct index for structure (layout(offset=48 ) uniform 4-component vector of int) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 3 (const uint) +0:16 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 5 (const uint) +0:18 mod (temp float) +0:18 Convert bool to float (temp float) +0:18 bval: direct index for structure (layout(offset=0 ) uniform bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 0 (const uint) +0:18 fval: direct index for structure (layout(offset=64 ) uniform float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 4 (const uint) +0:19 mod (temp 4-component vector of float) +0:19 Convert bool to float (temp 4-component vector of float) +0:19 bval4: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 1 (const uint) +0:19 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 5 (const uint) +0:21 Sequence +0:21 move second child to first child (temp int) +0:21 'l_int' (temp int) +0:21 Constant: +0:21 1 (const int) +0:22 mod second child into first child (temp int) +0:22 'l_int' (temp int) +0:22 Convert float to int (temp int) +0:22 fval: direct index for structure (layout(offset=64 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 4 (const uint) +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 78 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 74 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 12 "$Global" + MemberName 12($Global) 0 "bval" + MemberName 12($Global) 1 "bval4" + MemberName 12($Global) 2 "ival" + MemberName 12($Global) 3 "ival4" + MemberName 12($Global) 4 "fval" + MemberName 12($Global) 5 "fval4" + Name 14 "" + Name 62 "l_int" + Name 68 "PS_OUTPUT" + MemberName 68(PS_OUTPUT) 0 "Color" + Name 70 "psout" + Name 74 "Color" + MemberDecorate 12($Global) 0 Offset 0 + MemberDecorate 12($Global) 1 Offset 16 + MemberDecorate 12($Global) 2 Offset 32 + MemberDecorate 12($Global) 3 Offset 48 + MemberDecorate 12($Global) 4 Offset 64 + MemberDecorate 12($Global) 5 Offset 80 + Decorate 12($Global) Block + Decorate 14 DescriptorSet 0 + Decorate 74(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 4 + 8: TypeInt 32 1 + 9: TypeVector 8(int) 4 + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12($Global): TypeStruct 6(int) 7(ivec4) 8(int) 9(ivec4) 10(float) 11(fvec4) + 13: TypePointer Uniform 12($Global) + 14: 13(ptr) Variable Uniform + 15: 8(int) Constant 2 + 16: TypePointer Uniform 8(int) + 20: 8(int) Constant 4 + 21: TypePointer Uniform 10(float) + 25: 8(int) Constant 3 + 26: TypePointer Uniform 9(ivec4) + 30: 8(int) Constant 5 + 31: TypePointer Uniform 11(fvec4) + 35: 8(int) Constant 0 + 36: TypePointer Uniform 6(int) + 39: TypeBool + 40: 6(int) Constant 0 + 42: 10(float) Constant 0 + 43: 10(float) Constant 1065353216 + 48: 8(int) Constant 1 + 49: TypePointer Uniform 7(ivec4) + 52: TypeVector 39(bool) 4 + 53: 7(ivec4) ConstantComposite 40 40 40 40 + 55: 11(fvec4) ConstantComposite 42 42 42 42 + 56: 11(fvec4) ConstantComposite 43 43 43 43 + 61: TypePointer Function 8(int) + 68(PS_OUTPUT): TypeStruct 11(fvec4) + 69: TypePointer Function 68(PS_OUTPUT) + 71: TypePointer Function 11(fvec4) + 73: TypePointer Output 11(fvec4) + 74(Color): 73(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 62(l_int): 61(ptr) Variable Function + 70(psout): 69(ptr) Variable Function + 17: 16(ptr) AccessChain 14 15 + 18: 8(int) Load 17 + 19: 10(float) ConvertSToF 18 + 22: 21(ptr) AccessChain 14 20 + 23: 10(float) Load 22 + 24: 10(float) FMod 19 23 + 27: 26(ptr) AccessChain 14 25 + 28: 9(ivec4) Load 27 + 29: 11(fvec4) ConvertSToF 28 + 32: 31(ptr) AccessChain 14 30 + 33: 11(fvec4) Load 32 + 34: 11(fvec4) FMod 29 33 + 37: 36(ptr) AccessChain 14 35 + 38: 6(int) Load 37 + 41: 39(bool) INotEqual 38 40 + 44: 10(float) Select 41 43 42 + 45: 21(ptr) AccessChain 14 20 + 46: 10(float) Load 45 + 47: 10(float) FMod 44 46 + 50: 49(ptr) AccessChain 14 48 + 51: 7(ivec4) Load 50 + 54: 52(bvec4) INotEqual 51 53 + 57: 11(fvec4) Select 54 56 55 + 58: 31(ptr) AccessChain 14 30 + 59: 11(fvec4) Load 58 + 60: 11(fvec4) FMod 57 59 + Store 62(l_int) 48 + 63: 21(ptr) AccessChain 14 20 + 64: 10(float) Load 63 + 65: 8(int) ConvertFToS 64 + 66: 8(int) Load 62(l_int) + 67: 8(int) SMod 66 65 + Store 62(l_int) 67 + 72: 71(ptr) AccessChain 70(psout) 35 + Store 72 55 + 75: 71(ptr) AccessChain 70(psout) 35 + 76: 11(fvec4) Load 75 + Store 74(Color) 76 + Return + FunctionEnd diff --git a/Test/hlsl.logical.binary.frag b/Test/hlsl.logical.binary.frag new file mode 100644 index 00000000..06bc9f2f --- /dev/null +++ b/Test/hlsl.logical.binary.frag @@ -0,0 +1,21 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int ival; +uniform int4 ival4; +uniform float fval; +uniform float4 fval4; + +PS_OUTPUT main() +{ + if (ival && fval); + if (ival || fval); + + PS_OUTPUT psout; + psout.Color = 1.0; + return psout; +} + + diff --git a/Test/hlsl.logical.unary.frag b/Test/hlsl.logical.unary.frag new file mode 100644 index 00000000..cbcb3bfc --- /dev/null +++ b/Test/hlsl.logical.unary.frag @@ -0,0 +1,29 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int ival; +uniform int4 ival4; +uniform float fval; +uniform float4 fval4; + +PS_OUTPUT main() +{ + !ival; // scalar int + !ival4; // vector int + + !fval; // scalar float + !fval4; // vector float + + if (ival); + if (fval); + if (!ival); + if (!fval); + + PS_OUTPUT psout; + psout.Color = 1.0; + return psout; +} + + diff --git a/Test/hlsl.promote.binary.frag b/Test/hlsl.promote.binary.frag new file mode 100644 index 00000000..0203bed9 --- /dev/null +++ b/Test/hlsl.promote.binary.frag @@ -0,0 +1,28 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform bool bval; +uniform bool4 bval4; +uniform int ival; +uniform int4 ival4; +uniform float fval; +uniform float4 fval4; + +PS_OUTPUT main() +{ + ival % fval; + ival4 % fval4; + + bval % fval; + bval4 % fval4; + + int l_int = 1; + l_int %= fval; + + PS_OUTPUT psout; + psout.Color = 0; + return psout; +} + diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 27c798d1..fc267543 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -52,6 +52,8 @@ namespace glslang { +class TIntermediate; + // // Operators used by the high-level (parse tree) representation. // @@ -845,7 +847,7 @@ public: virtual TIntermOperator* getAsOperator() { return this; } virtual const TIntermOperator* getAsOperator() const { return this; } TOperator getOp() const { return op; } - virtual bool promote() { return true; } + virtual bool promote(TIntermediate&) { return true; } bool modifiesState() const; bool isConstructor() const; bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; } @@ -1024,7 +1026,7 @@ public: virtual TIntermTyped* getRight() const { return right; } virtual TIntermBinary* getAsBinaryNode() { return this; } virtual const TIntermBinary* getAsBinaryNode() const { return this; } - virtual bool promote(); + virtual bool promote(TIntermediate&); virtual void updatePrecision(); protected: TIntermTyped* left; @@ -1044,7 +1046,7 @@ public: virtual const TIntermTyped* getOperand() const { return operand; } virtual TIntermUnary* getAsUnaryNode() { return this; } virtual const TIntermUnary* getAsUnaryNode() const { return this; } - virtual bool promote(); + virtual bool promote(TIntermediate&); virtual void updatePrecision(); protected: TIntermTyped* operand; diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 8e80bbd2..1441c55b 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -137,7 +137,7 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn // one and promote it to the right type. // TIntermBinary* node = addBinaryNode(op, left, right, loc); - if (! node->promote()) + if (! node->promote(*this)) return 0; node->updatePrecision(); @@ -246,7 +246,7 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm // build the node TIntermBinary* node = addBinaryNode(op, left, right, loc); - if (! node->promote()) + if (! node->promote(*this)) return nullptr; node->updatePrecision(); @@ -282,6 +282,10 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo switch (op) { case EOpLogicalNot: + if (source == EShSourceHlsl) { + break; // HLSL can promote logical not + } + if (child->getType().getBasicType() != EbtBool || child->getType().isMatrix() || child->getType().isArray() || child->getType().isVector()) { return 0; } @@ -349,7 +353,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo // TIntermUnary* node = addUnaryNode(op, child, loc); - if (! node->promote()) + if (! node->promote(*this)) return 0; node->updatePrecision(); @@ -555,6 +559,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: + case EOpLogicalNot: + case EOpLogicalAnd: + case EOpLogicalOr: + case EOpLogicalXor: case EOpFunctionCall: case EOpReturn: @@ -841,6 +849,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EOpModAssign: // ... case EOpReturn: // function returns can also perform arbitrary conversions case EOpFunctionCall: // conversion of a calling parameter + case EOpLogicalNot: + case EOpLogicalAnd: + case EOpLogicalOr: + case EOpLogicalXor: return true; default: break; @@ -873,6 +885,8 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtFloat16: #endif return true; + case EbtBool: + return (source == EShSourceHlsl); default: return false; } @@ -1716,13 +1730,20 @@ bool TIntermOperator::isConstructor() const // // Returns false in nothing makes sense. // -bool TIntermUnary::promote() +bool TIntermUnary::promote(TIntermediate& intermediate) { switch (op) { case EOpLogicalNot: - if (operand->getBasicType() != EbtBool) + // Convert operand to a boolean type + if (operand->getBasicType() != EbtBool) { + // Add constructor to boolean type. If that fails, we can't do it, so return false. + TIntermTyped* converted = intermediate.convertToBasicType(op, EbtBool, operand); + if (converted == nullptr) + return false; - return false; + // Use the result of converting the node to a bool. + operand = converted; + } break; case EOpBitwiseNot: if (operand->getBasicType() != EbtInt && @@ -1774,13 +1795,31 @@ void TIntermUnary::updatePrecision() } } +// If it is not already, convert this node to the given basic type. +TIntermTyped* TIntermediate::convertToBasicType(TOperator op, TBasicType basicType, TIntermTyped* node) const +{ + if (node == nullptr) + return nullptr; + + // It's already this basic type: nothing needs to be done, so use the node directly. + if (node->getBasicType() == basicType) + return node; + + const TType& type = node->getType(); + const TType newType(basicType, type.getQualifier().storage, + type.getVectorSize(), type.getMatrixCols(), type.getMatrixRows(), type.isVector()); + + // Add constructor to the right vectorness of the right type. If that fails, we can't do it, so return nullptr. + return addConversion(op, newType, node); +} + // // Establishes the type of the resultant operation, as well as // makes the operator the correct one for the operands. // // Returns false if operator can't work on operands. // -bool TIntermBinary::promote() +bool TIntermBinary::promote(TIntermediate& intermediate) { // Arrays and structures have to be exact matches. if ((left->isArray() || right->isArray() || left->getBasicType() == EbtStruct || right->getBasicType() == EbtStruct) @@ -1843,6 +1882,15 @@ bool TIntermBinary::promote() case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: + if (intermediate.getSource() == EShSourceHlsl) { + TIntermTyped* convertedL = intermediate.convertToBasicType(op, EbtBool, left); + TIntermTyped* convertedR = intermediate.convertToBasicType(op, EbtBool, right); + if (convertedL == nullptr || convertedR == nullptr) + return false; + left = convertedL; + right = convertedR; + } + // logical ops operate only on scalar Booleans and will promote to scalar Boolean. if (left->getBasicType() != EbtBool || left->isVector() || left->isMatrix()) return false; @@ -1864,6 +1912,9 @@ bool TIntermBinary::promote() case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: + if (intermediate.getSource() == EShSourceHlsl) + break; + // Check for integer-only operands. if ((left->getBasicType() != EbtInt && left->getBasicType() != EbtUint && left->getBasicType() != EbtInt64 && left->getBasicType() != EbtUint64) || @@ -2051,6 +2102,7 @@ bool TIntermBinary::promote() case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: + if ((left->isMatrix() && right->isVector()) || (left->isVector() && right->isMatrix()) || left->getBasicType() != right->getBasicType()) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index aae22ecc..c8742cb4 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -246,6 +246,9 @@ public: TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc) const; TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc, const TType&) const; + // Add conversion from node's type to given basic type. + TIntermTyped* convertToBasicType(TOperator op, TBasicType basicType, TIntermTyped* node) const; + // Constant folding (in Constant.cpp) TIntermTyped* fold(TIntermAggregate* aggrNode); TIntermTyped* foldConstructor(TIntermAggregate* aggrNode); @@ -390,7 +393,7 @@ protected: bool userOutputUsed() const; static int getBaseAlignmentScalar(const TType&, int& size); bool isSpecializationOperation(const TIntermOperator&) const; - + const EShLanguage language; // stage, known at construction time EShSource source; // source language, known a bit later std::string entryPointName; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index b50816a1..9c1a3eed 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -142,6 +142,8 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.load.rwtexture.array.dx10.frag", "main"}, {"hlsl.load.offset.dx10.frag", "main"}, {"hlsl.load.offsetarray.dx10.frag", "main"}, + {"hlsl.logical.unary.frag", "main"}, + {"hlsl.logical.binary.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, {"hlsl.multiReturn.frag", "main"}, {"hlsl.matrixindex.frag", "main"}, @@ -149,6 +151,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.overload.frag", "PixelShaderFunction"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, + {"hlsl.promote.binary.frag", "main"}, {"hlsl.promotions.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, {"hlsl.rw.scalar.bracket.frag", "main"}, @@ -179,7 +182,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.samplelevel.basic.dx10.vert", "main"}, {"hlsl.samplelevel.offset.dx10.frag", "main"}, {"hlsl.samplelevel.offsetarray.dx10.frag", "main"}, - { "hlsl.sample.sub-vec4.dx10.frag", "main"}, + {"hlsl.sample.sub-vec4.dx10.frag", "main"}, {"hlsl.semicolons.frag", "main"}, {"hlsl.shapeConv.frag", "main"}, {"hlsl.shapeConvRet.frag", "main"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 7766f857..89465bff 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -1935,7 +1935,10 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node) return true; node = intermediate.addUnaryMath(unaryOp, node, loc); - node = parseContext.handleLvalue(loc, "unary operator", node); + + // These unary ops require lvalues + if (unaryOp == EOpPreIncrement || unaryOp == EOpPreDecrement) + node = parseContext.handleLvalue(loc, "unary operator", node); return node != nullptr; } diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index d33cfb89..7ab159dc 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -245,7 +245,6 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons char order = *argOrder; if (UseHlslTypes) { - // TODO: handle sub-vec4 returns switch (type) { case '-': s += "void"; break; case 'F': s += "float"; break; @@ -832,8 +831,6 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "GatherCmpAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll }, { "GatherCmpAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll }, - // TODO: Cmp forms - // Mark end of list, since we want to avoid a range-based for, as some compilers don't handle it yet. { nullptr, nullptr, nullptr, nullptr, nullptr, 0 }, }; From bb5c02fd23768adc51fe0ae72035e43120bc8200 Mon Sep 17 00:00:00 2001 From: David Neto Date: Wed, 19 Oct 2016 10:16:29 -0400 Subject: [PATCH 072/130] Add missing guard to code that uses AMD extensions Otherwise compilation fails when ENABLED_AMD_EXTENSIONS is off. --- SPIRV/GlslangToSpv.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 49bb0a17..3e0ad4f1 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4133,10 +4133,12 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op builder.addCapability(spv::CapabilitySubgroupBallotKHR); } else { builder.addCapability(spv::CapabilityGroups); +#ifdef AMD_EXTENSIONS if (op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform) builder.addExtension(spv::E_SPV_AMD_shader_ballot); +#endif spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); #ifdef AMD_EXTENSIONS From 22322361d69d08034eea769a2761038670918124 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 19 Oct 2016 10:15:25 -0600 Subject: [PATCH 073/130] HLSL: phase 4 of rwtexture support: add image atomics This PR will turn Interlocked* intrinsics using rwtexture or rwbuffer object as the first parameter into the proper OpImageAtomic* operations. --- Test/baseResults/hlsl.rw.atomics.frag.out | 5261 +++++++++++++++++++++ Test/hlsl.rw.atomics.frag | 244 + gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 94 +- 4 files changed, 5574 insertions(+), 26 deletions(-) create mode 100644 Test/baseResults/hlsl.rw.atomics.frag.out create mode 100644 Test/hlsl.rw.atomics.frag diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out new file mode 100644 index 00000000..22716ef1 --- /dev/null +++ b/Test/baseResults/hlsl.rw.atomics.frag.out @@ -0,0 +1,5261 @@ +hlsl.rw.atomics.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:50 imageAtomicAdd (temp int) +0:50 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:50 i1: direct index for structure (layout(offset=36 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 5 (const uint) +0:50 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 8 (const uint) +0:51 move second child to first child (temp int) +0:51 'out_i1' (temp int) +0:51 imageAtomicAdd (temp int) +0:51 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:52 imageAtomicAnd (temp int) +0:52 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:52 i1: direct index for structure (layout(offset=36 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 5 (const uint) +0:52 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 8 (const uint) +0:53 move second child to first child (temp int) +0:53 'out_i1' (temp int) +0:53 imageAtomicAnd (temp int) +0:53 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:54 move second child to first child (temp int) +0:54 'out_i1' (temp int) +0:54 imageAtomicCompSwap (temp int) +0:54 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:54 i1: direct index for structure (layout(offset=36 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 5 (const uint) +0:54 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 8 (const uint) +0:54 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 9 (const uint) +0:55 move second child to first child (temp int) +0:55 'out_i1' (temp int) +0:55 imageAtomicExchange (temp int) +0:55 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:56 imageAtomicMax (temp int) +0:56 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:56 i1: direct index for structure (layout(offset=36 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 5 (const uint) +0:56 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 8 (const uint) +0:57 move second child to first child (temp int) +0:57 'out_i1' (temp int) +0:57 imageAtomicMax (temp int) +0:57 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:58 imageAtomicMin (temp int) +0:58 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:58 i1: direct index for structure (layout(offset=36 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 5 (const uint) +0:58 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 8 (const uint) +0:59 move second child to first child (temp int) +0:59 'out_i1' (temp int) +0:59 imageAtomicMin (temp int) +0:59 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:60 imageAtomicOr (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 i1: direct index for structure (layout(offset=36 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 5 (const uint) +0:60 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 8 (const uint) +0:61 move second child to first child (temp int) +0:61 'out_i1' (temp int) +0:61 imageAtomicOr (temp int) +0:61 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:62 imageAtomicXor (temp int) +0:62 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:62 i1: direct index for structure (layout(offset=36 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 5 (const uint) +0:62 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 8 (const uint) +0:63 move second child to first child (temp int) +0:63 'out_i1' (temp int) +0:63 imageAtomicXor (temp int) +0:63 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:66 imageAtomicAdd (temp uint) +0:66 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:67 move second child to first child (temp uint) +0:67 'out_u1' (temp uint) +0:67 imageAtomicAdd (temp uint) +0:67 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:68 imageAtomicAnd (temp uint) +0:68 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:69 move second child to first child (temp uint) +0:69 'out_u1' (temp uint) +0:69 imageAtomicAnd (temp uint) +0:69 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:70 move second child to first child (temp uint) +0:70 'out_u1' (temp uint) +0:70 imageAtomicCompSwap (temp uint) +0:70 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:70 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 0 (const uint) +0:70 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 3 (const uint) +0:70 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 4 (const uint) +0:71 move second child to first child (temp uint) +0:71 'out_u1' (temp uint) +0:71 imageAtomicExchange (temp uint) +0:71 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:72 imageAtomicMax (temp uint) +0:72 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:73 move second child to first child (temp uint) +0:73 'out_u1' (temp uint) +0:73 imageAtomicMax (temp uint) +0:73 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:74 imageAtomicMin (temp uint) +0:74 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:75 move second child to first child (temp uint) +0:75 'out_u1' (temp uint) +0:75 imageAtomicMin (temp uint) +0:75 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:76 imageAtomicOr (temp uint) +0:76 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:77 move second child to first child (temp uint) +0:77 'out_u1' (temp uint) +0:77 imageAtomicOr (temp uint) +0:77 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:78 imageAtomicXor (temp uint) +0:78 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:79 move second child to first child (temp uint) +0:79 'out_u1' (temp uint) +0:79 imageAtomicXor (temp uint) +0:79 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:82 imageAtomicAdd (temp int) +0:82 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:82 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 6 (const uint) +0:82 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 8 (const uint) +0:83 move second child to first child (temp int) +0:83 'out_i1' (temp int) +0:83 imageAtomicAdd (temp int) +0:83 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:83 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 6 (const uint) +0:83 i1: direct index for structure (layout(offset=36 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 5 (const uint) +0:84 imageAtomicAnd (temp int) +0:84 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:84 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 6 (const uint) +0:84 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 8 (const uint) +0:85 move second child to first child (temp int) +0:85 'out_i1' (temp int) +0:85 imageAtomicAnd (temp int) +0:85 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:85 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 6 (const uint) +0:85 i1: direct index for structure (layout(offset=36 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 5 (const uint) +0:86 move second child to first child (temp int) +0:86 'out_i1' (temp int) +0:86 imageAtomicCompSwap (temp int) +0:86 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:86 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 6 (const uint) +0:86 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 8 (const uint) +0:86 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 9 (const uint) +0:87 move second child to first child (temp int) +0:87 'out_i1' (temp int) +0:87 imageAtomicExchange (temp int) +0:87 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:87 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 6 (const uint) +0:87 i1: direct index for structure (layout(offset=36 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 5 (const uint) +0:88 imageAtomicMax (temp int) +0:88 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:88 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 6 (const uint) +0:88 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 8 (const uint) +0:89 move second child to first child (temp int) +0:89 'out_i1' (temp int) +0:89 imageAtomicMax (temp int) +0:89 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:89 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 6 (const uint) +0:89 i1: direct index for structure (layout(offset=36 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 5 (const uint) +0:90 imageAtomicMin (temp int) +0:90 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:90 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 6 (const uint) +0:90 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 8 (const uint) +0:91 move second child to first child (temp int) +0:91 'out_i1' (temp int) +0:91 imageAtomicMin (temp int) +0:91 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:91 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 6 (const uint) +0:91 i1: direct index for structure (layout(offset=36 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 5 (const uint) +0:92 imageAtomicOr (temp int) +0:92 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:92 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 6 (const uint) +0:92 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 8 (const uint) +0:93 move second child to first child (temp int) +0:93 'out_i1' (temp int) +0:93 imageAtomicOr (temp int) +0:93 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:93 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 6 (const uint) +0:93 i1: direct index for structure (layout(offset=36 ) uniform int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 5 (const uint) +0:94 imageAtomicXor (temp int) +0:94 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:94 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 6 (const uint) +0:94 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 8 (const uint) +0:95 move second child to first child (temp int) +0:95 'out_i1' (temp int) +0:95 imageAtomicXor (temp int) +0:95 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:95 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 6 (const uint) +0:95 i1: direct index for structure (layout(offset=36 ) uniform int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 5 (const uint) +0:98 imageAtomicAdd (temp uint) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 1 (const uint) +0:98 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 0 (const uint) +0:99 move second child to first child (temp uint) +0:99 'out_u1' (temp uint) +0:99 imageAtomicAdd (temp uint) +0:99 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:99 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 1 (const uint) +0:99 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 0 (const uint) +0:100 imageAtomicAnd (temp uint) +0:100 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:100 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 1 (const uint) +0:100 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 0 (const uint) +0:101 move second child to first child (temp uint) +0:101 'out_u1' (temp uint) +0:101 imageAtomicAnd (temp uint) +0:101 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:101 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 1 (const uint) +0:101 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 0 (const uint) +0:102 move second child to first child (temp uint) +0:102 'out_u1' (temp uint) +0:102 imageAtomicCompSwap (temp uint) +0:102 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:102 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 1 (const uint) +0:102 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 3 (const uint) +0:102 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 4 (const uint) +0:103 move second child to first child (temp uint) +0:103 'out_u1' (temp uint) +0:103 imageAtomicExchange (temp uint) +0:103 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:103 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 1 (const uint) +0:103 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 0 (const uint) +0:104 imageAtomicMax (temp uint) +0:104 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:104 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 1 (const uint) +0:104 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 0 (const uint) +0:105 move second child to first child (temp uint) +0:105 'out_u1' (temp uint) +0:105 imageAtomicMax (temp uint) +0:105 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:105 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 1 (const uint) +0:105 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 0 (const uint) +0:106 imageAtomicMin (temp uint) +0:106 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:106 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 1 (const uint) +0:106 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 0 (const uint) +0:107 move second child to first child (temp uint) +0:107 'out_u1' (temp uint) +0:107 imageAtomicMin (temp uint) +0:107 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:107 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 1 (const uint) +0:107 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 0 (const uint) +0:108 imageAtomicOr (temp uint) +0:108 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:108 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 1 (const uint) +0:108 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 0 (const uint) +0:109 move second child to first child (temp uint) +0:109 'out_u1' (temp uint) +0:109 imageAtomicOr (temp uint) +0:109 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:109 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 1 (const uint) +0:109 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 0 (const uint) +0:110 imageAtomicXor (temp uint) +0:110 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:110 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 1 (const uint) +0:110 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 0 (const uint) +0:111 move second child to first child (temp uint) +0:111 'out_u1' (temp uint) +0:111 imageAtomicXor (temp uint) +0:111 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:111 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 1 (const uint) +0:111 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 0 (const uint) +0:114 imageAtomicAdd (temp int) +0:114 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:114 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 7 (const uint) +0:114 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 8 (const uint) +0:115 move second child to first child (temp int) +0:115 'out_i1' (temp int) +0:115 imageAtomicAdd (temp int) +0:115 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:115 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 7 (const uint) +0:115 i1: direct index for structure (layout(offset=36 ) uniform int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 5 (const uint) +0:116 imageAtomicAnd (temp int) +0:116 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:116 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 7 (const uint) +0:116 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 8 (const uint) +0:117 move second child to first child (temp int) +0:117 'out_i1' (temp int) +0:117 imageAtomicAnd (temp int) +0:117 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:117 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 7 (const uint) +0:117 i1: direct index for structure (layout(offset=36 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 5 (const uint) +0:118 move second child to first child (temp int) +0:118 'out_i1' (temp int) +0:118 imageAtomicCompSwap (temp int) +0:118 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:118 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 7 (const uint) +0:118 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 8 (const uint) +0:118 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 9 (const uint) +0:119 move second child to first child (temp int) +0:119 'out_i1' (temp int) +0:119 imageAtomicExchange (temp int) +0:119 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:119 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 7 (const uint) +0:119 i1: direct index for structure (layout(offset=36 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 5 (const uint) +0:120 imageAtomicMax (temp int) +0:120 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:120 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 7 (const uint) +0:120 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 8 (const uint) +0:121 move second child to first child (temp int) +0:121 'out_i1' (temp int) +0:121 imageAtomicMax (temp int) +0:121 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:121 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 7 (const uint) +0:121 i1: direct index for structure (layout(offset=36 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 5 (const uint) +0:122 imageAtomicMin (temp int) +0:122 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:122 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 7 (const uint) +0:122 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 8 (const uint) +0:123 move second child to first child (temp int) +0:123 'out_i1' (temp int) +0:123 imageAtomicMin (temp int) +0:123 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:123 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 7 (const uint) +0:123 i1: direct index for structure (layout(offset=36 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 5 (const uint) +0:124 imageAtomicOr (temp int) +0:124 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:124 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 7 (const uint) +0:124 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 8 (const uint) +0:125 move second child to first child (temp int) +0:125 'out_i1' (temp int) +0:125 imageAtomicOr (temp int) +0:125 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:125 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 7 (const uint) +0:125 i1: direct index for structure (layout(offset=36 ) uniform int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 5 (const uint) +0:126 imageAtomicXor (temp int) +0:126 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:126 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 7 (const uint) +0:126 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 8 (const uint) +0:127 move second child to first child (temp int) +0:127 'out_i1' (temp int) +0:127 imageAtomicXor (temp int) +0:127 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:127 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 7 (const uint) +0:127 i1: direct index for structure (layout(offset=36 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 5 (const uint) +0:130 imageAtomicAdd (temp uint) +0:130 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:130 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 2 (const uint) +0:130 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 0 (const uint) +0:131 move second child to first child (temp uint) +0:131 'out_u1' (temp uint) +0:131 imageAtomicAdd (temp uint) +0:131 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:131 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 2 (const uint) +0:131 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 0 (const uint) +0:132 imageAtomicAnd (temp uint) +0:132 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:132 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 2 (const uint) +0:132 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 0 (const uint) +0:133 move second child to first child (temp uint) +0:133 'out_u1' (temp uint) +0:133 imageAtomicAnd (temp uint) +0:133 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:133 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 2 (const uint) +0:133 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 0 (const uint) +0:134 move second child to first child (temp uint) +0:134 'out_u1' (temp uint) +0:134 imageAtomicCompSwap (temp uint) +0:134 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:134 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 2 (const uint) +0:134 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 3 (const uint) +0:134 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 4 (const uint) +0:135 move second child to first child (temp uint) +0:135 'out_u1' (temp uint) +0:135 imageAtomicExchange (temp uint) +0:135 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:135 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 2 (const uint) +0:135 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 0 (const uint) +0:136 imageAtomicMax (temp uint) +0:136 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:136 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 2 (const uint) +0:136 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 0 (const uint) +0:137 move second child to first child (temp uint) +0:137 'out_u1' (temp uint) +0:137 imageAtomicMax (temp uint) +0:137 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:137 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 2 (const uint) +0:137 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 0 (const uint) +0:138 imageAtomicMin (temp uint) +0:138 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:138 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 2 (const uint) +0:138 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 0 (const uint) +0:139 move second child to first child (temp uint) +0:139 'out_u1' (temp uint) +0:139 imageAtomicMin (temp uint) +0:139 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:139 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 2 (const uint) +0:139 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 0 (const uint) +0:140 imageAtomicOr (temp uint) +0:140 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:140 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 2 (const uint) +0:140 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 0 (const uint) +0:141 move second child to first child (temp uint) +0:141 'out_u1' (temp uint) +0:141 imageAtomicOr (temp uint) +0:141 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:141 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 2 (const uint) +0:141 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 0 (const uint) +0:142 imageAtomicXor (temp uint) +0:142 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:142 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 2 (const uint) +0:142 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 0 (const uint) +0:143 move second child to first child (temp uint) +0:143 'out_u1' (temp uint) +0:143 imageAtomicXor (temp uint) +0:143 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:143 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 2 (const uint) +0:143 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 0 (const uint) +0:146 imageAtomicAdd (temp int) +0:146 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:146 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 6 (const uint) +0:146 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 8 (const uint) +0:147 move second child to first child (temp int) +0:147 'out_i1' (temp int) +0:147 imageAtomicAdd (temp int) +0:147 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:147 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 6 (const uint) +0:147 i1: direct index for structure (layout(offset=36 ) uniform int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 5 (const uint) +0:148 imageAtomicAnd (temp int) +0:148 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:148 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 6 (const uint) +0:148 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 8 (const uint) +0:149 move second child to first child (temp int) +0:149 'out_i1' (temp int) +0:149 imageAtomicAnd (temp int) +0:149 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:149 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 6 (const uint) +0:149 i1: direct index for structure (layout(offset=36 ) uniform int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 5 (const uint) +0:150 move second child to first child (temp int) +0:150 'out_i1' (temp int) +0:150 imageAtomicCompSwap (temp int) +0:150 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:150 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 6 (const uint) +0:150 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 8 (const uint) +0:150 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 9 (const uint) +0:151 move second child to first child (temp int) +0:151 'out_i1' (temp int) +0:151 imageAtomicExchange (temp int) +0:151 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:151 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 6 (const uint) +0:151 i1: direct index for structure (layout(offset=36 ) uniform int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 5 (const uint) +0:152 imageAtomicMax (temp int) +0:152 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:152 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 6 (const uint) +0:152 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 8 (const uint) +0:153 move second child to first child (temp int) +0:153 'out_i1' (temp int) +0:153 imageAtomicMax (temp int) +0:153 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:153 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 6 (const uint) +0:153 i1: direct index for structure (layout(offset=36 ) uniform int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 5 (const uint) +0:154 imageAtomicMin (temp int) +0:154 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:154 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 6 (const uint) +0:154 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 8 (const uint) +0:155 move second child to first child (temp int) +0:155 'out_i1' (temp int) +0:155 imageAtomicMin (temp int) +0:155 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:155 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 6 (const uint) +0:155 i1: direct index for structure (layout(offset=36 ) uniform int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 5 (const uint) +0:156 imageAtomicOr (temp int) +0:156 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:156 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 6 (const uint) +0:156 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 8 (const uint) +0:157 move second child to first child (temp int) +0:157 'out_i1' (temp int) +0:157 imageAtomicOr (temp int) +0:157 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:157 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 6 (const uint) +0:157 i1: direct index for structure (layout(offset=36 ) uniform int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 5 (const uint) +0:158 imageAtomicXor (temp int) +0:158 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:158 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 6 (const uint) +0:158 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 8 (const uint) +0:159 move second child to first child (temp int) +0:159 'out_i1' (temp int) +0:159 imageAtomicXor (temp int) +0:159 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:159 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 6 (const uint) +0:159 i1: direct index for structure (layout(offset=36 ) uniform int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 5 (const uint) +0:162 imageAtomicAdd (temp uint) +0:162 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:162 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 1 (const uint) +0:162 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 0 (const uint) +0:163 move second child to first child (temp uint) +0:163 'out_u1' (temp uint) +0:163 imageAtomicAdd (temp uint) +0:163 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:163 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 1 (const uint) +0:163 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 0 (const uint) +0:164 imageAtomicAnd (temp uint) +0:164 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:164 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 1 (const uint) +0:164 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 0 (const uint) +0:165 move second child to first child (temp uint) +0:165 'out_u1' (temp uint) +0:165 imageAtomicAnd (temp uint) +0:165 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:165 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 1 (const uint) +0:165 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 0 (const uint) +0:166 move second child to first child (temp uint) +0:166 'out_u1' (temp uint) +0:166 imageAtomicCompSwap (temp uint) +0:166 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:166 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 1 (const uint) +0:166 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 3 (const uint) +0:166 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 4 (const uint) +0:167 move second child to first child (temp uint) +0:167 'out_u1' (temp uint) +0:167 imageAtomicExchange (temp uint) +0:167 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:167 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 1 (const uint) +0:167 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 0 (const uint) +0:168 imageAtomicMax (temp uint) +0:168 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:168 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 1 (const uint) +0:168 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 0 (const uint) +0:169 move second child to first child (temp uint) +0:169 'out_u1' (temp uint) +0:169 imageAtomicMax (temp uint) +0:169 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:169 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 1 (const uint) +0:169 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 0 (const uint) +0:170 imageAtomicMin (temp uint) +0:170 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:170 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 1 (const uint) +0:170 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 0 (const uint) +0:171 move second child to first child (temp uint) +0:171 'out_u1' (temp uint) +0:171 imageAtomicMin (temp uint) +0:171 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:171 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 1 (const uint) +0:171 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 0 (const uint) +0:172 imageAtomicOr (temp uint) +0:172 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:172 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 1 (const uint) +0:172 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 0 (const uint) +0:173 move second child to first child (temp uint) +0:173 'out_u1' (temp uint) +0:173 imageAtomicOr (temp uint) +0:173 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:173 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 1 (const uint) +0:173 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 0 (const uint) +0:174 imageAtomicXor (temp uint) +0:174 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:174 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 1 (const uint) +0:174 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 0 (const uint) +0:175 move second child to first child (temp uint) +0:175 'out_u1' (temp uint) +0:175 imageAtomicXor (temp uint) +0:175 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:175 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 1 (const uint) +0:175 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 0 (const uint) +0:178 imageAtomicAdd (temp int) +0:178 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:178 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 6 (const uint) +0:178 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 8 (const uint) +0:179 move second child to first child (temp int) +0:179 'out_i1' (temp int) +0:179 imageAtomicAdd (temp int) +0:179 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:179 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 6 (const uint) +0:179 i1: direct index for structure (layout(offset=36 ) uniform int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 5 (const uint) +0:180 imageAtomicAnd (temp int) +0:180 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:180 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 6 (const uint) +0:180 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 8 (const uint) +0:181 move second child to first child (temp int) +0:181 'out_i1' (temp int) +0:181 imageAtomicAnd (temp int) +0:181 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:181 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 6 (const uint) +0:181 i1: direct index for structure (layout(offset=36 ) uniform int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 5 (const uint) +0:182 move second child to first child (temp int) +0:182 'out_i1' (temp int) +0:182 imageAtomicCompSwap (temp int) +0:182 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:182 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 6 (const uint) +0:182 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 8 (const uint) +0:182 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 9 (const uint) +0:183 move second child to first child (temp int) +0:183 'out_i1' (temp int) +0:183 imageAtomicExchange (temp int) +0:183 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:183 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 6 (const uint) +0:183 i1: direct index for structure (layout(offset=36 ) uniform int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 5 (const uint) +0:184 imageAtomicMax (temp int) +0:184 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:184 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 6 (const uint) +0:184 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 8 (const uint) +0:185 move second child to first child (temp int) +0:185 'out_i1' (temp int) +0:185 imageAtomicMax (temp int) +0:185 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:185 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 6 (const uint) +0:185 i1: direct index for structure (layout(offset=36 ) uniform int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 5 (const uint) +0:186 imageAtomicMin (temp int) +0:186 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:186 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 6 (const uint) +0:186 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 8 (const uint) +0:187 move second child to first child (temp int) +0:187 'out_i1' (temp int) +0:187 imageAtomicMin (temp int) +0:187 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:187 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 6 (const uint) +0:187 i1: direct index for structure (layout(offset=36 ) uniform int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 5 (const uint) +0:188 imageAtomicOr (temp int) +0:188 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:188 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 6 (const uint) +0:188 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 8 (const uint) +0:189 move second child to first child (temp int) +0:189 'out_i1' (temp int) +0:189 imageAtomicOr (temp int) +0:189 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:189 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 6 (const uint) +0:189 i1: direct index for structure (layout(offset=36 ) uniform int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 5 (const uint) +0:190 imageAtomicXor (temp int) +0:190 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:190 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 6 (const uint) +0:190 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 8 (const uint) +0:191 move second child to first child (temp int) +0:191 'out_i1' (temp int) +0:191 imageAtomicXor (temp int) +0:191 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:191 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 6 (const uint) +0:191 i1: direct index for structure (layout(offset=36 ) uniform int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 5 (const uint) +0:194 imageAtomicAdd (temp uint) +0:194 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:194 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 1 (const uint) +0:194 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 0 (const uint) +0:195 move second child to first child (temp uint) +0:195 'out_u1' (temp uint) +0:195 imageAtomicAdd (temp uint) +0:195 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:195 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 1 (const uint) +0:195 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 0 (const uint) +0:196 imageAtomicAnd (temp uint) +0:196 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:196 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 1 (const uint) +0:196 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 0 (const uint) +0:197 move second child to first child (temp uint) +0:197 'out_u1' (temp uint) +0:197 imageAtomicAnd (temp uint) +0:197 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:197 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 1 (const uint) +0:197 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 0 (const uint) +0:198 move second child to first child (temp uint) +0:198 'out_u1' (temp uint) +0:198 imageAtomicCompSwap (temp uint) +0:198 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:198 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 1 (const uint) +0:198 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 3 (const uint) +0:198 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 4 (const uint) +0:199 move second child to first child (temp uint) +0:199 'out_u1' (temp uint) +0:199 imageAtomicExchange (temp uint) +0:199 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:199 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 1 (const uint) +0:199 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 0 (const uint) +0:200 imageAtomicMax (temp uint) +0:200 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:200 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 1 (const uint) +0:200 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 0 (const uint) +0:201 move second child to first child (temp uint) +0:201 'out_u1' (temp uint) +0:201 imageAtomicMax (temp uint) +0:201 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:201 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 1 (const uint) +0:201 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 0 (const uint) +0:202 imageAtomicMin (temp uint) +0:202 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:202 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 1 (const uint) +0:202 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 0 (const uint) +0:203 move second child to first child (temp uint) +0:203 'out_u1' (temp uint) +0:203 imageAtomicMin (temp uint) +0:203 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:203 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 1 (const uint) +0:203 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 0 (const uint) +0:204 imageAtomicOr (temp uint) +0:204 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:204 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 1 (const uint) +0:204 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 0 (const uint) +0:205 move second child to first child (temp uint) +0:205 'out_u1' (temp uint) +0:205 imageAtomicOr (temp uint) +0:205 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:205 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 1 (const uint) +0:205 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 0 (const uint) +0:206 imageAtomicXor (temp uint) +0:206 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:206 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 1 (const uint) +0:206 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 0 (const uint) +0:207 move second child to first child (temp uint) +0:207 'out_u1' (temp uint) +0:207 imageAtomicXor (temp uint) +0:207 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:207 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 1 (const uint) +0:207 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 0 (const uint) +0:210 imageAtomicAdd (temp int) +0:210 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:210 i1: direct index for structure (layout(offset=36 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 5 (const uint) +0:210 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 8 (const uint) +0:211 move second child to first child (temp int) +0:211 'out_i1' (temp int) +0:211 imageAtomicAdd (temp int) +0:211 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:212 imageAtomicAnd (temp int) +0:212 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:212 i1: direct index for structure (layout(offset=36 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 5 (const uint) +0:212 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 8 (const uint) +0:213 move second child to first child (temp int) +0:213 'out_i1' (temp int) +0:213 imageAtomicAnd (temp int) +0:213 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:214 move second child to first child (temp int) +0:214 'out_i1' (temp int) +0:214 imageAtomicCompSwap (temp int) +0:214 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:214 i1: direct index for structure (layout(offset=36 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 5 (const uint) +0:214 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 8 (const uint) +0:214 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 9 (const uint) +0:215 move second child to first child (temp int) +0:215 'out_i1' (temp int) +0:215 imageAtomicExchange (temp int) +0:215 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:216 imageAtomicMax (temp int) +0:216 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:216 i1: direct index for structure (layout(offset=36 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 5 (const uint) +0:216 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 8 (const uint) +0:217 move second child to first child (temp int) +0:217 'out_i1' (temp int) +0:217 imageAtomicMax (temp int) +0:217 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:218 imageAtomicMin (temp int) +0:218 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:218 i1: direct index for structure (layout(offset=36 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 5 (const uint) +0:218 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 8 (const uint) +0:219 move second child to first child (temp int) +0:219 'out_i1' (temp int) +0:219 imageAtomicMin (temp int) +0:219 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:220 imageAtomicOr (temp int) +0:220 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:220 i1: direct index for structure (layout(offset=36 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 5 (const uint) +0:220 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 8 (const uint) +0:221 move second child to first child (temp int) +0:221 'out_i1' (temp int) +0:221 imageAtomicOr (temp int) +0:221 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:222 imageAtomicXor (temp int) +0:222 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:222 i1: direct index for structure (layout(offset=36 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 5 (const uint) +0:222 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 8 (const uint) +0:223 move second child to first child (temp int) +0:223 'out_i1' (temp int) +0:223 imageAtomicXor (temp int) +0:223 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:226 imageAtomicAdd (temp uint) +0:226 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:227 move second child to first child (temp uint) +0:227 'out_u1' (temp uint) +0:227 imageAtomicAdd (temp uint) +0:227 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:228 imageAtomicAnd (temp uint) +0:228 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:229 move second child to first child (temp uint) +0:229 'out_u1' (temp uint) +0:229 imageAtomicAnd (temp uint) +0:229 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:230 move second child to first child (temp uint) +0:230 'out_u1' (temp uint) +0:230 imageAtomicCompSwap (temp uint) +0:230 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:230 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 0 (const uint) +0:230 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 3 (const uint) +0:230 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 4 (const uint) +0:231 move second child to first child (temp uint) +0:231 'out_u1' (temp uint) +0:231 imageAtomicExchange (temp uint) +0:231 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:232 imageAtomicMax (temp uint) +0:232 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:233 move second child to first child (temp uint) +0:233 'out_u1' (temp uint) +0:233 imageAtomicMax (temp uint) +0:233 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:234 imageAtomicMin (temp uint) +0:234 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:235 move second child to first child (temp uint) +0:235 'out_u1' (temp uint) +0:235 imageAtomicMin (temp uint) +0:235 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:236 imageAtomicOr (temp uint) +0:236 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:237 move second child to first child (temp uint) +0:237 'out_u1' (temp uint) +0:237 imageAtomicOr (temp uint) +0:237 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:238 imageAtomicXor (temp uint) +0:238 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:239 move second child to first child (temp uint) +0:239 'out_u1' (temp uint) +0:239 imageAtomicXor (temp uint) +0:239 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:242 move second child to first child (temp 4-component vector of float) +0:242 Color: direct index for structure (temp 4-component vector of float) +0:242 'psout' (temp structure{temp 4-component vector of float Color}) +0:242 Constant: +0:242 0 (const int) +0:242 Constant: +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:243 Sequence +0:243 Sequence +0:243 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:243 Color: direct index for structure (temp 4-component vector of float) +0:243 'psout' (temp structure{temp 4-component vector of float Color}) +0:243 Constant: +0:243 0 (const int) +0:243 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(r32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:50 imageAtomicAdd (temp int) +0:50 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:50 i1: direct index for structure (layout(offset=36 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 5 (const uint) +0:50 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 8 (const uint) +0:51 move second child to first child (temp int) +0:51 'out_i1' (temp int) +0:51 imageAtomicAdd (temp int) +0:51 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:52 imageAtomicAnd (temp int) +0:52 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:52 i1: direct index for structure (layout(offset=36 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 5 (const uint) +0:52 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 8 (const uint) +0:53 move second child to first child (temp int) +0:53 'out_i1' (temp int) +0:53 imageAtomicAnd (temp int) +0:53 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:54 move second child to first child (temp int) +0:54 'out_i1' (temp int) +0:54 imageAtomicCompSwap (temp int) +0:54 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:54 i1: direct index for structure (layout(offset=36 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 5 (const uint) +0:54 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 8 (const uint) +0:54 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 9 (const uint) +0:55 move second child to first child (temp int) +0:55 'out_i1' (temp int) +0:55 imageAtomicExchange (temp int) +0:55 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:56 imageAtomicMax (temp int) +0:56 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:56 i1: direct index for structure (layout(offset=36 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 5 (const uint) +0:56 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 8 (const uint) +0:57 move second child to first child (temp int) +0:57 'out_i1' (temp int) +0:57 imageAtomicMax (temp int) +0:57 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:58 imageAtomicMin (temp int) +0:58 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:58 i1: direct index for structure (layout(offset=36 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 5 (const uint) +0:58 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 8 (const uint) +0:59 move second child to first child (temp int) +0:59 'out_i1' (temp int) +0:59 imageAtomicMin (temp int) +0:59 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:60 imageAtomicOr (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 i1: direct index for structure (layout(offset=36 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 5 (const uint) +0:60 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 8 (const uint) +0:61 move second child to first child (temp int) +0:61 'out_i1' (temp int) +0:61 imageAtomicOr (temp int) +0:61 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:62 imageAtomicXor (temp int) +0:62 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:62 i1: direct index for structure (layout(offset=36 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 5 (const uint) +0:62 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 8 (const uint) +0:63 move second child to first child (temp int) +0:63 'out_i1' (temp int) +0:63 imageAtomicXor (temp int) +0:63 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:66 imageAtomicAdd (temp uint) +0:66 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:67 move second child to first child (temp uint) +0:67 'out_u1' (temp uint) +0:67 imageAtomicAdd (temp uint) +0:67 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:68 imageAtomicAnd (temp uint) +0:68 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:69 move second child to first child (temp uint) +0:69 'out_u1' (temp uint) +0:69 imageAtomicAnd (temp uint) +0:69 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:70 move second child to first child (temp uint) +0:70 'out_u1' (temp uint) +0:70 imageAtomicCompSwap (temp uint) +0:70 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:70 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 0 (const uint) +0:70 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 3 (const uint) +0:70 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 4 (const uint) +0:71 move second child to first child (temp uint) +0:71 'out_u1' (temp uint) +0:71 imageAtomicExchange (temp uint) +0:71 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:72 imageAtomicMax (temp uint) +0:72 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:73 move second child to first child (temp uint) +0:73 'out_u1' (temp uint) +0:73 imageAtomicMax (temp uint) +0:73 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:74 imageAtomicMin (temp uint) +0:74 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:75 move second child to first child (temp uint) +0:75 'out_u1' (temp uint) +0:75 imageAtomicMin (temp uint) +0:75 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:76 imageAtomicOr (temp uint) +0:76 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:77 move second child to first child (temp uint) +0:77 'out_u1' (temp uint) +0:77 imageAtomicOr (temp uint) +0:77 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:78 imageAtomicXor (temp uint) +0:78 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:79 move second child to first child (temp uint) +0:79 'out_u1' (temp uint) +0:79 imageAtomicXor (temp uint) +0:79 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:82 imageAtomicAdd (temp int) +0:82 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:82 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 6 (const uint) +0:82 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 8 (const uint) +0:83 move second child to first child (temp int) +0:83 'out_i1' (temp int) +0:83 imageAtomicAdd (temp int) +0:83 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:83 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 6 (const uint) +0:83 i1: direct index for structure (layout(offset=36 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 5 (const uint) +0:84 imageAtomicAnd (temp int) +0:84 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:84 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 6 (const uint) +0:84 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 8 (const uint) +0:85 move second child to first child (temp int) +0:85 'out_i1' (temp int) +0:85 imageAtomicAnd (temp int) +0:85 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:85 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 6 (const uint) +0:85 i1: direct index for structure (layout(offset=36 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 5 (const uint) +0:86 move second child to first child (temp int) +0:86 'out_i1' (temp int) +0:86 imageAtomicCompSwap (temp int) +0:86 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:86 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 6 (const uint) +0:86 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 8 (const uint) +0:86 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 9 (const uint) +0:87 move second child to first child (temp int) +0:87 'out_i1' (temp int) +0:87 imageAtomicExchange (temp int) +0:87 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:87 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 6 (const uint) +0:87 i1: direct index for structure (layout(offset=36 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 5 (const uint) +0:88 imageAtomicMax (temp int) +0:88 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:88 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 6 (const uint) +0:88 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 8 (const uint) +0:89 move second child to first child (temp int) +0:89 'out_i1' (temp int) +0:89 imageAtomicMax (temp int) +0:89 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:89 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 6 (const uint) +0:89 i1: direct index for structure (layout(offset=36 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 5 (const uint) +0:90 imageAtomicMin (temp int) +0:90 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:90 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 6 (const uint) +0:90 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 8 (const uint) +0:91 move second child to first child (temp int) +0:91 'out_i1' (temp int) +0:91 imageAtomicMin (temp int) +0:91 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:91 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 6 (const uint) +0:91 i1: direct index for structure (layout(offset=36 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 5 (const uint) +0:92 imageAtomicOr (temp int) +0:92 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:92 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 6 (const uint) +0:92 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 8 (const uint) +0:93 move second child to first child (temp int) +0:93 'out_i1' (temp int) +0:93 imageAtomicOr (temp int) +0:93 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:93 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 6 (const uint) +0:93 i1: direct index for structure (layout(offset=36 ) uniform int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 5 (const uint) +0:94 imageAtomicXor (temp int) +0:94 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:94 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 6 (const uint) +0:94 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 8 (const uint) +0:95 move second child to first child (temp int) +0:95 'out_i1' (temp int) +0:95 imageAtomicXor (temp int) +0:95 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:95 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 6 (const uint) +0:95 i1: direct index for structure (layout(offset=36 ) uniform int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 5 (const uint) +0:98 imageAtomicAdd (temp uint) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 1 (const uint) +0:98 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 0 (const uint) +0:99 move second child to first child (temp uint) +0:99 'out_u1' (temp uint) +0:99 imageAtomicAdd (temp uint) +0:99 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:99 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 1 (const uint) +0:99 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 0 (const uint) +0:100 imageAtomicAnd (temp uint) +0:100 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:100 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 1 (const uint) +0:100 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 0 (const uint) +0:101 move second child to first child (temp uint) +0:101 'out_u1' (temp uint) +0:101 imageAtomicAnd (temp uint) +0:101 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:101 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 1 (const uint) +0:101 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 0 (const uint) +0:102 move second child to first child (temp uint) +0:102 'out_u1' (temp uint) +0:102 imageAtomicCompSwap (temp uint) +0:102 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:102 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 1 (const uint) +0:102 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 3 (const uint) +0:102 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 4 (const uint) +0:103 move second child to first child (temp uint) +0:103 'out_u1' (temp uint) +0:103 imageAtomicExchange (temp uint) +0:103 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:103 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 1 (const uint) +0:103 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 0 (const uint) +0:104 imageAtomicMax (temp uint) +0:104 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:104 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 1 (const uint) +0:104 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 0 (const uint) +0:105 move second child to first child (temp uint) +0:105 'out_u1' (temp uint) +0:105 imageAtomicMax (temp uint) +0:105 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:105 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 1 (const uint) +0:105 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 0 (const uint) +0:106 imageAtomicMin (temp uint) +0:106 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:106 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 1 (const uint) +0:106 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 0 (const uint) +0:107 move second child to first child (temp uint) +0:107 'out_u1' (temp uint) +0:107 imageAtomicMin (temp uint) +0:107 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:107 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 1 (const uint) +0:107 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 0 (const uint) +0:108 imageAtomicOr (temp uint) +0:108 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:108 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 1 (const uint) +0:108 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 0 (const uint) +0:109 move second child to first child (temp uint) +0:109 'out_u1' (temp uint) +0:109 imageAtomicOr (temp uint) +0:109 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:109 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 1 (const uint) +0:109 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 0 (const uint) +0:110 imageAtomicXor (temp uint) +0:110 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:110 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 1 (const uint) +0:110 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 0 (const uint) +0:111 move second child to first child (temp uint) +0:111 'out_u1' (temp uint) +0:111 imageAtomicXor (temp uint) +0:111 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:111 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 1 (const uint) +0:111 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 0 (const uint) +0:114 imageAtomicAdd (temp int) +0:114 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:114 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 7 (const uint) +0:114 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 8 (const uint) +0:115 move second child to first child (temp int) +0:115 'out_i1' (temp int) +0:115 imageAtomicAdd (temp int) +0:115 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:115 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 7 (const uint) +0:115 i1: direct index for structure (layout(offset=36 ) uniform int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 5 (const uint) +0:116 imageAtomicAnd (temp int) +0:116 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:116 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 7 (const uint) +0:116 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 8 (const uint) +0:117 move second child to first child (temp int) +0:117 'out_i1' (temp int) +0:117 imageAtomicAnd (temp int) +0:117 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:117 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 7 (const uint) +0:117 i1: direct index for structure (layout(offset=36 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 5 (const uint) +0:118 move second child to first child (temp int) +0:118 'out_i1' (temp int) +0:118 imageAtomicCompSwap (temp int) +0:118 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:118 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 7 (const uint) +0:118 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 8 (const uint) +0:118 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 9 (const uint) +0:119 move second child to first child (temp int) +0:119 'out_i1' (temp int) +0:119 imageAtomicExchange (temp int) +0:119 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:119 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 7 (const uint) +0:119 i1: direct index for structure (layout(offset=36 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 5 (const uint) +0:120 imageAtomicMax (temp int) +0:120 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:120 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 7 (const uint) +0:120 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 8 (const uint) +0:121 move second child to first child (temp int) +0:121 'out_i1' (temp int) +0:121 imageAtomicMax (temp int) +0:121 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:121 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 7 (const uint) +0:121 i1: direct index for structure (layout(offset=36 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 5 (const uint) +0:122 imageAtomicMin (temp int) +0:122 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:122 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 7 (const uint) +0:122 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 8 (const uint) +0:123 move second child to first child (temp int) +0:123 'out_i1' (temp int) +0:123 imageAtomicMin (temp int) +0:123 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:123 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 7 (const uint) +0:123 i1: direct index for structure (layout(offset=36 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 5 (const uint) +0:124 imageAtomicOr (temp int) +0:124 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:124 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 7 (const uint) +0:124 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 8 (const uint) +0:125 move second child to first child (temp int) +0:125 'out_i1' (temp int) +0:125 imageAtomicOr (temp int) +0:125 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:125 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 7 (const uint) +0:125 i1: direct index for structure (layout(offset=36 ) uniform int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 5 (const uint) +0:126 imageAtomicXor (temp int) +0:126 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:126 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 7 (const uint) +0:126 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 8 (const uint) +0:127 move second child to first child (temp int) +0:127 'out_i1' (temp int) +0:127 imageAtomicXor (temp int) +0:127 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:127 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 7 (const uint) +0:127 i1: direct index for structure (layout(offset=36 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 5 (const uint) +0:130 imageAtomicAdd (temp uint) +0:130 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:130 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 2 (const uint) +0:130 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 0 (const uint) +0:131 move second child to first child (temp uint) +0:131 'out_u1' (temp uint) +0:131 imageAtomicAdd (temp uint) +0:131 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:131 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 2 (const uint) +0:131 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 0 (const uint) +0:132 imageAtomicAnd (temp uint) +0:132 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:132 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 2 (const uint) +0:132 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 0 (const uint) +0:133 move second child to first child (temp uint) +0:133 'out_u1' (temp uint) +0:133 imageAtomicAnd (temp uint) +0:133 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:133 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 2 (const uint) +0:133 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 0 (const uint) +0:134 move second child to first child (temp uint) +0:134 'out_u1' (temp uint) +0:134 imageAtomicCompSwap (temp uint) +0:134 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:134 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 2 (const uint) +0:134 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 3 (const uint) +0:134 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 4 (const uint) +0:135 move second child to first child (temp uint) +0:135 'out_u1' (temp uint) +0:135 imageAtomicExchange (temp uint) +0:135 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:135 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 2 (const uint) +0:135 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 0 (const uint) +0:136 imageAtomicMax (temp uint) +0:136 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:136 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 2 (const uint) +0:136 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 0 (const uint) +0:137 move second child to first child (temp uint) +0:137 'out_u1' (temp uint) +0:137 imageAtomicMax (temp uint) +0:137 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:137 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 2 (const uint) +0:137 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 0 (const uint) +0:138 imageAtomicMin (temp uint) +0:138 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:138 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 2 (const uint) +0:138 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 0 (const uint) +0:139 move second child to first child (temp uint) +0:139 'out_u1' (temp uint) +0:139 imageAtomicMin (temp uint) +0:139 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:139 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 2 (const uint) +0:139 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 0 (const uint) +0:140 imageAtomicOr (temp uint) +0:140 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:140 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 2 (const uint) +0:140 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 0 (const uint) +0:141 move second child to first child (temp uint) +0:141 'out_u1' (temp uint) +0:141 imageAtomicOr (temp uint) +0:141 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:141 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 2 (const uint) +0:141 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 0 (const uint) +0:142 imageAtomicXor (temp uint) +0:142 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:142 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 2 (const uint) +0:142 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 0 (const uint) +0:143 move second child to first child (temp uint) +0:143 'out_u1' (temp uint) +0:143 imageAtomicXor (temp uint) +0:143 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:143 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 2 (const uint) +0:143 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 0 (const uint) +0:146 imageAtomicAdd (temp int) +0:146 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:146 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 6 (const uint) +0:146 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 8 (const uint) +0:147 move second child to first child (temp int) +0:147 'out_i1' (temp int) +0:147 imageAtomicAdd (temp int) +0:147 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:147 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 6 (const uint) +0:147 i1: direct index for structure (layout(offset=36 ) uniform int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 5 (const uint) +0:148 imageAtomicAnd (temp int) +0:148 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:148 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 6 (const uint) +0:148 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 8 (const uint) +0:149 move second child to first child (temp int) +0:149 'out_i1' (temp int) +0:149 imageAtomicAnd (temp int) +0:149 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:149 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 6 (const uint) +0:149 i1: direct index for structure (layout(offset=36 ) uniform int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 5 (const uint) +0:150 move second child to first child (temp int) +0:150 'out_i1' (temp int) +0:150 imageAtomicCompSwap (temp int) +0:150 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:150 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 6 (const uint) +0:150 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 8 (const uint) +0:150 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 9 (const uint) +0:151 move second child to first child (temp int) +0:151 'out_i1' (temp int) +0:151 imageAtomicExchange (temp int) +0:151 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:151 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 6 (const uint) +0:151 i1: direct index for structure (layout(offset=36 ) uniform int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 5 (const uint) +0:152 imageAtomicMax (temp int) +0:152 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:152 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 6 (const uint) +0:152 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 8 (const uint) +0:153 move second child to first child (temp int) +0:153 'out_i1' (temp int) +0:153 imageAtomicMax (temp int) +0:153 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:153 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 6 (const uint) +0:153 i1: direct index for structure (layout(offset=36 ) uniform int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 5 (const uint) +0:154 imageAtomicMin (temp int) +0:154 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:154 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 6 (const uint) +0:154 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 8 (const uint) +0:155 move second child to first child (temp int) +0:155 'out_i1' (temp int) +0:155 imageAtomicMin (temp int) +0:155 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:155 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 6 (const uint) +0:155 i1: direct index for structure (layout(offset=36 ) uniform int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 5 (const uint) +0:156 imageAtomicOr (temp int) +0:156 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:156 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 6 (const uint) +0:156 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 8 (const uint) +0:157 move second child to first child (temp int) +0:157 'out_i1' (temp int) +0:157 imageAtomicOr (temp int) +0:157 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:157 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 6 (const uint) +0:157 i1: direct index for structure (layout(offset=36 ) uniform int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 5 (const uint) +0:158 imageAtomicXor (temp int) +0:158 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:158 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 6 (const uint) +0:158 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 8 (const uint) +0:159 move second child to first child (temp int) +0:159 'out_i1' (temp int) +0:159 imageAtomicXor (temp int) +0:159 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:159 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 6 (const uint) +0:159 i1: direct index for structure (layout(offset=36 ) uniform int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 5 (const uint) +0:162 imageAtomicAdd (temp uint) +0:162 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:162 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 1 (const uint) +0:162 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 0 (const uint) +0:163 move second child to first child (temp uint) +0:163 'out_u1' (temp uint) +0:163 imageAtomicAdd (temp uint) +0:163 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:163 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 1 (const uint) +0:163 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 0 (const uint) +0:164 imageAtomicAnd (temp uint) +0:164 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:164 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 1 (const uint) +0:164 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 0 (const uint) +0:165 move second child to first child (temp uint) +0:165 'out_u1' (temp uint) +0:165 imageAtomicAnd (temp uint) +0:165 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:165 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 1 (const uint) +0:165 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 0 (const uint) +0:166 move second child to first child (temp uint) +0:166 'out_u1' (temp uint) +0:166 imageAtomicCompSwap (temp uint) +0:166 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:166 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 1 (const uint) +0:166 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 3 (const uint) +0:166 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 4 (const uint) +0:167 move second child to first child (temp uint) +0:167 'out_u1' (temp uint) +0:167 imageAtomicExchange (temp uint) +0:167 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:167 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 1 (const uint) +0:167 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 0 (const uint) +0:168 imageAtomicMax (temp uint) +0:168 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:168 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 1 (const uint) +0:168 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 0 (const uint) +0:169 move second child to first child (temp uint) +0:169 'out_u1' (temp uint) +0:169 imageAtomicMax (temp uint) +0:169 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:169 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 1 (const uint) +0:169 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 0 (const uint) +0:170 imageAtomicMin (temp uint) +0:170 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:170 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 1 (const uint) +0:170 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 0 (const uint) +0:171 move second child to first child (temp uint) +0:171 'out_u1' (temp uint) +0:171 imageAtomicMin (temp uint) +0:171 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:171 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 1 (const uint) +0:171 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 0 (const uint) +0:172 imageAtomicOr (temp uint) +0:172 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:172 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 1 (const uint) +0:172 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 0 (const uint) +0:173 move second child to first child (temp uint) +0:173 'out_u1' (temp uint) +0:173 imageAtomicOr (temp uint) +0:173 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:173 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 1 (const uint) +0:173 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 0 (const uint) +0:174 imageAtomicXor (temp uint) +0:174 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:174 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 1 (const uint) +0:174 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 0 (const uint) +0:175 move second child to first child (temp uint) +0:175 'out_u1' (temp uint) +0:175 imageAtomicXor (temp uint) +0:175 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:175 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 1 (const uint) +0:175 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 0 (const uint) +0:178 imageAtomicAdd (temp int) +0:178 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:178 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 6 (const uint) +0:178 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 8 (const uint) +0:179 move second child to first child (temp int) +0:179 'out_i1' (temp int) +0:179 imageAtomicAdd (temp int) +0:179 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:179 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 6 (const uint) +0:179 i1: direct index for structure (layout(offset=36 ) uniform int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 5 (const uint) +0:180 imageAtomicAnd (temp int) +0:180 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:180 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 6 (const uint) +0:180 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 8 (const uint) +0:181 move second child to first child (temp int) +0:181 'out_i1' (temp int) +0:181 imageAtomicAnd (temp int) +0:181 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:181 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 6 (const uint) +0:181 i1: direct index for structure (layout(offset=36 ) uniform int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 5 (const uint) +0:182 move second child to first child (temp int) +0:182 'out_i1' (temp int) +0:182 imageAtomicCompSwap (temp int) +0:182 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:182 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 6 (const uint) +0:182 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 8 (const uint) +0:182 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 9 (const uint) +0:183 move second child to first child (temp int) +0:183 'out_i1' (temp int) +0:183 imageAtomicExchange (temp int) +0:183 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:183 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 6 (const uint) +0:183 i1: direct index for structure (layout(offset=36 ) uniform int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 5 (const uint) +0:184 imageAtomicMax (temp int) +0:184 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:184 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 6 (const uint) +0:184 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 8 (const uint) +0:185 move second child to first child (temp int) +0:185 'out_i1' (temp int) +0:185 imageAtomicMax (temp int) +0:185 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:185 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 6 (const uint) +0:185 i1: direct index for structure (layout(offset=36 ) uniform int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 5 (const uint) +0:186 imageAtomicMin (temp int) +0:186 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:186 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 6 (const uint) +0:186 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 8 (const uint) +0:187 move second child to first child (temp int) +0:187 'out_i1' (temp int) +0:187 imageAtomicMin (temp int) +0:187 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:187 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 6 (const uint) +0:187 i1: direct index for structure (layout(offset=36 ) uniform int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 5 (const uint) +0:188 imageAtomicOr (temp int) +0:188 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:188 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 6 (const uint) +0:188 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 8 (const uint) +0:189 move second child to first child (temp int) +0:189 'out_i1' (temp int) +0:189 imageAtomicOr (temp int) +0:189 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:189 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 6 (const uint) +0:189 i1: direct index for structure (layout(offset=36 ) uniform int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 5 (const uint) +0:190 imageAtomicXor (temp int) +0:190 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:190 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 6 (const uint) +0:190 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 8 (const uint) +0:191 move second child to first child (temp int) +0:191 'out_i1' (temp int) +0:191 imageAtomicXor (temp int) +0:191 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:191 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 6 (const uint) +0:191 i1: direct index for structure (layout(offset=36 ) uniform int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 5 (const uint) +0:194 imageAtomicAdd (temp uint) +0:194 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:194 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 1 (const uint) +0:194 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 0 (const uint) +0:195 move second child to first child (temp uint) +0:195 'out_u1' (temp uint) +0:195 imageAtomicAdd (temp uint) +0:195 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:195 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 1 (const uint) +0:195 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 0 (const uint) +0:196 imageAtomicAnd (temp uint) +0:196 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:196 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 1 (const uint) +0:196 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 0 (const uint) +0:197 move second child to first child (temp uint) +0:197 'out_u1' (temp uint) +0:197 imageAtomicAnd (temp uint) +0:197 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:197 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 1 (const uint) +0:197 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 0 (const uint) +0:198 move second child to first child (temp uint) +0:198 'out_u1' (temp uint) +0:198 imageAtomicCompSwap (temp uint) +0:198 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:198 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 1 (const uint) +0:198 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 3 (const uint) +0:198 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 4 (const uint) +0:199 move second child to first child (temp uint) +0:199 'out_u1' (temp uint) +0:199 imageAtomicExchange (temp uint) +0:199 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:199 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 1 (const uint) +0:199 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 0 (const uint) +0:200 imageAtomicMax (temp uint) +0:200 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:200 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 1 (const uint) +0:200 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 0 (const uint) +0:201 move second child to first child (temp uint) +0:201 'out_u1' (temp uint) +0:201 imageAtomicMax (temp uint) +0:201 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:201 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 1 (const uint) +0:201 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 0 (const uint) +0:202 imageAtomicMin (temp uint) +0:202 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:202 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 1 (const uint) +0:202 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 0 (const uint) +0:203 move second child to first child (temp uint) +0:203 'out_u1' (temp uint) +0:203 imageAtomicMin (temp uint) +0:203 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:203 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 1 (const uint) +0:203 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 0 (const uint) +0:204 imageAtomicOr (temp uint) +0:204 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:204 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 1 (const uint) +0:204 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 0 (const uint) +0:205 move second child to first child (temp uint) +0:205 'out_u1' (temp uint) +0:205 imageAtomicOr (temp uint) +0:205 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:205 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 1 (const uint) +0:205 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 0 (const uint) +0:206 imageAtomicXor (temp uint) +0:206 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:206 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 1 (const uint) +0:206 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 0 (const uint) +0:207 move second child to first child (temp uint) +0:207 'out_u1' (temp uint) +0:207 imageAtomicXor (temp uint) +0:207 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:207 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 1 (const uint) +0:207 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 0 (const uint) +0:210 imageAtomicAdd (temp int) +0:210 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:210 i1: direct index for structure (layout(offset=36 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 5 (const uint) +0:210 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 8 (const uint) +0:211 move second child to first child (temp int) +0:211 'out_i1' (temp int) +0:211 imageAtomicAdd (temp int) +0:211 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:212 imageAtomicAnd (temp int) +0:212 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:212 i1: direct index for structure (layout(offset=36 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 5 (const uint) +0:212 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 8 (const uint) +0:213 move second child to first child (temp int) +0:213 'out_i1' (temp int) +0:213 imageAtomicAnd (temp int) +0:213 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:214 move second child to first child (temp int) +0:214 'out_i1' (temp int) +0:214 imageAtomicCompSwap (temp int) +0:214 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:214 i1: direct index for structure (layout(offset=36 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 5 (const uint) +0:214 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 8 (const uint) +0:214 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 9 (const uint) +0:215 move second child to first child (temp int) +0:215 'out_i1' (temp int) +0:215 imageAtomicExchange (temp int) +0:215 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:216 imageAtomicMax (temp int) +0:216 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:216 i1: direct index for structure (layout(offset=36 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 5 (const uint) +0:216 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 8 (const uint) +0:217 move second child to first child (temp int) +0:217 'out_i1' (temp int) +0:217 imageAtomicMax (temp int) +0:217 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:218 imageAtomicMin (temp int) +0:218 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:218 i1: direct index for structure (layout(offset=36 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 5 (const uint) +0:218 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 8 (const uint) +0:219 move second child to first child (temp int) +0:219 'out_i1' (temp int) +0:219 imageAtomicMin (temp int) +0:219 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:220 imageAtomicOr (temp int) +0:220 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:220 i1: direct index for structure (layout(offset=36 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 5 (const uint) +0:220 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 8 (const uint) +0:221 move second child to first child (temp int) +0:221 'out_i1' (temp int) +0:221 imageAtomicOr (temp int) +0:221 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:222 imageAtomicXor (temp int) +0:222 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:222 i1: direct index for structure (layout(offset=36 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 5 (const uint) +0:222 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 8 (const uint) +0:223 move second child to first child (temp int) +0:223 'out_i1' (temp int) +0:223 imageAtomicXor (temp int) +0:223 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:226 imageAtomicAdd (temp uint) +0:226 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:227 move second child to first child (temp uint) +0:227 'out_u1' (temp uint) +0:227 imageAtomicAdd (temp uint) +0:227 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:228 imageAtomicAnd (temp uint) +0:228 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:229 move second child to first child (temp uint) +0:229 'out_u1' (temp uint) +0:229 imageAtomicAnd (temp uint) +0:229 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:230 move second child to first child (temp uint) +0:230 'out_u1' (temp uint) +0:230 imageAtomicCompSwap (temp uint) +0:230 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:230 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 0 (const uint) +0:230 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 3 (const uint) +0:230 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 4 (const uint) +0:231 move second child to first child (temp uint) +0:231 'out_u1' (temp uint) +0:231 imageAtomicExchange (temp uint) +0:231 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:232 imageAtomicMax (temp uint) +0:232 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:233 move second child to first child (temp uint) +0:233 'out_u1' (temp uint) +0:233 imageAtomicMax (temp uint) +0:233 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:234 imageAtomicMin (temp uint) +0:234 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:235 move second child to first child (temp uint) +0:235 'out_u1' (temp uint) +0:235 imageAtomicMin (temp uint) +0:235 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:236 imageAtomicOr (temp uint) +0:236 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:237 move second child to first child (temp uint) +0:237 'out_u1' (temp uint) +0:237 imageAtomicOr (temp uint) +0:237 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:238 imageAtomicXor (temp uint) +0:238 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:239 move second child to first child (temp uint) +0:239 'out_u1' (temp uint) +0:239 imageAtomicXor (temp uint) +0:239 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:242 move second child to first child (temp 4-component vector of float) +0:242 Color: direct index for structure (temp 4-component vector of float) +0:242 'psout' (temp structure{temp 4-component vector of float Color}) +0:242 Constant: +0:242 0 (const int) +0:242 Constant: +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:243 Sequence +0:243 Sequence +0:243 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:243 Color: direct index for structure (temp 4-component vector of float) +0:243 'psout' (temp structure{temp 4-component vector of float Color}) +0:243 Constant: +0:243 0 (const int) +0:243 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(r32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 1142 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 1111 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1di1" + Name 15 "$Global" + MemberName 15($Global) 0 "u1" + MemberName 15($Global) 1 "u2" + MemberName 15($Global) 2 "u3" + MemberName 15($Global) 3 "u1b" + MemberName 15($Global) 4 "u1c" + MemberName 15($Global) 5 "i1" + MemberName 15($Global) 6 "i2" + MemberName 15($Global) 7 "i3" + MemberName 15($Global) 8 "i1b" + MemberName 15($Global) 9 "i1c" + Name 17 "" + Name 31 "out_i1" + Name 115 "g_tTex1du1" + Name 126 "out_u1" + Name 211 "g_tTex2di1" + Name 302 "g_tTex2du1" + Name 393 "g_tTex3di1" + Name 484 "g_tTex3du1" + Name 575 "g_tTex1di1a" + Name 664 "g_tTex1du1a" + Name 925 "g_tBuffI" + Name 1014 "g_tBuffU" + Name 1103 "PS_OUTPUT" + MemberName 1103(PS_OUTPUT) 0 "Color" + Name 1105 "psout" + Name 1111 "Color" + Name 1117 "g_sSamp" + Name 1120 "g_tTex1df1" + Name 1123 "g_tTex2df1" + Name 1126 "g_tTex3df1" + Name 1129 "g_tTex1df1a" + Name 1132 "g_tTex2df1a" + Name 1135 "g_tTex2di1a" + Name 1138 "g_tTex2du1a" + Name 1141 "g_tBuffF" + Decorate 9(g_tTex1di1) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 28 + MemberDecorate 15($Global) 4 Offset 32 + MemberDecorate 15($Global) 5 Offset 36 + MemberDecorate 15($Global) 6 Offset 40 + MemberDecorate 15($Global) 7 Offset 48 + MemberDecorate 15($Global) 8 Offset 60 + MemberDecorate 15($Global) 9 Offset 64 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 115(g_tTex1du1) DescriptorSet 0 + Decorate 211(g_tTex2di1) DescriptorSet 0 + Decorate 302(g_tTex2du1) DescriptorSet 0 + Decorate 393(g_tTex3di1) DescriptorSet 0 + Decorate 484(g_tTex3du1) DescriptorSet 0 + Decorate 575(g_tTex1di1a) DescriptorSet 0 + Decorate 664(g_tTex1du1a) DescriptorSet 0 + Decorate 925(g_tBuffI) DescriptorSet 0 + Decorate 1014(g_tBuffU) DescriptorSet 0 + Decorate 1111(Color) Location 0 + Decorate 1117(g_sSamp) DescriptorSet 0 + Decorate 1120(g_tTex1df1) DescriptorSet 0 + Decorate 1123(g_tTex2df1) DescriptorSet 0 + Decorate 1126(g_tTex3df1) DescriptorSet 0 + Decorate 1129(g_tTex1df1a) DescriptorSet 0 + Decorate 1132(g_tTex2df1a) DescriptorSet 0 + Decorate 1135(g_tTex2di1a) DescriptorSet 0 + Decorate 1138(g_tTex2du1a) DescriptorSet 0 + Decorate 1141(g_tBuffF) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeImage 6(int) 1D nonsampled format:R32i + 8: TypePointer UniformConstant 7 + 9(g_tTex1di1): 8(ptr) Variable UniformConstant + 10: TypeInt 32 0 + 11: TypeVector 10(int) 2 + 12: TypeVector 10(int) 3 + 13: TypeVector 6(int) 2 + 14: TypeVector 6(int) 3 + 15($Global): TypeStruct 10(int) 11(ivec2) 12(ivec3) 10(int) 10(int) 6(int) 13(ivec2) 14(ivec3) 6(int) 6(int) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 6(int) Constant 5 + 19: TypePointer Uniform 6(int) + 22: 6(int) Constant 8 + 25: 10(int) Constant 0 + 26: TypePointer Image 6(int) + 28: 10(int) Constant 1 + 30: TypePointer Function 6(int) + 54: 6(int) Constant 9 + 113: TypeImage 10(int) 1D nonsampled format:R32ui + 114: TypePointer UniformConstant 113 + 115(g_tTex1du1): 114(ptr) Variable UniformConstant + 116: 6(int) Constant 0 + 117: TypePointer Uniform 10(int) + 122: TypePointer Image 10(int) + 125: TypePointer Function 10(int) + 147: 6(int) Constant 3 + 150: 6(int) Constant 4 + 209: TypeImage 6(int) 2D nonsampled format:R32i + 210: TypePointer UniformConstant 209 + 211(g_tTex2di1): 210(ptr) Variable UniformConstant + 212: 6(int) Constant 6 + 213: TypePointer Uniform 13(ivec2) + 300: TypeImage 10(int) 2D nonsampled format:R32ui + 301: TypePointer UniformConstant 300 + 302(g_tTex2du1): 301(ptr) Variable UniformConstant + 303: 6(int) Constant 1 + 304: TypePointer Uniform 11(ivec2) + 391: TypeImage 6(int) 3D nonsampled format:R32i + 392: TypePointer UniformConstant 391 + 393(g_tTex3di1): 392(ptr) Variable UniformConstant + 394: 6(int) Constant 7 + 395: TypePointer Uniform 14(ivec3) + 482: TypeImage 10(int) 3D nonsampled format:R32ui + 483: TypePointer UniformConstant 482 + 484(g_tTex3du1): 483(ptr) Variable UniformConstant + 485: 6(int) Constant 2 + 486: TypePointer Uniform 12(ivec3) + 573: TypeImage 6(int) 1D array nonsampled format:R32i + 574: TypePointer UniformConstant 573 +575(g_tTex1di1a): 574(ptr) Variable UniformConstant + 662: TypeImage 10(int) 1D array nonsampled format:R32ui + 663: TypePointer UniformConstant 662 +664(g_tTex1du1a): 663(ptr) Variable UniformConstant + 923: TypeImage 6(int) Buffer nonsampled format:R32i + 924: TypePointer UniformConstant 923 + 925(g_tBuffI): 924(ptr) Variable UniformConstant + 1012: TypeImage 10(int) Buffer nonsampled format:R32ui + 1013: TypePointer UniformConstant 1012 + 1014(g_tBuffU): 1013(ptr) Variable UniformConstant + 1101: TypeFloat 32 + 1102: TypeVector 1101(float) 4 + 1103(PS_OUTPUT): TypeStruct 1102(fvec4) + 1104: TypePointer Function 1103(PS_OUTPUT) + 1106: 1101(float) Constant 1065353216 + 1107: 1102(fvec4) ConstantComposite 1106 1106 1106 1106 + 1108: TypePointer Function 1102(fvec4) + 1110: TypePointer Output 1102(fvec4) + 1111(Color): 1110(ptr) Variable Output + 1115: TypeSampler + 1116: TypePointer UniformConstant 1115 + 1117(g_sSamp): 1116(ptr) Variable UniformConstant + 1118: TypeImage 1101(float) 1D nonsampled format:R32f + 1119: TypePointer UniformConstant 1118 +1120(g_tTex1df1): 1119(ptr) Variable UniformConstant + 1121: TypeImage 1101(float) 2D nonsampled format:R32f + 1122: TypePointer UniformConstant 1121 +1123(g_tTex2df1): 1122(ptr) Variable UniformConstant + 1124: TypeImage 1101(float) 3D nonsampled format:R32f + 1125: TypePointer UniformConstant 1124 +1126(g_tTex3df1): 1125(ptr) Variable UniformConstant + 1127: TypeImage 1101(float) 1D array nonsampled format:R32f + 1128: TypePointer UniformConstant 1127 +1129(g_tTex1df1a): 1128(ptr) Variable UniformConstant + 1130: TypeImage 1101(float) 2D array nonsampled format:R32f + 1131: TypePointer UniformConstant 1130 +1132(g_tTex2df1a): 1131(ptr) Variable UniformConstant + 1133: TypeImage 6(int) 2D array nonsampled format:R32i + 1134: TypePointer UniformConstant 1133 +1135(g_tTex2di1a): 1134(ptr) Variable UniformConstant + 1136: TypeImage 10(int) 2D array nonsampled format:R32ui + 1137: TypePointer UniformConstant 1136 +1138(g_tTex2du1a): 1137(ptr) Variable UniformConstant + 1139: TypeImage 1101(float) Buffer nonsampled format:R32f + 1140: TypePointer UniformConstant 1139 + 1141(g_tBuffF): 1140(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 31(out_i1): 30(ptr) Variable Function + 126(out_u1): 125(ptr) Variable Function + 1105(psout): 1104(ptr) Variable Function + 20: 19(ptr) AccessChain 17 18 + 21: 6(int) Load 20 + 23: 19(ptr) AccessChain 17 22 + 24: 6(int) Load 23 + 27: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 21 25 + 29: 6(int) AtomicIAdd 27 28 25 24 + 32: 19(ptr) AccessChain 17 18 + 33: 6(int) Load 32 + 34: 19(ptr) AccessChain 17 18 + 35: 6(int) Load 34 + 36: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 33 25 + 37: 6(int) AtomicIAdd 36 28 25 35 + Store 31(out_i1) 37 + 38: 19(ptr) AccessChain 17 18 + 39: 6(int) Load 38 + 40: 19(ptr) AccessChain 17 22 + 41: 6(int) Load 40 + 42: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 39 25 + 43: 6(int) AtomicAnd 42 28 25 41 + 44: 19(ptr) AccessChain 17 18 + 45: 6(int) Load 44 + 46: 19(ptr) AccessChain 17 18 + 47: 6(int) Load 46 + 48: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 45 25 + 49: 6(int) AtomicAnd 48 28 25 47 + Store 31(out_i1) 49 + 50: 19(ptr) AccessChain 17 18 + 51: 6(int) Load 50 + 52: 19(ptr) AccessChain 17 22 + 53: 6(int) Load 52 + 55: 19(ptr) AccessChain 17 54 + 56: 6(int) Load 55 + 57: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 51 25 + 58: 6(int) AtomicCompareExchange 57 28 25 25 56 53 + Store 31(out_i1) 58 + 59: 19(ptr) AccessChain 17 18 + 60: 6(int) Load 59 + 61: 19(ptr) AccessChain 17 18 + 62: 6(int) Load 61 + 63: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 60 25 + 64: 6(int) AtomicExchange 63 28 25 62 + Store 31(out_i1) 64 + 65: 19(ptr) AccessChain 17 18 + 66: 6(int) Load 65 + 67: 19(ptr) AccessChain 17 22 + 68: 6(int) Load 67 + 69: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 66 25 + 70: 6(int) AtomicSMax 69 28 25 68 + 71: 19(ptr) AccessChain 17 18 + 72: 6(int) Load 71 + 73: 19(ptr) AccessChain 17 18 + 74: 6(int) Load 73 + 75: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 72 25 + 76: 6(int) AtomicSMax 75 28 25 74 + Store 31(out_i1) 76 + 77: 19(ptr) AccessChain 17 18 + 78: 6(int) Load 77 + 79: 19(ptr) AccessChain 17 22 + 80: 6(int) Load 79 + 81: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 78 25 + 82: 6(int) AtomicSMin 81 28 25 80 + 83: 19(ptr) AccessChain 17 18 + 84: 6(int) Load 83 + 85: 19(ptr) AccessChain 17 18 + 86: 6(int) Load 85 + 87: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 84 25 + 88: 6(int) AtomicSMin 87 28 25 86 + Store 31(out_i1) 88 + 89: 19(ptr) AccessChain 17 18 + 90: 6(int) Load 89 + 91: 19(ptr) AccessChain 17 22 + 92: 6(int) Load 91 + 93: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 90 25 + 94: 6(int) AtomicOr 93 28 25 92 + 95: 19(ptr) AccessChain 17 18 + 96: 6(int) Load 95 + 97: 19(ptr) AccessChain 17 18 + 98: 6(int) Load 97 + 99: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 96 25 + 100: 6(int) AtomicOr 99 28 25 98 + Store 31(out_i1) 100 + 101: 19(ptr) AccessChain 17 18 + 102: 6(int) Load 101 + 103: 19(ptr) AccessChain 17 22 + 104: 6(int) Load 103 + 105: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 102 25 + 106: 6(int) AtomicXor 105 28 25 104 + 107: 19(ptr) AccessChain 17 18 + 108: 6(int) Load 107 + 109: 19(ptr) AccessChain 17 18 + 110: 6(int) Load 109 + 111: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 108 25 + 112: 6(int) AtomicXor 111 28 25 110 + Store 31(out_i1) 112 + 118: 117(ptr) AccessChain 17 116 + 119: 10(int) Load 118 + 120: 117(ptr) AccessChain 17 116 + 121: 10(int) Load 120 + 123: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 119 25 + 124: 10(int) AtomicIAdd 123 28 25 121 + 127: 117(ptr) AccessChain 17 116 + 128: 10(int) Load 127 + 129: 117(ptr) AccessChain 17 116 + 130: 10(int) Load 129 + 131: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 128 25 + 132: 10(int) AtomicIAdd 131 28 25 130 + Store 126(out_u1) 132 + 133: 117(ptr) AccessChain 17 116 + 134: 10(int) Load 133 + 135: 117(ptr) AccessChain 17 116 + 136: 10(int) Load 135 + 137: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 134 25 + 138: 10(int) AtomicAnd 137 28 25 136 + 139: 117(ptr) AccessChain 17 116 + 140: 10(int) Load 139 + 141: 117(ptr) AccessChain 17 116 + 142: 10(int) Load 141 + 143: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 140 25 + 144: 10(int) AtomicAnd 143 28 25 142 + Store 126(out_u1) 144 + 145: 117(ptr) AccessChain 17 116 + 146: 10(int) Load 145 + 148: 117(ptr) AccessChain 17 147 + 149: 10(int) Load 148 + 151: 117(ptr) AccessChain 17 150 + 152: 10(int) Load 151 + 153: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 146 25 + 154: 10(int) AtomicCompareExchange 153 28 25 25 152 149 + Store 126(out_u1) 154 + 155: 117(ptr) AccessChain 17 116 + 156: 10(int) Load 155 + 157: 117(ptr) AccessChain 17 116 + 158: 10(int) Load 157 + 159: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 156 25 + 160: 10(int) AtomicExchange 159 28 25 158 + Store 126(out_u1) 160 + 161: 117(ptr) AccessChain 17 116 + 162: 10(int) Load 161 + 163: 117(ptr) AccessChain 17 116 + 164: 10(int) Load 163 + 165: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 162 25 + 166: 10(int) AtomicUMax 165 28 25 164 + 167: 117(ptr) AccessChain 17 116 + 168: 10(int) Load 167 + 169: 117(ptr) AccessChain 17 116 + 170: 10(int) Load 169 + 171: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 168 25 + 172: 10(int) AtomicUMax 171 28 25 170 + Store 126(out_u1) 172 + 173: 117(ptr) AccessChain 17 116 + 174: 10(int) Load 173 + 175: 117(ptr) AccessChain 17 116 + 176: 10(int) Load 175 + 177: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 174 25 + 178: 10(int) AtomicUMin 177 28 25 176 + 179: 117(ptr) AccessChain 17 116 + 180: 10(int) Load 179 + 181: 117(ptr) AccessChain 17 116 + 182: 10(int) Load 181 + 183: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 180 25 + 184: 10(int) AtomicUMin 183 28 25 182 + Store 126(out_u1) 184 + 185: 117(ptr) AccessChain 17 116 + 186: 10(int) Load 185 + 187: 117(ptr) AccessChain 17 116 + 188: 10(int) Load 187 + 189: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 186 25 + 190: 10(int) AtomicOr 189 28 25 188 + 191: 117(ptr) AccessChain 17 116 + 192: 10(int) Load 191 + 193: 117(ptr) AccessChain 17 116 + 194: 10(int) Load 193 + 195: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 192 25 + 196: 10(int) AtomicOr 195 28 25 194 + Store 126(out_u1) 196 + 197: 117(ptr) AccessChain 17 116 + 198: 10(int) Load 197 + 199: 117(ptr) AccessChain 17 116 + 200: 10(int) Load 199 + 201: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 198 25 + 202: 10(int) AtomicXor 201 28 25 200 + 203: 117(ptr) AccessChain 17 116 + 204: 10(int) Load 203 + 205: 117(ptr) AccessChain 17 116 + 206: 10(int) Load 205 + 207: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 204 25 + 208: 10(int) AtomicXor 207 28 25 206 + Store 126(out_u1) 208 + 214: 213(ptr) AccessChain 17 212 + 215: 13(ivec2) Load 214 + 216: 19(ptr) AccessChain 17 22 + 217: 6(int) Load 216 + 218: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 215 25 + 219: 6(int) AtomicIAdd 218 28 25 217 + 220: 213(ptr) AccessChain 17 212 + 221: 13(ivec2) Load 220 + 222: 19(ptr) AccessChain 17 18 + 223: 6(int) Load 222 + 224: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 221 25 + 225: 6(int) AtomicIAdd 224 28 25 223 + Store 31(out_i1) 225 + 226: 213(ptr) AccessChain 17 212 + 227: 13(ivec2) Load 226 + 228: 19(ptr) AccessChain 17 22 + 229: 6(int) Load 228 + 230: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 227 25 + 231: 6(int) AtomicAnd 230 28 25 229 + 232: 213(ptr) AccessChain 17 212 + 233: 13(ivec2) Load 232 + 234: 19(ptr) AccessChain 17 18 + 235: 6(int) Load 234 + 236: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 233 25 + 237: 6(int) AtomicAnd 236 28 25 235 + Store 31(out_i1) 237 + 238: 213(ptr) AccessChain 17 212 + 239: 13(ivec2) Load 238 + 240: 19(ptr) AccessChain 17 22 + 241: 6(int) Load 240 + 242: 19(ptr) AccessChain 17 54 + 243: 6(int) Load 242 + 244: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 239 25 + 245: 6(int) AtomicCompareExchange 244 28 25 25 243 241 + Store 31(out_i1) 245 + 246: 213(ptr) AccessChain 17 212 + 247: 13(ivec2) Load 246 + 248: 19(ptr) AccessChain 17 18 + 249: 6(int) Load 248 + 250: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 247 25 + 251: 6(int) AtomicExchange 250 28 25 249 + Store 31(out_i1) 251 + 252: 213(ptr) AccessChain 17 212 + 253: 13(ivec2) Load 252 + 254: 19(ptr) AccessChain 17 22 + 255: 6(int) Load 254 + 256: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 253 25 + 257: 6(int) AtomicSMax 256 28 25 255 + 258: 213(ptr) AccessChain 17 212 + 259: 13(ivec2) Load 258 + 260: 19(ptr) AccessChain 17 18 + 261: 6(int) Load 260 + 262: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 259 25 + 263: 6(int) AtomicSMax 262 28 25 261 + Store 31(out_i1) 263 + 264: 213(ptr) AccessChain 17 212 + 265: 13(ivec2) Load 264 + 266: 19(ptr) AccessChain 17 22 + 267: 6(int) Load 266 + 268: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 265 25 + 269: 6(int) AtomicSMin 268 28 25 267 + 270: 213(ptr) AccessChain 17 212 + 271: 13(ivec2) Load 270 + 272: 19(ptr) AccessChain 17 18 + 273: 6(int) Load 272 + 274: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 271 25 + 275: 6(int) AtomicSMin 274 28 25 273 + Store 31(out_i1) 275 + 276: 213(ptr) AccessChain 17 212 + 277: 13(ivec2) Load 276 + 278: 19(ptr) AccessChain 17 22 + 279: 6(int) Load 278 + 280: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 277 25 + 281: 6(int) AtomicOr 280 28 25 279 + 282: 213(ptr) AccessChain 17 212 + 283: 13(ivec2) Load 282 + 284: 19(ptr) AccessChain 17 18 + 285: 6(int) Load 284 + 286: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 283 25 + 287: 6(int) AtomicOr 286 28 25 285 + Store 31(out_i1) 287 + 288: 213(ptr) AccessChain 17 212 + 289: 13(ivec2) Load 288 + 290: 19(ptr) AccessChain 17 22 + 291: 6(int) Load 290 + 292: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 289 25 + 293: 6(int) AtomicXor 292 28 25 291 + 294: 213(ptr) AccessChain 17 212 + 295: 13(ivec2) Load 294 + 296: 19(ptr) AccessChain 17 18 + 297: 6(int) Load 296 + 298: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 295 25 + 299: 6(int) AtomicXor 298 28 25 297 + Store 31(out_i1) 299 + 305: 304(ptr) AccessChain 17 303 + 306: 11(ivec2) Load 305 + 307: 117(ptr) AccessChain 17 116 + 308: 10(int) Load 307 + 309: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 306 25 + 310: 10(int) AtomicIAdd 309 28 25 308 + 311: 304(ptr) AccessChain 17 303 + 312: 11(ivec2) Load 311 + 313: 117(ptr) AccessChain 17 116 + 314: 10(int) Load 313 + 315: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 312 25 + 316: 10(int) AtomicIAdd 315 28 25 314 + Store 126(out_u1) 316 + 317: 304(ptr) AccessChain 17 303 + 318: 11(ivec2) Load 317 + 319: 117(ptr) AccessChain 17 116 + 320: 10(int) Load 319 + 321: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 318 25 + 322: 10(int) AtomicAnd 321 28 25 320 + 323: 304(ptr) AccessChain 17 303 + 324: 11(ivec2) Load 323 + 325: 117(ptr) AccessChain 17 116 + 326: 10(int) Load 325 + 327: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 324 25 + 328: 10(int) AtomicAnd 327 28 25 326 + Store 126(out_u1) 328 + 329: 304(ptr) AccessChain 17 303 + 330: 11(ivec2) Load 329 + 331: 117(ptr) AccessChain 17 147 + 332: 10(int) Load 331 + 333: 117(ptr) AccessChain 17 150 + 334: 10(int) Load 333 + 335: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 330 25 + 336: 10(int) AtomicCompareExchange 335 28 25 25 334 332 + Store 126(out_u1) 336 + 337: 304(ptr) AccessChain 17 303 + 338: 11(ivec2) Load 337 + 339: 117(ptr) AccessChain 17 116 + 340: 10(int) Load 339 + 341: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 338 25 + 342: 10(int) AtomicExchange 341 28 25 340 + Store 126(out_u1) 342 + 343: 304(ptr) AccessChain 17 303 + 344: 11(ivec2) Load 343 + 345: 117(ptr) AccessChain 17 116 + 346: 10(int) Load 345 + 347: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 344 25 + 348: 10(int) AtomicUMax 347 28 25 346 + 349: 304(ptr) AccessChain 17 303 + 350: 11(ivec2) Load 349 + 351: 117(ptr) AccessChain 17 116 + 352: 10(int) Load 351 + 353: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 350 25 + 354: 10(int) AtomicUMax 353 28 25 352 + Store 126(out_u1) 354 + 355: 304(ptr) AccessChain 17 303 + 356: 11(ivec2) Load 355 + 357: 117(ptr) AccessChain 17 116 + 358: 10(int) Load 357 + 359: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 356 25 + 360: 10(int) AtomicUMin 359 28 25 358 + 361: 304(ptr) AccessChain 17 303 + 362: 11(ivec2) Load 361 + 363: 117(ptr) AccessChain 17 116 + 364: 10(int) Load 363 + 365: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 362 25 + 366: 10(int) AtomicUMin 365 28 25 364 + Store 126(out_u1) 366 + 367: 304(ptr) AccessChain 17 303 + 368: 11(ivec2) Load 367 + 369: 117(ptr) AccessChain 17 116 + 370: 10(int) Load 369 + 371: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 368 25 + 372: 10(int) AtomicOr 371 28 25 370 + 373: 304(ptr) AccessChain 17 303 + 374: 11(ivec2) Load 373 + 375: 117(ptr) AccessChain 17 116 + 376: 10(int) Load 375 + 377: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 374 25 + 378: 10(int) AtomicOr 377 28 25 376 + Store 126(out_u1) 378 + 379: 304(ptr) AccessChain 17 303 + 380: 11(ivec2) Load 379 + 381: 117(ptr) AccessChain 17 116 + 382: 10(int) Load 381 + 383: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 380 25 + 384: 10(int) AtomicXor 383 28 25 382 + 385: 304(ptr) AccessChain 17 303 + 386: 11(ivec2) Load 385 + 387: 117(ptr) AccessChain 17 116 + 388: 10(int) Load 387 + 389: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 386 25 + 390: 10(int) AtomicXor 389 28 25 388 + Store 126(out_u1) 390 + 396: 395(ptr) AccessChain 17 394 + 397: 14(ivec3) Load 396 + 398: 19(ptr) AccessChain 17 22 + 399: 6(int) Load 398 + 400: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 397 25 + 401: 6(int) AtomicIAdd 400 28 25 399 + 402: 395(ptr) AccessChain 17 394 + 403: 14(ivec3) Load 402 + 404: 19(ptr) AccessChain 17 18 + 405: 6(int) Load 404 + 406: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 403 25 + 407: 6(int) AtomicIAdd 406 28 25 405 + Store 31(out_i1) 407 + 408: 395(ptr) AccessChain 17 394 + 409: 14(ivec3) Load 408 + 410: 19(ptr) AccessChain 17 22 + 411: 6(int) Load 410 + 412: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 409 25 + 413: 6(int) AtomicAnd 412 28 25 411 + 414: 395(ptr) AccessChain 17 394 + 415: 14(ivec3) Load 414 + 416: 19(ptr) AccessChain 17 18 + 417: 6(int) Load 416 + 418: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 415 25 + 419: 6(int) AtomicAnd 418 28 25 417 + Store 31(out_i1) 419 + 420: 395(ptr) AccessChain 17 394 + 421: 14(ivec3) Load 420 + 422: 19(ptr) AccessChain 17 22 + 423: 6(int) Load 422 + 424: 19(ptr) AccessChain 17 54 + 425: 6(int) Load 424 + 426: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 421 25 + 427: 6(int) AtomicCompareExchange 426 28 25 25 425 423 + Store 31(out_i1) 427 + 428: 395(ptr) AccessChain 17 394 + 429: 14(ivec3) Load 428 + 430: 19(ptr) AccessChain 17 18 + 431: 6(int) Load 430 + 432: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 429 25 + 433: 6(int) AtomicExchange 432 28 25 431 + Store 31(out_i1) 433 + 434: 395(ptr) AccessChain 17 394 + 435: 14(ivec3) Load 434 + 436: 19(ptr) AccessChain 17 22 + 437: 6(int) Load 436 + 438: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 435 25 + 439: 6(int) AtomicSMax 438 28 25 437 + 440: 395(ptr) AccessChain 17 394 + 441: 14(ivec3) Load 440 + 442: 19(ptr) AccessChain 17 18 + 443: 6(int) Load 442 + 444: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 441 25 + 445: 6(int) AtomicSMax 444 28 25 443 + Store 31(out_i1) 445 + 446: 395(ptr) AccessChain 17 394 + 447: 14(ivec3) Load 446 + 448: 19(ptr) AccessChain 17 22 + 449: 6(int) Load 448 + 450: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 447 25 + 451: 6(int) AtomicSMin 450 28 25 449 + 452: 395(ptr) AccessChain 17 394 + 453: 14(ivec3) Load 452 + 454: 19(ptr) AccessChain 17 18 + 455: 6(int) Load 454 + 456: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 453 25 + 457: 6(int) AtomicSMin 456 28 25 455 + Store 31(out_i1) 457 + 458: 395(ptr) AccessChain 17 394 + 459: 14(ivec3) Load 458 + 460: 19(ptr) AccessChain 17 22 + 461: 6(int) Load 460 + 462: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 459 25 + 463: 6(int) AtomicOr 462 28 25 461 + 464: 395(ptr) AccessChain 17 394 + 465: 14(ivec3) Load 464 + 466: 19(ptr) AccessChain 17 18 + 467: 6(int) Load 466 + 468: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 465 25 + 469: 6(int) AtomicOr 468 28 25 467 + Store 31(out_i1) 469 + 470: 395(ptr) AccessChain 17 394 + 471: 14(ivec3) Load 470 + 472: 19(ptr) AccessChain 17 22 + 473: 6(int) Load 472 + 474: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 471 25 + 475: 6(int) AtomicXor 474 28 25 473 + 476: 395(ptr) AccessChain 17 394 + 477: 14(ivec3) Load 476 + 478: 19(ptr) AccessChain 17 18 + 479: 6(int) Load 478 + 480: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 477 25 + 481: 6(int) AtomicXor 480 28 25 479 + Store 31(out_i1) 481 + 487: 486(ptr) AccessChain 17 485 + 488: 12(ivec3) Load 487 + 489: 117(ptr) AccessChain 17 116 + 490: 10(int) Load 489 + 491: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 488 25 + 492: 10(int) AtomicIAdd 491 28 25 490 + 493: 486(ptr) AccessChain 17 485 + 494: 12(ivec3) Load 493 + 495: 117(ptr) AccessChain 17 116 + 496: 10(int) Load 495 + 497: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 494 25 + 498: 10(int) AtomicIAdd 497 28 25 496 + Store 126(out_u1) 498 + 499: 486(ptr) AccessChain 17 485 + 500: 12(ivec3) Load 499 + 501: 117(ptr) AccessChain 17 116 + 502: 10(int) Load 501 + 503: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 500 25 + 504: 10(int) AtomicAnd 503 28 25 502 + 505: 486(ptr) AccessChain 17 485 + 506: 12(ivec3) Load 505 + 507: 117(ptr) AccessChain 17 116 + 508: 10(int) Load 507 + 509: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 506 25 + 510: 10(int) AtomicAnd 509 28 25 508 + Store 126(out_u1) 510 + 511: 486(ptr) AccessChain 17 485 + 512: 12(ivec3) Load 511 + 513: 117(ptr) AccessChain 17 147 + 514: 10(int) Load 513 + 515: 117(ptr) AccessChain 17 150 + 516: 10(int) Load 515 + 517: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 512 25 + 518: 10(int) AtomicCompareExchange 517 28 25 25 516 514 + Store 126(out_u1) 518 + 519: 486(ptr) AccessChain 17 485 + 520: 12(ivec3) Load 519 + 521: 117(ptr) AccessChain 17 116 + 522: 10(int) Load 521 + 523: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 520 25 + 524: 10(int) AtomicExchange 523 28 25 522 + Store 126(out_u1) 524 + 525: 486(ptr) AccessChain 17 485 + 526: 12(ivec3) Load 525 + 527: 117(ptr) AccessChain 17 116 + 528: 10(int) Load 527 + 529: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 526 25 + 530: 10(int) AtomicUMax 529 28 25 528 + 531: 486(ptr) AccessChain 17 485 + 532: 12(ivec3) Load 531 + 533: 117(ptr) AccessChain 17 116 + 534: 10(int) Load 533 + 535: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 532 25 + 536: 10(int) AtomicUMax 535 28 25 534 + Store 126(out_u1) 536 + 537: 486(ptr) AccessChain 17 485 + 538: 12(ivec3) Load 537 + 539: 117(ptr) AccessChain 17 116 + 540: 10(int) Load 539 + 541: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 538 25 + 542: 10(int) AtomicUMin 541 28 25 540 + 543: 486(ptr) AccessChain 17 485 + 544: 12(ivec3) Load 543 + 545: 117(ptr) AccessChain 17 116 + 546: 10(int) Load 545 + 547: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 544 25 + 548: 10(int) AtomicUMin 547 28 25 546 + Store 126(out_u1) 548 + 549: 486(ptr) AccessChain 17 485 + 550: 12(ivec3) Load 549 + 551: 117(ptr) AccessChain 17 116 + 552: 10(int) Load 551 + 553: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 550 25 + 554: 10(int) AtomicOr 553 28 25 552 + 555: 486(ptr) AccessChain 17 485 + 556: 12(ivec3) Load 555 + 557: 117(ptr) AccessChain 17 116 + 558: 10(int) Load 557 + 559: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 556 25 + 560: 10(int) AtomicOr 559 28 25 558 + Store 126(out_u1) 560 + 561: 486(ptr) AccessChain 17 485 + 562: 12(ivec3) Load 561 + 563: 117(ptr) AccessChain 17 116 + 564: 10(int) Load 563 + 565: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 562 25 + 566: 10(int) AtomicXor 565 28 25 564 + 567: 486(ptr) AccessChain 17 485 + 568: 12(ivec3) Load 567 + 569: 117(ptr) AccessChain 17 116 + 570: 10(int) Load 569 + 571: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 568 25 + 572: 10(int) AtomicXor 571 28 25 570 + Store 126(out_u1) 572 + 576: 213(ptr) AccessChain 17 212 + 577: 13(ivec2) Load 576 + 578: 19(ptr) AccessChain 17 22 + 579: 6(int) Load 578 + 580: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 577 25 + 581: 6(int) AtomicIAdd 580 28 25 579 + 582: 213(ptr) AccessChain 17 212 + 583: 13(ivec2) Load 582 + 584: 19(ptr) AccessChain 17 18 + 585: 6(int) Load 584 + 586: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 583 25 + 587: 6(int) AtomicIAdd 586 28 25 585 + Store 31(out_i1) 587 + 588: 213(ptr) AccessChain 17 212 + 589: 13(ivec2) Load 588 + 590: 19(ptr) AccessChain 17 22 + 591: 6(int) Load 590 + 592: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 589 25 + 593: 6(int) AtomicAnd 592 28 25 591 + 594: 213(ptr) AccessChain 17 212 + 595: 13(ivec2) Load 594 + 596: 19(ptr) AccessChain 17 18 + 597: 6(int) Load 596 + 598: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 595 25 + 599: 6(int) AtomicAnd 598 28 25 597 + Store 31(out_i1) 599 + 600: 213(ptr) AccessChain 17 212 + 601: 13(ivec2) Load 600 + 602: 19(ptr) AccessChain 17 22 + 603: 6(int) Load 602 + 604: 19(ptr) AccessChain 17 54 + 605: 6(int) Load 604 + 606: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 601 25 + 607: 6(int) AtomicCompareExchange 606 28 25 25 605 603 + Store 31(out_i1) 607 + 608: 213(ptr) AccessChain 17 212 + 609: 13(ivec2) Load 608 + 610: 19(ptr) AccessChain 17 18 + 611: 6(int) Load 610 + 612: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 609 25 + 613: 6(int) AtomicExchange 612 28 25 611 + Store 31(out_i1) 613 + 614: 213(ptr) AccessChain 17 212 + 615: 13(ivec2) Load 614 + 616: 19(ptr) AccessChain 17 22 + 617: 6(int) Load 616 + 618: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 615 25 + 619: 6(int) AtomicSMax 618 28 25 617 + 620: 213(ptr) AccessChain 17 212 + 621: 13(ivec2) Load 620 + 622: 19(ptr) AccessChain 17 18 + 623: 6(int) Load 622 + 624: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 621 25 + 625: 6(int) AtomicSMax 624 28 25 623 + Store 31(out_i1) 625 + 626: 213(ptr) AccessChain 17 212 + 627: 13(ivec2) Load 626 + 628: 19(ptr) AccessChain 17 22 + 629: 6(int) Load 628 + 630: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 627 25 + 631: 6(int) AtomicSMin 630 28 25 629 + 632: 213(ptr) AccessChain 17 212 + 633: 13(ivec2) Load 632 + 634: 19(ptr) AccessChain 17 18 + 635: 6(int) Load 634 + 636: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 633 25 + 637: 6(int) AtomicSMin 636 28 25 635 + Store 31(out_i1) 637 + 638: 213(ptr) AccessChain 17 212 + 639: 13(ivec2) Load 638 + 640: 19(ptr) AccessChain 17 22 + 641: 6(int) Load 640 + 642: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 639 25 + 643: 6(int) AtomicOr 642 28 25 641 + 644: 213(ptr) AccessChain 17 212 + 645: 13(ivec2) Load 644 + 646: 19(ptr) AccessChain 17 18 + 647: 6(int) Load 646 + 648: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 645 25 + 649: 6(int) AtomicOr 648 28 25 647 + Store 31(out_i1) 649 + 650: 213(ptr) AccessChain 17 212 + 651: 13(ivec2) Load 650 + 652: 19(ptr) AccessChain 17 22 + 653: 6(int) Load 652 + 654: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 651 25 + 655: 6(int) AtomicXor 654 28 25 653 + 656: 213(ptr) AccessChain 17 212 + 657: 13(ivec2) Load 656 + 658: 19(ptr) AccessChain 17 18 + 659: 6(int) Load 658 + 660: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 657 25 + 661: 6(int) AtomicXor 660 28 25 659 + Store 31(out_i1) 661 + 665: 304(ptr) AccessChain 17 303 + 666: 11(ivec2) Load 665 + 667: 117(ptr) AccessChain 17 116 + 668: 10(int) Load 667 + 669: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 666 25 + 670: 10(int) AtomicIAdd 669 28 25 668 + 671: 304(ptr) AccessChain 17 303 + 672: 11(ivec2) Load 671 + 673: 117(ptr) AccessChain 17 116 + 674: 10(int) Load 673 + 675: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 672 25 + 676: 10(int) AtomicIAdd 675 28 25 674 + Store 126(out_u1) 676 + 677: 304(ptr) AccessChain 17 303 + 678: 11(ivec2) Load 677 + 679: 117(ptr) AccessChain 17 116 + 680: 10(int) Load 679 + 681: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 678 25 + 682: 10(int) AtomicAnd 681 28 25 680 + 683: 304(ptr) AccessChain 17 303 + 684: 11(ivec2) Load 683 + 685: 117(ptr) AccessChain 17 116 + 686: 10(int) Load 685 + 687: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 684 25 + 688: 10(int) AtomicAnd 687 28 25 686 + Store 126(out_u1) 688 + 689: 304(ptr) AccessChain 17 303 + 690: 11(ivec2) Load 689 + 691: 117(ptr) AccessChain 17 147 + 692: 10(int) Load 691 + 693: 117(ptr) AccessChain 17 150 + 694: 10(int) Load 693 + 695: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 690 25 + 696: 10(int) AtomicCompareExchange 695 28 25 25 694 692 + Store 126(out_u1) 696 + 697: 304(ptr) AccessChain 17 303 + 698: 11(ivec2) Load 697 + 699: 117(ptr) AccessChain 17 116 + 700: 10(int) Load 699 + 701: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 698 25 + 702: 10(int) AtomicExchange 701 28 25 700 + Store 126(out_u1) 702 + 703: 304(ptr) AccessChain 17 303 + 704: 11(ivec2) Load 703 + 705: 117(ptr) AccessChain 17 116 + 706: 10(int) Load 705 + 707: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 704 25 + 708: 10(int) AtomicUMax 707 28 25 706 + 709: 304(ptr) AccessChain 17 303 + 710: 11(ivec2) Load 709 + 711: 117(ptr) AccessChain 17 116 + 712: 10(int) Load 711 + 713: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 710 25 + 714: 10(int) AtomicUMax 713 28 25 712 + Store 126(out_u1) 714 + 715: 304(ptr) AccessChain 17 303 + 716: 11(ivec2) Load 715 + 717: 117(ptr) AccessChain 17 116 + 718: 10(int) Load 717 + 719: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 716 25 + 720: 10(int) AtomicUMin 719 28 25 718 + 721: 304(ptr) AccessChain 17 303 + 722: 11(ivec2) Load 721 + 723: 117(ptr) AccessChain 17 116 + 724: 10(int) Load 723 + 725: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 722 25 + 726: 10(int) AtomicUMin 725 28 25 724 + Store 126(out_u1) 726 + 727: 304(ptr) AccessChain 17 303 + 728: 11(ivec2) Load 727 + 729: 117(ptr) AccessChain 17 116 + 730: 10(int) Load 729 + 731: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 728 25 + 732: 10(int) AtomicOr 731 28 25 730 + 733: 304(ptr) AccessChain 17 303 + 734: 11(ivec2) Load 733 + 735: 117(ptr) AccessChain 17 116 + 736: 10(int) Load 735 + 737: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 734 25 + 738: 10(int) AtomicOr 737 28 25 736 + Store 126(out_u1) 738 + 739: 304(ptr) AccessChain 17 303 + 740: 11(ivec2) Load 739 + 741: 117(ptr) AccessChain 17 116 + 742: 10(int) Load 741 + 743: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 740 25 + 744: 10(int) AtomicXor 743 28 25 742 + 745: 304(ptr) AccessChain 17 303 + 746: 11(ivec2) Load 745 + 747: 117(ptr) AccessChain 17 116 + 748: 10(int) Load 747 + 749: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 746 25 + 750: 10(int) AtomicXor 749 28 25 748 + Store 126(out_u1) 750 + 751: 213(ptr) AccessChain 17 212 + 752: 13(ivec2) Load 751 + 753: 19(ptr) AccessChain 17 22 + 754: 6(int) Load 753 + 755: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 752 25 + 756: 6(int) AtomicIAdd 755 28 25 754 + 757: 213(ptr) AccessChain 17 212 + 758: 13(ivec2) Load 757 + 759: 19(ptr) AccessChain 17 18 + 760: 6(int) Load 759 + 761: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 758 25 + 762: 6(int) AtomicIAdd 761 28 25 760 + Store 31(out_i1) 762 + 763: 213(ptr) AccessChain 17 212 + 764: 13(ivec2) Load 763 + 765: 19(ptr) AccessChain 17 22 + 766: 6(int) Load 765 + 767: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 764 25 + 768: 6(int) AtomicAnd 767 28 25 766 + 769: 213(ptr) AccessChain 17 212 + 770: 13(ivec2) Load 769 + 771: 19(ptr) AccessChain 17 18 + 772: 6(int) Load 771 + 773: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 770 25 + 774: 6(int) AtomicAnd 773 28 25 772 + Store 31(out_i1) 774 + 775: 213(ptr) AccessChain 17 212 + 776: 13(ivec2) Load 775 + 777: 19(ptr) AccessChain 17 22 + 778: 6(int) Load 777 + 779: 19(ptr) AccessChain 17 54 + 780: 6(int) Load 779 + 781: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 776 25 + 782: 6(int) AtomicCompareExchange 781 28 25 25 780 778 + Store 31(out_i1) 782 + 783: 213(ptr) AccessChain 17 212 + 784: 13(ivec2) Load 783 + 785: 19(ptr) AccessChain 17 18 + 786: 6(int) Load 785 + 787: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 784 25 + 788: 6(int) AtomicExchange 787 28 25 786 + Store 31(out_i1) 788 + 789: 213(ptr) AccessChain 17 212 + 790: 13(ivec2) Load 789 + 791: 19(ptr) AccessChain 17 22 + 792: 6(int) Load 791 + 793: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 790 25 + 794: 6(int) AtomicSMax 793 28 25 792 + 795: 213(ptr) AccessChain 17 212 + 796: 13(ivec2) Load 795 + 797: 19(ptr) AccessChain 17 18 + 798: 6(int) Load 797 + 799: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 796 25 + 800: 6(int) AtomicSMax 799 28 25 798 + Store 31(out_i1) 800 + 801: 213(ptr) AccessChain 17 212 + 802: 13(ivec2) Load 801 + 803: 19(ptr) AccessChain 17 22 + 804: 6(int) Load 803 + 805: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 802 25 + 806: 6(int) AtomicSMin 805 28 25 804 + 807: 213(ptr) AccessChain 17 212 + 808: 13(ivec2) Load 807 + 809: 19(ptr) AccessChain 17 18 + 810: 6(int) Load 809 + 811: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 808 25 + 812: 6(int) AtomicSMin 811 28 25 810 + Store 31(out_i1) 812 + 813: 213(ptr) AccessChain 17 212 + 814: 13(ivec2) Load 813 + 815: 19(ptr) AccessChain 17 22 + 816: 6(int) Load 815 + 817: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 814 25 + 818: 6(int) AtomicOr 817 28 25 816 + 819: 213(ptr) AccessChain 17 212 + 820: 13(ivec2) Load 819 + 821: 19(ptr) AccessChain 17 18 + 822: 6(int) Load 821 + 823: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 820 25 + 824: 6(int) AtomicOr 823 28 25 822 + Store 31(out_i1) 824 + 825: 213(ptr) AccessChain 17 212 + 826: 13(ivec2) Load 825 + 827: 19(ptr) AccessChain 17 22 + 828: 6(int) Load 827 + 829: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 826 25 + 830: 6(int) AtomicXor 829 28 25 828 + 831: 213(ptr) AccessChain 17 212 + 832: 13(ivec2) Load 831 + 833: 19(ptr) AccessChain 17 18 + 834: 6(int) Load 833 + 835: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 832 25 + 836: 6(int) AtomicXor 835 28 25 834 + Store 31(out_i1) 836 + 837: 304(ptr) AccessChain 17 303 + 838: 11(ivec2) Load 837 + 839: 117(ptr) AccessChain 17 116 + 840: 10(int) Load 839 + 841: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 838 25 + 842: 10(int) AtomicIAdd 841 28 25 840 + 843: 304(ptr) AccessChain 17 303 + 844: 11(ivec2) Load 843 + 845: 117(ptr) AccessChain 17 116 + 846: 10(int) Load 845 + 847: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 844 25 + 848: 10(int) AtomicIAdd 847 28 25 846 + Store 126(out_u1) 848 + 849: 304(ptr) AccessChain 17 303 + 850: 11(ivec2) Load 849 + 851: 117(ptr) AccessChain 17 116 + 852: 10(int) Load 851 + 853: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 850 25 + 854: 10(int) AtomicAnd 853 28 25 852 + 855: 304(ptr) AccessChain 17 303 + 856: 11(ivec2) Load 855 + 857: 117(ptr) AccessChain 17 116 + 858: 10(int) Load 857 + 859: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 856 25 + 860: 10(int) AtomicAnd 859 28 25 858 + Store 126(out_u1) 860 + 861: 304(ptr) AccessChain 17 303 + 862: 11(ivec2) Load 861 + 863: 117(ptr) AccessChain 17 147 + 864: 10(int) Load 863 + 865: 117(ptr) AccessChain 17 150 + 866: 10(int) Load 865 + 867: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 862 25 + 868: 10(int) AtomicCompareExchange 867 28 25 25 866 864 + Store 126(out_u1) 868 + 869: 304(ptr) AccessChain 17 303 + 870: 11(ivec2) Load 869 + 871: 117(ptr) AccessChain 17 116 + 872: 10(int) Load 871 + 873: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 870 25 + 874: 10(int) AtomicExchange 873 28 25 872 + Store 126(out_u1) 874 + 875: 304(ptr) AccessChain 17 303 + 876: 11(ivec2) Load 875 + 877: 117(ptr) AccessChain 17 116 + 878: 10(int) Load 877 + 879: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 876 25 + 880: 10(int) AtomicUMax 879 28 25 878 + 881: 304(ptr) AccessChain 17 303 + 882: 11(ivec2) Load 881 + 883: 117(ptr) AccessChain 17 116 + 884: 10(int) Load 883 + 885: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 882 25 + 886: 10(int) AtomicUMax 885 28 25 884 + Store 126(out_u1) 886 + 887: 304(ptr) AccessChain 17 303 + 888: 11(ivec2) Load 887 + 889: 117(ptr) AccessChain 17 116 + 890: 10(int) Load 889 + 891: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 888 25 + 892: 10(int) AtomicUMin 891 28 25 890 + 893: 304(ptr) AccessChain 17 303 + 894: 11(ivec2) Load 893 + 895: 117(ptr) AccessChain 17 116 + 896: 10(int) Load 895 + 897: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 894 25 + 898: 10(int) AtomicUMin 897 28 25 896 + Store 126(out_u1) 898 + 899: 304(ptr) AccessChain 17 303 + 900: 11(ivec2) Load 899 + 901: 117(ptr) AccessChain 17 116 + 902: 10(int) Load 901 + 903: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 900 25 + 904: 10(int) AtomicOr 903 28 25 902 + 905: 304(ptr) AccessChain 17 303 + 906: 11(ivec2) Load 905 + 907: 117(ptr) AccessChain 17 116 + 908: 10(int) Load 907 + 909: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 906 25 + 910: 10(int) AtomicOr 909 28 25 908 + Store 126(out_u1) 910 + 911: 304(ptr) AccessChain 17 303 + 912: 11(ivec2) Load 911 + 913: 117(ptr) AccessChain 17 116 + 914: 10(int) Load 913 + 915: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 912 25 + 916: 10(int) AtomicXor 915 28 25 914 + 917: 304(ptr) AccessChain 17 303 + 918: 11(ivec2) Load 917 + 919: 117(ptr) AccessChain 17 116 + 920: 10(int) Load 919 + 921: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 918 25 + 922: 10(int) AtomicXor 921 28 25 920 + Store 126(out_u1) 922 + 926: 19(ptr) AccessChain 17 18 + 927: 6(int) Load 926 + 928: 19(ptr) AccessChain 17 22 + 929: 6(int) Load 928 + 930: 26(ptr) ImageTexelPointer 925(g_tBuffI) 927 25 + 931: 6(int) AtomicIAdd 930 28 25 929 + 932: 19(ptr) AccessChain 17 18 + 933: 6(int) Load 932 + 934: 19(ptr) AccessChain 17 18 + 935: 6(int) Load 934 + 936: 26(ptr) ImageTexelPointer 925(g_tBuffI) 933 25 + 937: 6(int) AtomicIAdd 936 28 25 935 + Store 31(out_i1) 937 + 938: 19(ptr) AccessChain 17 18 + 939: 6(int) Load 938 + 940: 19(ptr) AccessChain 17 22 + 941: 6(int) Load 940 + 942: 26(ptr) ImageTexelPointer 925(g_tBuffI) 939 25 + 943: 6(int) AtomicAnd 942 28 25 941 + 944: 19(ptr) AccessChain 17 18 + 945: 6(int) Load 944 + 946: 19(ptr) AccessChain 17 18 + 947: 6(int) Load 946 + 948: 26(ptr) ImageTexelPointer 925(g_tBuffI) 945 25 + 949: 6(int) AtomicAnd 948 28 25 947 + Store 31(out_i1) 949 + 950: 19(ptr) AccessChain 17 18 + 951: 6(int) Load 950 + 952: 19(ptr) AccessChain 17 22 + 953: 6(int) Load 952 + 954: 19(ptr) AccessChain 17 54 + 955: 6(int) Load 954 + 956: 26(ptr) ImageTexelPointer 925(g_tBuffI) 951 25 + 957: 6(int) AtomicCompareExchange 956 28 25 25 955 953 + Store 31(out_i1) 957 + 958: 19(ptr) AccessChain 17 18 + 959: 6(int) Load 958 + 960: 19(ptr) AccessChain 17 18 + 961: 6(int) Load 960 + 962: 26(ptr) ImageTexelPointer 925(g_tBuffI) 959 25 + 963: 6(int) AtomicExchange 962 28 25 961 + Store 31(out_i1) 963 + 964: 19(ptr) AccessChain 17 18 + 965: 6(int) Load 964 + 966: 19(ptr) AccessChain 17 22 + 967: 6(int) Load 966 + 968: 26(ptr) ImageTexelPointer 925(g_tBuffI) 965 25 + 969: 6(int) AtomicSMax 968 28 25 967 + 970: 19(ptr) AccessChain 17 18 + 971: 6(int) Load 970 + 972: 19(ptr) AccessChain 17 18 + 973: 6(int) Load 972 + 974: 26(ptr) ImageTexelPointer 925(g_tBuffI) 971 25 + 975: 6(int) AtomicSMax 974 28 25 973 + Store 31(out_i1) 975 + 976: 19(ptr) AccessChain 17 18 + 977: 6(int) Load 976 + 978: 19(ptr) AccessChain 17 22 + 979: 6(int) Load 978 + 980: 26(ptr) ImageTexelPointer 925(g_tBuffI) 977 25 + 981: 6(int) AtomicSMin 980 28 25 979 + 982: 19(ptr) AccessChain 17 18 + 983: 6(int) Load 982 + 984: 19(ptr) AccessChain 17 18 + 985: 6(int) Load 984 + 986: 26(ptr) ImageTexelPointer 925(g_tBuffI) 983 25 + 987: 6(int) AtomicSMin 986 28 25 985 + Store 31(out_i1) 987 + 988: 19(ptr) AccessChain 17 18 + 989: 6(int) Load 988 + 990: 19(ptr) AccessChain 17 22 + 991: 6(int) Load 990 + 992: 26(ptr) ImageTexelPointer 925(g_tBuffI) 989 25 + 993: 6(int) AtomicOr 992 28 25 991 + 994: 19(ptr) AccessChain 17 18 + 995: 6(int) Load 994 + 996: 19(ptr) AccessChain 17 18 + 997: 6(int) Load 996 + 998: 26(ptr) ImageTexelPointer 925(g_tBuffI) 995 25 + 999: 6(int) AtomicOr 998 28 25 997 + Store 31(out_i1) 999 + 1000: 19(ptr) AccessChain 17 18 + 1001: 6(int) Load 1000 + 1002: 19(ptr) AccessChain 17 22 + 1003: 6(int) Load 1002 + 1004: 26(ptr) ImageTexelPointer 925(g_tBuffI) 1001 25 + 1005: 6(int) AtomicXor 1004 28 25 1003 + 1006: 19(ptr) AccessChain 17 18 + 1007: 6(int) Load 1006 + 1008: 19(ptr) AccessChain 17 18 + 1009: 6(int) Load 1008 + 1010: 26(ptr) ImageTexelPointer 925(g_tBuffI) 1007 25 + 1011: 6(int) AtomicXor 1010 28 25 1009 + Store 31(out_i1) 1011 + 1015: 117(ptr) AccessChain 17 116 + 1016: 10(int) Load 1015 + 1017: 117(ptr) AccessChain 17 116 + 1018: 10(int) Load 1017 + 1019: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1016 25 + 1020: 10(int) AtomicIAdd 1019 28 25 1018 + 1021: 117(ptr) AccessChain 17 116 + 1022: 10(int) Load 1021 + 1023: 117(ptr) AccessChain 17 116 + 1024: 10(int) Load 1023 + 1025: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1022 25 + 1026: 10(int) AtomicIAdd 1025 28 25 1024 + Store 126(out_u1) 1026 + 1027: 117(ptr) AccessChain 17 116 + 1028: 10(int) Load 1027 + 1029: 117(ptr) AccessChain 17 116 + 1030: 10(int) Load 1029 + 1031: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1028 25 + 1032: 10(int) AtomicAnd 1031 28 25 1030 + 1033: 117(ptr) AccessChain 17 116 + 1034: 10(int) Load 1033 + 1035: 117(ptr) AccessChain 17 116 + 1036: 10(int) Load 1035 + 1037: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1034 25 + 1038: 10(int) AtomicAnd 1037 28 25 1036 + Store 126(out_u1) 1038 + 1039: 117(ptr) AccessChain 17 116 + 1040: 10(int) Load 1039 + 1041: 117(ptr) AccessChain 17 147 + 1042: 10(int) Load 1041 + 1043: 117(ptr) AccessChain 17 150 + 1044: 10(int) Load 1043 + 1045: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1040 25 + 1046: 10(int) AtomicCompareExchange 1045 28 25 25 1044 1042 + Store 126(out_u1) 1046 + 1047: 117(ptr) AccessChain 17 116 + 1048: 10(int) Load 1047 + 1049: 117(ptr) AccessChain 17 116 + 1050: 10(int) Load 1049 + 1051: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1048 25 + 1052: 10(int) AtomicExchange 1051 28 25 1050 + Store 126(out_u1) 1052 + 1053: 117(ptr) AccessChain 17 116 + 1054: 10(int) Load 1053 + 1055: 117(ptr) AccessChain 17 116 + 1056: 10(int) Load 1055 + 1057: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1054 25 + 1058: 10(int) AtomicUMax 1057 28 25 1056 + 1059: 117(ptr) AccessChain 17 116 + 1060: 10(int) Load 1059 + 1061: 117(ptr) AccessChain 17 116 + 1062: 10(int) Load 1061 + 1063: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1060 25 + 1064: 10(int) AtomicUMax 1063 28 25 1062 + Store 126(out_u1) 1064 + 1065: 117(ptr) AccessChain 17 116 + 1066: 10(int) Load 1065 + 1067: 117(ptr) AccessChain 17 116 + 1068: 10(int) Load 1067 + 1069: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1066 25 + 1070: 10(int) AtomicUMin 1069 28 25 1068 + 1071: 117(ptr) AccessChain 17 116 + 1072: 10(int) Load 1071 + 1073: 117(ptr) AccessChain 17 116 + 1074: 10(int) Load 1073 + 1075: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1072 25 + 1076: 10(int) AtomicUMin 1075 28 25 1074 + Store 126(out_u1) 1076 + 1077: 117(ptr) AccessChain 17 116 + 1078: 10(int) Load 1077 + 1079: 117(ptr) AccessChain 17 116 + 1080: 10(int) Load 1079 + 1081: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1078 25 + 1082: 10(int) AtomicOr 1081 28 25 1080 + 1083: 117(ptr) AccessChain 17 116 + 1084: 10(int) Load 1083 + 1085: 117(ptr) AccessChain 17 116 + 1086: 10(int) Load 1085 + 1087: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1084 25 + 1088: 10(int) AtomicOr 1087 28 25 1086 + Store 126(out_u1) 1088 + 1089: 117(ptr) AccessChain 17 116 + 1090: 10(int) Load 1089 + 1091: 117(ptr) AccessChain 17 116 + 1092: 10(int) Load 1091 + 1093: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1090 25 + 1094: 10(int) AtomicXor 1093 28 25 1092 + 1095: 117(ptr) AccessChain 17 116 + 1096: 10(int) Load 1095 + 1097: 117(ptr) AccessChain 17 116 + 1098: 10(int) Load 1097 + 1099: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1096 25 + 1100: 10(int) AtomicXor 1099 28 25 1098 + Store 126(out_u1) 1100 + 1109: 1108(ptr) AccessChain 1105(psout) 116 + Store 1109 1107 + 1112: 1108(ptr) AccessChain 1105(psout) 116 + 1113: 1102(fvec4) Load 1112 + Store 1111(Color) 1113 + Return + FunctionEnd diff --git a/Test/hlsl.rw.atomics.frag b/Test/hlsl.rw.atomics.frag new file mode 100644 index 00000000..930d6501 --- /dev/null +++ b/Test/hlsl.rw.atomics.frag @@ -0,0 +1,244 @@ +SamplerState g_sSamp; + +RWTexture1D g_tTex1df1; +RWTexture1D g_tTex1di1; +RWTexture1D g_tTex1du1; + +RWTexture2D g_tTex2df1; +RWTexture2D g_tTex2di1; +RWTexture2D g_tTex2du1; + +RWTexture3D g_tTex3df1; +RWTexture3D g_tTex3di1; +RWTexture3D g_tTex3du1; + +RWTexture1DArray g_tTex1df1a; +RWTexture1DArray g_tTex1di1a; +RWTexture1DArray g_tTex1du1a; + +RWTexture2DArray g_tTex2df1a; +RWTexture2DArray g_tTex2di1a; +RWTexture2DArray g_tTex2du1a; + +RWBuffer g_tBuffF; +RWBuffer g_tBuffI; +RWBuffer g_tBuffU; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform uint u1; +uniform uint2 u2; +uniform uint3 u3; +uniform uint u1b; +uniform uint u1c; + +uniform int i1; +uniform int2 i2; +uniform int3 i3; +uniform int i1b; +uniform int i1c; + +PS_OUTPUT main() +{ + uint out_u1; + int out_i1; + + // 1D int + InterlockedAdd(g_tTex1di1[i1], i1b); + InterlockedAdd(g_tTex1di1[i1], i1, out_i1); + InterlockedAnd(g_tTex1di1[i1], i1b); + InterlockedAnd(g_tTex1di1[i1], i1, out_i1); + InterlockedCompareExchange(g_tTex1di1[i1], i1b, i1c, out_i1); + InterlockedExchange(g_tTex1di1[i1], i1, out_i1); + InterlockedMax(g_tTex1di1[i1], i1b); + InterlockedMax(g_tTex1di1[i1], i1, out_i1); + InterlockedMin(g_tTex1di1[i1], i1b); + InterlockedMin(g_tTex1di1[i1], i1, out_i1); + InterlockedOr(g_tTex1di1[i1], i1b); + InterlockedOr(g_tTex1di1[i1], i1, out_i1); + InterlockedXor(g_tTex1di1[i1], i1b); + InterlockedXor(g_tTex1di1[i1], i1, out_i1); + + // 1D uint + InterlockedAdd(g_tTex1du1[u1], u1); + InterlockedAdd(g_tTex1du1[u1], u1, out_u1); + InterlockedAnd(g_tTex1du1[u1], u1); + InterlockedAnd(g_tTex1du1[u1], u1, out_u1); + InterlockedCompareExchange(g_tTex1du1[u1], u1b, u1c, out_u1); + InterlockedExchange(g_tTex1du1[u1], u1, out_u1); + InterlockedMax(g_tTex1du1[u1], u1); + InterlockedMax(g_tTex1du1[u1], u1, out_u1); + InterlockedMin(g_tTex1du1[u1], u1); + InterlockedMin(g_tTex1du1[u1], u1, out_u1); + InterlockedOr(g_tTex1du1[u1], u1); + InterlockedOr(g_tTex1du1[u1], u1, out_u1); + InterlockedXor(g_tTex1du1[u1], u1); + InterlockedXor(g_tTex1du1[u1], u1, out_u1); + + // 2D int + InterlockedAdd(g_tTex2di1[i2], i1b); + InterlockedAdd(g_tTex2di1[i2], i1, out_i1); + InterlockedAnd(g_tTex2di1[i2], i1b); + InterlockedAnd(g_tTex2di1[i2], i1, out_i1); + InterlockedCompareExchange(g_tTex2di1[i2], i1b, i1c, out_i1); + InterlockedExchange(g_tTex2di1[i2], i1, out_i1); + InterlockedMax(g_tTex2di1[i2], i1b); + InterlockedMax(g_tTex2di1[i2], i1, out_i1); + InterlockedMin(g_tTex2di1[i2], i1b); + InterlockedMin(g_tTex2di1[i2], i1, out_i1); + InterlockedOr(g_tTex2di1[i2], i1b); + InterlockedOr(g_tTex2di1[i2], i1, out_i1); + InterlockedXor(g_tTex2di1[i2], i1b); + InterlockedXor(g_tTex2di1[i2], i1, out_i1); + + // 2D uint + InterlockedAdd(g_tTex2du1[u2], u1); + InterlockedAdd(g_tTex2du1[u2], u1, out_u1); + InterlockedAnd(g_tTex2du1[u2], u1); + InterlockedAnd(g_tTex2du1[u2], u1, out_u1); + InterlockedCompareExchange(g_tTex2du1[u2], u1b, u1c, out_u1); + InterlockedExchange(g_tTex2du1[u2], u1, out_u1); + InterlockedMax(g_tTex2du1[u2], u1); + InterlockedMax(g_tTex2du1[u2], u1, out_u1); + InterlockedMin(g_tTex2du1[u2], u1); + InterlockedMin(g_tTex2du1[u2], u1, out_u1); + InterlockedOr(g_tTex2du1[u2], u1); + InterlockedOr(g_tTex2du1[u2], u1, out_u1); + InterlockedXor(g_tTex2du1[u2], u1); + InterlockedXor(g_tTex2du1[u2], u1, out_u1); + + // 3D int + InterlockedAdd(g_tTex3di1[i3], i1b); + InterlockedAdd(g_tTex3di1[i3], i1, out_i1); + InterlockedAnd(g_tTex3di1[i3], i1b); + InterlockedAnd(g_tTex3di1[i3], i1, out_i1); + InterlockedCompareExchange(g_tTex3di1[i3], i1b, i1c, out_i1); + InterlockedExchange(g_tTex3di1[i3], i1, out_i1); + InterlockedMax(g_tTex3di1[i3], i1b); + InterlockedMax(g_tTex3di1[i3], i1, out_i1); + InterlockedMin(g_tTex3di1[i3], i1b); + InterlockedMin(g_tTex3di1[i3], i1, out_i1); + InterlockedOr(g_tTex3di1[i3], i1b); + InterlockedOr(g_tTex3di1[i3], i1, out_i1); + InterlockedXor(g_tTex3di1[i3], i1b); + InterlockedXor(g_tTex3di1[i3], i1, out_i1); + + // 3D uint + InterlockedAdd(g_tTex3du1[u3], u1); + InterlockedAdd(g_tTex3du1[u3], u1, out_u1); + InterlockedAnd(g_tTex3du1[u3], u1); + InterlockedAnd(g_tTex3du1[u3], u1, out_u1); + InterlockedCompareExchange(g_tTex3du1[u3], u1b, u1c, out_u1); + InterlockedExchange(g_tTex3du1[u3], u1, out_u1); + InterlockedMax(g_tTex3du1[u3], u1); + InterlockedMax(g_tTex3du1[u3], u1, out_u1); + InterlockedMin(g_tTex3du1[u3], u1); + InterlockedMin(g_tTex3du1[u3], u1, out_u1); + InterlockedOr(g_tTex3du1[u3], u1); + InterlockedOr(g_tTex3du1[u3], u1, out_u1); + InterlockedXor(g_tTex3du1[u3], u1); + InterlockedXor(g_tTex3du1[u3], u1, out_u1); + + // 1D array int + InterlockedAdd(g_tTex1di1a[i2], i1b); + InterlockedAdd(g_tTex1di1a[i2], i1, out_i1); + InterlockedAnd(g_tTex1di1a[i2], i1b); + InterlockedAnd(g_tTex1di1a[i2], i1, out_i1); + InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1); + InterlockedExchange(g_tTex1di1a[i2], i1, out_i1); + InterlockedMax(g_tTex1di1a[i2], i1b); + InterlockedMax(g_tTex1di1a[i2], i1, out_i1); + InterlockedMin(g_tTex1di1a[i2], i1b); + InterlockedMin(g_tTex1di1a[i2], i1, out_i1); + InterlockedOr(g_tTex1di1a[i2], i1b); + InterlockedOr(g_tTex1di1a[i2], i1, out_i1); + InterlockedXor(g_tTex1di1a[i2], i1b); + InterlockedXor(g_tTex1di1a[i2], i1, out_i1); + + // 1D array uint + InterlockedAdd(g_tTex1du1a[u2], u1); + InterlockedAdd(g_tTex1du1a[u2], u1, out_u1); + InterlockedAnd(g_tTex1du1a[u2], u1); + InterlockedAnd(g_tTex1du1a[u2], u1, out_u1); + InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1); + InterlockedExchange(g_tTex1du1a[u2], u1, out_u1); + InterlockedMax(g_tTex1du1a[u2], u1); + InterlockedMax(g_tTex1du1a[u2], u1, out_u1); + InterlockedMin(g_tTex1du1a[u2], u1); + InterlockedMin(g_tTex1du1a[u2], u1, out_u1); + InterlockedOr(g_tTex1du1a[u2], u1); + InterlockedOr(g_tTex1du1a[u2], u1, out_u1); + InterlockedXor(g_tTex1du1a[u2], u1); + InterlockedXor(g_tTex1du1a[u2], u1, out_u1); + + // 2D array int + InterlockedAdd(g_tTex1di1a[i2], i1b); + InterlockedAdd(g_tTex1di1a[i2], i1, out_i1); + InterlockedAnd(g_tTex1di1a[i2], i1b); + InterlockedAnd(g_tTex1di1a[i2], i1, out_i1); + InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1); + InterlockedExchange(g_tTex1di1a[i2], i1, out_i1); + InterlockedMax(g_tTex1di1a[i2], i1b); + InterlockedMax(g_tTex1di1a[i2], i1, out_i1); + InterlockedMin(g_tTex1di1a[i2], i1b); + InterlockedMin(g_tTex1di1a[i2], i1, out_i1); + InterlockedOr(g_tTex1di1a[i2], i1b); + InterlockedOr(g_tTex1di1a[i2], i1, out_i1); + InterlockedXor(g_tTex1di1a[i2], i1b); + InterlockedXor(g_tTex1di1a[i2], i1, out_i1); + + // 2D array uint + InterlockedAdd(g_tTex1du1a[u2], u1); + InterlockedAdd(g_tTex1du1a[u2], u1, out_u1); + InterlockedAnd(g_tTex1du1a[u2], u1); + InterlockedAnd(g_tTex1du1a[u2], u1, out_u1); + InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1); + InterlockedExchange(g_tTex1du1a[u2], u1, out_u1); + InterlockedMax(g_tTex1du1a[u2], u1); + InterlockedMax(g_tTex1du1a[u2], u1, out_u1); + InterlockedMin(g_tTex1du1a[u2], u1); + InterlockedMin(g_tTex1du1a[u2], u1, out_u1); + InterlockedOr(g_tTex1du1a[u2], u1); + InterlockedOr(g_tTex1du1a[u2], u1, out_u1); + InterlockedXor(g_tTex1du1a[u2], u1); + InterlockedXor(g_tTex1du1a[u2], u1, out_u1); + + // buffer int + InterlockedAdd(g_tBuffI[i1], i1b); + InterlockedAdd(g_tBuffI[i1], i1, out_i1); + InterlockedAnd(g_tBuffI[i1], i1b); + InterlockedAnd(g_tBuffI[i1], i1, out_i1); + InterlockedCompareExchange(g_tBuffI[i1], i1b, i1c, out_i1); + InterlockedExchange(g_tBuffI[i1], i1, out_i1); + InterlockedMax(g_tBuffI[i1], i1b); + InterlockedMax(g_tBuffI[i1], i1, out_i1); + InterlockedMin(g_tBuffI[i1], i1b); + InterlockedMin(g_tBuffI[i1], i1, out_i1); + InterlockedOr(g_tBuffI[i1], i1b); + InterlockedOr(g_tBuffI[i1], i1, out_i1); + InterlockedXor(g_tBuffI[i1], i1b); + InterlockedXor(g_tBuffI[i1], i1, out_i1); + + // buffer uint + InterlockedAdd(g_tBuffU[u1], u1); + InterlockedAdd(g_tBuffU[u1], u1, out_u1); + InterlockedAnd(g_tBuffU[u1], u1); + InterlockedAnd(g_tBuffU[u1], u1, out_u1); + InterlockedCompareExchange(g_tBuffU[u1], u1b, u1c, out_u1); + InterlockedExchange(g_tBuffU[u1], u1, out_u1); + InterlockedMax(g_tBuffU[u1], u1); + InterlockedMax(g_tBuffU[u1], u1, out_u1); + InterlockedMin(g_tBuffU[u1], u1); + InterlockedMin(g_tBuffU[u1], u1, out_u1); + InterlockedOr(g_tBuffU[u1], u1); + InterlockedOr(g_tBuffU[u1], u1, out_u1); + InterlockedXor(g_tBuffU[u1], u1); + InterlockedXor(g_tBuffU[u1], u1, out_u1); + + PS_OUTPUT psout; + psout.Color = 1.0; + return psout; +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index b50816a1..7891342a 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -150,6 +150,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, {"hlsl.promotions.frag", "main"}, + {"hlsl.rw.atomics.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, {"hlsl.rw.scalar.bracket.frag", "main"}, {"hlsl.rw.vec2.bracket.frag", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index b4c417d9..21c916b0 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1397,13 +1397,13 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op TOperator HlslParseContext::mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage) { switch (op) { - case EOpInterlockedAdd: return isImage ? EOpImageAtomicAdd : EOpAtomicAdd; - case EOpInterlockedAnd: return isImage ? EOpImageAtomicAnd : EOpAtomicAnd; + case EOpInterlockedAdd: return isImage ? EOpImageAtomicAdd : EOpAtomicAdd; + case EOpInterlockedAnd: return isImage ? EOpImageAtomicAnd : EOpAtomicAnd; case EOpInterlockedCompareExchange: return isImage ? EOpImageAtomicCompSwap : EOpAtomicCompSwap; - case EOpInterlockedMax: return isImage ? EOpImageAtomicMax : EOpAtomicMax; - case EOpInterlockedMin: return isImage ? EOpImageAtomicMin : EOpAtomicMin; - case EOpInterlockedOr: return isImage ? EOpImageAtomicOr : EOpAtomicOr; - case EOpInterlockedXor: return isImage ? EOpImageAtomicXor : EOpAtomicXor; + case EOpInterlockedMax: return isImage ? EOpImageAtomicMax : EOpAtomicMax; + case EOpInterlockedMin: return isImage ? EOpImageAtomicMin : EOpAtomicMin; + case EOpInterlockedOr: return isImage ? EOpImageAtomicOr : EOpAtomicOr; + case EOpInterlockedXor: return isImage ? EOpImageAtomicXor : EOpAtomicXor; case EOpInterlockedExchange: return isImage ? EOpImageAtomicExchange : EOpAtomicExchange; case EOpInterlockedCompareStore: // TODO: ... default: @@ -2052,6 +2052,27 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType // void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) { + // Helper to find image data for image atomics: + // OpImageLoad(image[idx]) + // We take the image load apart and add its params to the atomic op aggregate node + const auto imageAtomicParams = [this, &loc, &node](TIntermAggregate* atomic, TIntermTyped* load) { + TIntermAggregate* loadOp = load->getAsAggregate(); + if (loadOp == nullptr) { + error(loc, "unknown image type in atomic operation", "", ""); + node = nullptr; + return; + } + + atomic->getSequence().push_back(loadOp->getSequence()[0]); + atomic->getSequence().push_back(loadOp->getSequence()[1]); + }; + + // Return true if this is an imageLoad, which we will change to an image atomic. + const auto isImageParam = [](TIntermTyped* image) { + TIntermAggregate* imageAggregate = image->getAsAggregate(); + return imageAggregate != nullptr && imageAggregate->getOp() == EOpImageLoad; + }; + // HLSL intrinsics can be pass through to native AST opcodes, or decomposed here to existing AST // opcodes for compatibility with existing software stacks. static const bool decomposeHlslIntrinsics = true; @@ -2232,27 +2253,43 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& case EOpInterlockedXor: // ... case EOpInterlockedExchange: // always has output arg { - TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); - TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // dest + TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // value + TIntermTyped* arg2 = nullptr; - const bool isImage = arg0->getType().isImage(); + if (argAggregate->getSequence().size() > 2) + arg2 = argAggregate->getSequence()[2]->getAsTyped(); + + const bool isImage = isImageParam(arg0); const TOperator atomicOp = mapAtomicOp(loc, op, isImage); - - if (argAggregate->getSequence().size() > 2) { - // optional output param is present. return value goes to arg2. - TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped(); - - TIntermAggregate* atomic = new TIntermAggregate(atomicOp); - atomic->getSequence().push_back(arg0); + TIntermAggregate* atomic = new TIntermAggregate(atomicOp); + atomic->setType(arg0->getType()); + atomic->getWritableType().getQualifier().makeTemporary(); + atomic->setLoc(loc); + + if (isImage) { + // orig_value = imageAtomicOp(image, loc, data) + imageAtomicParams(atomic, arg0); atomic->getSequence().push_back(arg1); - atomic->setLoc(loc); - atomic->setType(arg0->getType()); - atomic->getWritableType().getQualifier().makeTemporary(); - node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); + if (argAggregate->getSequence().size() > 2) { + node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); + } else { + node = atomic; // no assignment needed, as there was no out var. + } } else { - // Set the matching operator. Since output is absent, this is all we need to do. - node->getAsAggregate()->setOperator(atomicOp); + // Normal memory variable: + // arg0 = mem, arg1 = data, arg2(optional,out) = orig_value + if (argAggregate->getSequence().size() > 2) { + // optional output param is present. return value goes to arg2. + atomic->getSequence().push_back(arg0); + atomic->getSequence().push_back(arg1); + + node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); + } else { + // Set the matching operator. Since output is absent, this is all we need to do. + node->getAsAggregate()->setOperator(atomicOp); + } } break; @@ -2265,15 +2302,20 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped(); // value TIntermTyped* arg3 = argAggregate->getSequence()[3]->getAsTyped(); // orig - const bool isImage = arg0->getType().isImage(); + const bool isImage = isImageParam(arg0); TIntermAggregate* atomic = new TIntermAggregate(mapAtomicOp(loc, op, isImage)); - atomic->getSequence().push_back(arg0); - atomic->getSequence().push_back(arg1); - atomic->getSequence().push_back(arg2); atomic->setLoc(loc); atomic->setType(arg2->getType()); atomic->getWritableType().getQualifier().makeTemporary(); + if (isImage) { + imageAtomicParams(atomic, arg0); + } else { + atomic->getSequence().push_back(arg0); + } + + atomic->getSequence().push_back(arg1); + atomic->getSequence().push_back(arg2); node = intermediate.addAssign(EOpAssign, arg3, atomic, loc); break; From 6cb1637f37d3907dc9e7eacb71065e3bacabff55 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 19 Oct 2016 12:57:22 -0600 Subject: [PATCH 074/130] Move promote methods to TIntermediate class A need arose to use capabilities from TIntermediate during node promotion. These methods have been moved from virtual methods on the TIntermUnary and TIntermBinary nodes to methods on TIntermediate, so it is easy for them construct new nodes and so on. This is done as a separate commit to verify that no test results are changed as a result. --- glslang/Include/intermediate.h | 4 +- glslang/MachineIndependent/Intermediate.cpp | 118 +++++++++++------- .../MachineIndependent/localintermediate.h | 3 + 3 files changed, 74 insertions(+), 51 deletions(-) diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index fc267543..f5a5a7b4 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -847,7 +847,7 @@ public: virtual TIntermOperator* getAsOperator() { return this; } virtual const TIntermOperator* getAsOperator() const { return this; } TOperator getOp() const { return op; } - virtual bool promote(TIntermediate&) { return true; } + void setOp(TOperator newOp) { op = newOp; } bool modifiesState() const; bool isConstructor() const; bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; } @@ -1026,7 +1026,6 @@ public: virtual TIntermTyped* getRight() const { return right; } virtual TIntermBinary* getAsBinaryNode() { return this; } virtual const TIntermBinary* getAsBinaryNode() const { return this; } - virtual bool promote(TIntermediate&); virtual void updatePrecision(); protected: TIntermTyped* left; @@ -1046,7 +1045,6 @@ public: virtual const TIntermTyped* getOperand() const { return operand; } virtual TIntermUnary* getAsUnaryNode() { return this; } virtual const TIntermUnary* getAsUnaryNode() const { return this; } - virtual bool promote(TIntermediate&); virtual void updatePrecision(); protected: TIntermTyped* operand; diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 1441c55b..758ae4f2 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -137,8 +137,8 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn // one and promote it to the right type. // TIntermBinary* node = addBinaryNode(op, left, right, loc); - if (! node->promote(*this)) - return 0; + if (! promote(node)) + return nullptr; node->updatePrecision(); @@ -246,7 +246,7 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm // build the node TIntermBinary* node = addBinaryNode(op, left, right, loc); - if (! node->promote(*this)) + if (! promote(node)) return nullptr; node->updatePrecision(); @@ -353,8 +353,8 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo // TIntermUnary* node = addUnaryNode(op, child, loc); - if (! node->promote(*this)) - return 0; + if (! promote(node)) + return nullptr; node->updatePrecision(); @@ -1725,24 +1725,45 @@ bool TIntermOperator::isConstructor() const } // -// Make sure the type of a unary operator is appropriate for its -// combination of operation and operand type. +// Make sure the type of an operator is appropriate for its +// combination of operation and operand type. This will invoke +// promoteUnary, promoteBinary, etc as needed. // -// Returns false in nothing makes sense. +// Returns false if nothing makes sense. // -bool TIntermUnary::promote(TIntermediate& intermediate) +bool TIntermediate::promote(TIntermOperator* node) { + if (node == nullptr) + return false; + + if (node->getAsUnaryNode()) + return promoteUnary(*node->getAsUnaryNode()); + + if (node->getAsBinaryNode()) + return promoteBinary(*node->getAsBinaryNode()); + + return false; +} + +// +// See TIntermediate::promote +// +bool TIntermediate::promoteUnary(TIntermUnary& node) +{ + const TOperator op = node.getOp(); + TIntermTyped* operand = node.getOperand(); + switch (op) { case EOpLogicalNot: // Convert operand to a boolean type if (operand->getBasicType() != EbtBool) { // Add constructor to boolean type. If that fails, we can't do it, so return false. - TIntermTyped* converted = intermediate.convertToBasicType(op, EbtBool, operand); + TIntermTyped* converted = convertToBasicType(op, EbtBool, operand); if (converted == nullptr) return false; // Use the result of converting the node to a bool. - operand = converted; + node.setOperand(operand = converted); // also updates stack variable } break; case EOpBitwiseNot: @@ -1777,8 +1798,8 @@ bool TIntermUnary::promote(TIntermediate& intermediate) return false; } - setType(operand->getType()); - getWritableType().getQualifier().makeTemporary(); + node.setType(operand->getType()); + node.getWritableType().getQualifier().makeTemporary(); return true; } @@ -1814,13 +1835,14 @@ TIntermTyped* TIntermediate::convertToBasicType(TOperator op, TBasicType basicTy } // -// Establishes the type of the resultant operation, as well as -// makes the operator the correct one for the operands. +// See TIntermediate::promote // -// Returns false if operator can't work on operands. -// -bool TIntermBinary::promote(TIntermediate& intermediate) +bool TIntermediate::promoteBinary(TIntermBinary& node) { + TOperator op = node.getOp(); + TIntermTyped* left = node.getLeft(); + TIntermTyped* right = node.getRight(); + // Arrays and structures have to be exact matches. if ((left->isArray() || right->isArray() || left->getBasicType() == EbtStruct || right->getBasicType() == EbtStruct) && left->getType() != right->getType()) @@ -1828,8 +1850,8 @@ bool TIntermBinary::promote(TIntermediate& intermediate) // Base assumption: just make the type the same as the left // operand. Only deviations from this will be coded. - setType(left->getType()); - type.getQualifier().clear(); + node.setType(left->getType()); + node.getWritableType().getQualifier().clear(); // Composite and opaque types don't having pending operator changes, e.g., // array, structure, and samplers. Just establish final type and correctness. @@ -1842,7 +1864,7 @@ bool TIntermBinary::promote(TIntermediate& intermediate) return false; } else { // Promote to conditional - setType(TType(EbtBool)); + node.setType(TType(EbtBool)); } return true; @@ -1870,32 +1892,32 @@ bool TIntermBinary::promote(TIntermediate& intermediate) // Relational comparisons need numeric types and will promote to scalar Boolean. if (left->getBasicType() == EbtBool) return false; - setType(TType(EbtBool)); + node.setType(TType(EbtBool)); break; case EOpEqual: case EOpNotEqual: // All the above comparisons result in a bool (but not the vector compares) - setType(TType(EbtBool)); + node.setType(TType(EbtBool)); break; case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: - if (intermediate.getSource() == EShSourceHlsl) { - TIntermTyped* convertedL = intermediate.convertToBasicType(op, EbtBool, left); - TIntermTyped* convertedR = intermediate.convertToBasicType(op, EbtBool, right); + if (getSource() == EShSourceHlsl) { + TIntermTyped* convertedL = convertToBasicType(op, EbtBool, left); + TIntermTyped* convertedR = convertToBasicType(op, EbtBool, right); if (convertedL == nullptr || convertedR == nullptr) return false; - left = convertedL; - right = convertedR; + node.setLeft(left = convertedL); // also updates stack variable + node.setRight(right = convertedR); // also updates stack variable } // logical ops operate only on scalar Booleans and will promote to scalar Boolean. if (left->getBasicType() != EbtBool || left->isVector() || left->isMatrix()) return false; - setType(TType(EbtBool)); + node.setType(TType(EbtBool)); break; case EOpRightShift: @@ -1912,7 +1934,7 @@ bool TIntermBinary::promote(TIntermediate& intermediate) case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: - if (intermediate.getSource() == EShSourceHlsl) + if (getSource() == EShSourceHlsl) break; // Check for integer-only operands. @@ -2011,33 +2033,33 @@ bool TIntermBinary::promote(TIntermediate& intermediate) if (left->isVector()) { if (left->getVectorSize() != right->getMatrixRows()) return false; - op = EOpVectorTimesMatrix; - setType(TType(basicType, EvqTemporary, right->getMatrixCols())); + node.setOp(op = EOpVectorTimesMatrix); + node.setType(TType(basicType, EvqTemporary, right->getMatrixCols())); } else { - op = EOpMatrixTimesScalar; - setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), right->getMatrixRows())); + node.setOp(op = EOpMatrixTimesScalar); + node.setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), right->getMatrixRows())); } } else if (left->isMatrix() && !right->isMatrix()) { if (right->isVector()) { if (left->getMatrixCols() != right->getVectorSize()) return false; - op = EOpMatrixTimesVector; - setType(TType(basicType, EvqTemporary, left->getMatrixRows())); + node.setOp(op = EOpMatrixTimesVector); + node.setType(TType(basicType, EvqTemporary, left->getMatrixRows())); } else { - op = EOpMatrixTimesScalar; + node.setOp(op = EOpMatrixTimesScalar); } } else if (left->isMatrix() && right->isMatrix()) { if (left->getMatrixCols() != right->getMatrixRows()) return false; - op = EOpMatrixTimesMatrix; - setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), left->getMatrixRows())); + node.setOp(op = EOpMatrixTimesMatrix); + node.setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), left->getMatrixRows())); } else if (! left->isMatrix() && ! right->isMatrix()) { if (left->isVector() && right->isVector()) { ; // leave as component product } else if (left->isVector() || right->isVector()) { - op = EOpVectorTimesScalar; + node.setOp(op = EOpVectorTimesScalar); if (right->isVector()) - setType(TType(basicType, EvqTemporary, right->getVectorSize())); + node.setType(TType(basicType, EvqTemporary, right->getVectorSize())); } } else { return false; @@ -2048,7 +2070,7 @@ bool TIntermBinary::promote(TIntermediate& intermediate) if (left->isVector()) { if (left->getVectorSize() != right->getMatrixRows() || left->getVectorSize() != right->getMatrixCols()) return false; - op = EOpVectorTimesMatrixAssign; + node.setOp(op = EOpVectorTimesMatrixAssign); } else { return false; } @@ -2056,19 +2078,19 @@ bool TIntermBinary::promote(TIntermediate& intermediate) if (right->isVector()) { return false; } else { - op = EOpMatrixTimesScalarAssign; + node.setOp(op = EOpMatrixTimesScalarAssign); } } else if (left->isMatrix() && right->isMatrix()) { if (left->getMatrixCols() != left->getMatrixRows() || left->getMatrixCols() != right->getMatrixCols() || left->getMatrixCols() != right->getMatrixRows()) return false; - op = EOpMatrixTimesMatrixAssign; + node.setOp(op = EOpMatrixTimesMatrixAssign); } else if (!left->isMatrix() && !right->isMatrix()) { if (left->isVector() && right->isVector()) { // leave as component product } else if (left->isVector() || right->isVector()) { if (! left->isVector()) return false; - op = EOpVectorTimesScalarAssign; + node.setOp(op = EOpVectorTimesScalarAssign); } } else { return false; @@ -2112,8 +2134,8 @@ bool TIntermBinary::promote(TIntermediate& intermediate) if (left->isVector() && right->isVector() && left->getVectorSize() != right->getVectorSize()) return false; if (right->isVector() || right->isMatrix()) { - type.shallowCopy(right->getType()); - type.getQualifier().makeTemporary(); + node.getWritableType().shallowCopy(right->getType()); + node.getWritableType().getQualifier().makeTemporary(); } break; @@ -2137,7 +2159,7 @@ bool TIntermBinary::promote(TIntermediate& intermediate) case EOpExclusiveOrAssign: case EOpLeftShiftAssign: case EOpRightShiftAssign: - if (getType() != left->getType()) + if (node.getType() != left->getType()) return false; break; default: diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index c8742cb4..1dd14403 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -393,6 +393,9 @@ protected: bool userOutputUsed() const; static int getBaseAlignmentScalar(const TType&, int& size); bool isSpecializationOperation(const TIntermOperator&) const; + bool promote(TIntermOperator*); + bool promoteUnary(TIntermUnary&); + bool promoteBinary(TIntermBinary&); const EShLanguage language; // stage, known at construction time EShSource source; // source language, known a bit later From 6b596682c9687333aed894c9fbcb56591e5536c4 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 20 Oct 2016 14:50:12 -0600 Subject: [PATCH 075/130] HLSL: fix defect in EOpMethodSampleCmp* texture decomposition HLSL holds the compare value in a separate intrinsic arg, but the AST wants a vector including the cmp val, except in the 4-dim coord case, where it doesn't fit and is in fact a separate AST parameter. This is awkward but necessary, given AST semantics. In the process, a new vector is constructed for the combined result, but this vector was not being given the correct TType, so was causing some downstream troubles. Now it is. A similar defect existed in OpTextureBias, and has also been fixed. --- .../hlsl.samplecmp.array.dx10.frag.out | 517 ++++++++--------- .../hlsl.samplecmp.basic.dx10.frag.out | 502 +++++++++-------- .../hlsl.samplecmp.offset.dx10.frag.out | 430 ++++++++------- .../hlsl.samplecmp.offsetarray.dx10.frag.out | 423 +++++++------- ...lsl.samplecmplevelzero.array.dx10.frag.out | 519 +++++++++--------- ...lsl.samplecmplevelzero.basic.dx10.frag.out | 504 +++++++++-------- ...sl.samplecmplevelzero.offset.dx10.frag.out | 432 ++++++++------- ...mplecmplevelzero.offsetarray.dx10.frag.out | 425 +++++++------- hlsl/hlslParseHelper.cpp | 5 + 9 files changed, 1951 insertions(+), 1806 deletions(-) diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index 05f53c70..b05595d5 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -25,7 +25,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -51,7 +51,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -79,7 +79,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -93,7 +93,7 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 Construct vec4 (temp float) +0:52 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -108,7 +108,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -123,7 +123,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -206,7 +206,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -219,7 +219,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -245,7 +245,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -259,7 +259,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -273,7 +273,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -287,7 +287,7 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 Construct vec4 (temp float) +0:52 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -302,7 +302,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -317,7 +317,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -385,79 +385,79 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 184 +// Id's are bound by 211 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 140 144 + EntryPoint Fragment 4 "main" 167 171 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r10" Name 11 "g_tTex1df4a" Name 15 "g_sSamp" - Name 28 "r12" - Name 32 "g_tTex1di4a" - Name 41 "r14" - Name 45 "g_tTex1du4a" - Name 54 "r30" - Name 57 "g_tTex2df4a" - Name 69 "r32" - Name 72 "g_tTex2di4a" - Name 81 "r34" - Name 84 "g_tTex2du4a" - Name 93 "r60" - Name 96 "g_tTexcdf4a" - Name 107 "r62" - Name 110 "g_tTexcdi4a" - Name 118 "r64" - Name 121 "g_tTexcdu4a" - Name 129 "PS_OUTPUT" - MemberName 129(PS_OUTPUT) 0 "Color" - MemberName 129(PS_OUTPUT) 1 "Depth" - Name 131 "psout" - Name 140 "Color" - Name 144 "Depth" - Name 150 "g_tTex1df4" - Name 153 "g_tTex1di4" - Name 156 "g_tTex1du4" - Name 159 "g_tTex2df4" - Name 162 "g_tTex2di4" - Name 165 "g_tTex2du4" - Name 168 "g_tTex3df4" - Name 171 "g_tTex3di4" - Name 174 "g_tTex3du4" - Name 177 "g_tTexcdf4" - Name 180 "g_tTexcdi4" - Name 183 "g_tTexcdu4" + Name 31 "r12" + Name 35 "g_tTex1di4a" + Name 46 "r14" + Name 50 "g_tTex1du4a" + Name 61 "r30" + Name 64 "g_tTex2df4a" + Name 79 "r32" + Name 82 "g_tTex2di4a" + Name 94 "r34" + Name 97 "g_tTex2du4a" + Name 109 "r60" + Name 112 "g_tTexcdf4a" + Name 126 "r62" + Name 129 "g_tTexcdi4a" + Name 141 "r64" + Name 144 "g_tTexcdu4a" + Name 156 "PS_OUTPUT" + MemberName 156(PS_OUTPUT) 0 "Color" + MemberName 156(PS_OUTPUT) 1 "Depth" + Name 158 "psout" + Name 167 "Color" + Name 171 "Depth" + Name 177 "g_tTex1df4" + Name 180 "g_tTex1di4" + Name 183 "g_tTex1du4" + Name 186 "g_tTex2df4" + Name 189 "g_tTex2di4" + Name 192 "g_tTex2du4" + Name 195 "g_tTex3df4" + Name 198 "g_tTex3di4" + Name 201 "g_tTex3du4" + Name 204 "g_tTexcdf4" + Name 207 "g_tTexcdi4" + Name 210 "g_tTexcdu4" Decorate 11(g_tTex1df4a) DescriptorSet 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 32(g_tTex1di4a) DescriptorSet 0 - Decorate 45(g_tTex1du4a) DescriptorSet 0 - Decorate 57(g_tTex2df4a) DescriptorSet 0 - Decorate 72(g_tTex2di4a) DescriptorSet 0 - Decorate 84(g_tTex2du4a) DescriptorSet 0 - Decorate 96(g_tTexcdf4a) DescriptorSet 0 - Decorate 110(g_tTexcdi4a) DescriptorSet 0 - Decorate 121(g_tTexcdu4a) DescriptorSet 0 - Decorate 140(Color) Location 0 - Decorate 144(Depth) BuiltIn FragDepth - Decorate 150(g_tTex1df4) DescriptorSet 0 - Decorate 150(g_tTex1df4) Binding 0 - Decorate 153(g_tTex1di4) DescriptorSet 0 - Decorate 156(g_tTex1du4) DescriptorSet 0 - Decorate 159(g_tTex2df4) DescriptorSet 0 - Decorate 162(g_tTex2di4) DescriptorSet 0 - Decorate 165(g_tTex2du4) DescriptorSet 0 - Decorate 168(g_tTex3df4) DescriptorSet 0 - Decorate 171(g_tTex3di4) DescriptorSet 0 - Decorate 174(g_tTex3du4) DescriptorSet 0 - Decorate 177(g_tTexcdf4) DescriptorSet 0 - Decorate 180(g_tTexcdi4) DescriptorSet 0 - Decorate 183(g_tTexcdu4) DescriptorSet 0 + Decorate 35(g_tTex1di4a) DescriptorSet 0 + Decorate 50(g_tTex1du4a) DescriptorSet 0 + Decorate 64(g_tTex2df4a) DescriptorSet 0 + Decorate 82(g_tTex2di4a) DescriptorSet 0 + Decorate 97(g_tTex2du4a) DescriptorSet 0 + Decorate 112(g_tTexcdf4a) DescriptorSet 0 + Decorate 129(g_tTexcdi4a) DescriptorSet 0 + Decorate 144(g_tTexcdu4a) DescriptorSet 0 + Decorate 167(Color) Location 0 + Decorate 171(Depth) BuiltIn FragDepth + Decorate 177(g_tTex1df4) DescriptorSet 0 + Decorate 177(g_tTex1df4) Binding 0 + Decorate 180(g_tTex1di4) DescriptorSet 0 + Decorate 183(g_tTex1du4) DescriptorSet 0 + Decorate 186(g_tTex2df4) DescriptorSet 0 + Decorate 189(g_tTex2di4) DescriptorSet 0 + Decorate 192(g_tTex2du4) DescriptorSet 0 + Decorate 195(g_tTex3df4) DescriptorSet 0 + Decorate 198(g_tTex3di4) DescriptorSet 0 + Decorate 201(g_tTex3du4) DescriptorSet 0 + Decorate 204(g_tTexcdf4) DescriptorSet 0 + Decorate 207(g_tTexcdi4) DescriptorSet 0 + Decorate 210(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -475,182 +475,209 @@ gl_FragCoord origin is upper left 22: 6(float) Constant 1045220557 23: 20(fvec2) ConstantComposite 21 22 24: 6(float) Constant 1061158912 - 29: TypeInt 32 1 - 30: TypeImage 29(int) 1D array sampled format:Unknown - 31: TypePointer UniformConstant 30 - 32(g_tTex1di4a): 31(ptr) Variable UniformConstant - 35: TypeImage 29(int) 1D depth array sampled format:Unknown - 36: TypeSampledImage 35 - 42: TypeInt 32 0 - 43: TypeImage 42(int) 1D array sampled format:Unknown - 44: TypePointer UniformConstant 43 - 45(g_tTex1du4a): 44(ptr) Variable UniformConstant - 48: TypeImage 42(int) 1D depth array sampled format:Unknown - 49: TypeSampledImage 48 - 55: TypeImage 6(float) 2D array sampled format:Unknown - 56: TypePointer UniformConstant 55 - 57(g_tTex2df4a): 56(ptr) Variable UniformConstant - 60: TypeImage 6(float) 2D depth array sampled format:Unknown - 61: TypeSampledImage 60 - 63: TypeVector 6(float) 3 - 64: 6(float) Constant 1050253722 - 65: 63(fvec3) ConstantComposite 21 22 64 - 70: TypeImage 29(int) 2D array sampled format:Unknown - 71: TypePointer UniformConstant 70 - 72(g_tTex2di4a): 71(ptr) Variable UniformConstant - 75: TypeImage 29(int) 2D depth array sampled format:Unknown - 76: TypeSampledImage 75 - 82: TypeImage 42(int) 2D array sampled format:Unknown - 83: TypePointer UniformConstant 82 - 84(g_tTex2du4a): 83(ptr) Variable UniformConstant - 87: TypeImage 42(int) 2D depth array sampled format:Unknown - 88: TypeSampledImage 87 - 94: TypeImage 6(float) Cube array sampled format:Unknown - 95: TypePointer UniformConstant 94 - 96(g_tTexcdf4a): 95(ptr) Variable UniformConstant - 99: TypeImage 6(float) Cube depth array sampled format:Unknown - 100: TypeSampledImage 99 - 102: TypeVector 6(float) 4 - 103: 6(float) Constant 1053609165 - 104: 102(fvec4) ConstantComposite 21 22 64 103 - 108: TypeImage 29(int) Cube array sampled format:Unknown - 109: TypePointer UniformConstant 108 -110(g_tTexcdi4a): 109(ptr) Variable UniformConstant - 113: TypeImage 29(int) Cube depth array sampled format:Unknown - 114: TypeSampledImage 113 - 119: TypeImage 42(int) Cube array sampled format:Unknown - 120: TypePointer UniformConstant 119 -121(g_tTexcdu4a): 120(ptr) Variable UniformConstant - 124: TypeImage 42(int) Cube depth array sampled format:Unknown - 125: TypeSampledImage 124 - 129(PS_OUTPUT): TypeStruct 102(fvec4) 6(float) - 130: TypePointer Function 129(PS_OUTPUT) - 132: 29(int) Constant 0 - 133: 6(float) Constant 1065353216 - 134: 102(fvec4) ConstantComposite 133 133 133 133 - 135: TypePointer Function 102(fvec4) - 137: 29(int) Constant 1 - 139: TypePointer Output 102(fvec4) - 140(Color): 139(ptr) Variable Output - 143: TypePointer Output 6(float) - 144(Depth): 143(ptr) Variable Output - 148: TypeImage 6(float) 1D sampled format:Unknown - 149: TypePointer UniformConstant 148 - 150(g_tTex1df4): 149(ptr) Variable UniformConstant - 151: TypeImage 29(int) 1D sampled format:Unknown - 152: TypePointer UniformConstant 151 - 153(g_tTex1di4): 152(ptr) Variable UniformConstant - 154: TypeImage 42(int) 1D sampled format:Unknown - 155: TypePointer UniformConstant 154 - 156(g_tTex1du4): 155(ptr) Variable UniformConstant - 157: TypeImage 6(float) 2D sampled format:Unknown - 158: TypePointer UniformConstant 157 - 159(g_tTex2df4): 158(ptr) Variable UniformConstant - 160: TypeImage 29(int) 2D sampled format:Unknown - 161: TypePointer UniformConstant 160 - 162(g_tTex2di4): 161(ptr) Variable UniformConstant - 163: TypeImage 42(int) 2D sampled format:Unknown - 164: TypePointer UniformConstant 163 - 165(g_tTex2du4): 164(ptr) Variable UniformConstant - 166: TypeImage 6(float) 3D sampled format:Unknown - 167: TypePointer UniformConstant 166 - 168(g_tTex3df4): 167(ptr) Variable UniformConstant - 169: TypeImage 29(int) 3D sampled format:Unknown - 170: TypePointer UniformConstant 169 - 171(g_tTex3di4): 170(ptr) Variable UniformConstant - 172: TypeImage 42(int) 3D sampled format:Unknown - 173: TypePointer UniformConstant 172 - 174(g_tTex3du4): 173(ptr) Variable UniformConstant - 175: TypeImage 6(float) Cube sampled format:Unknown + 25: TypeVector 6(float) 3 + 32: TypeInt 32 1 + 33: TypeImage 32(int) 1D array sampled format:Unknown + 34: TypePointer UniformConstant 33 + 35(g_tTex1di4a): 34(ptr) Variable UniformConstant + 38: TypeImage 32(int) 1D depth array sampled format:Unknown + 39: TypeSampledImage 38 + 47: TypeInt 32 0 + 48: TypeImage 47(int) 1D array sampled format:Unknown + 49: TypePointer UniformConstant 48 + 50(g_tTex1du4a): 49(ptr) Variable UniformConstant + 53: TypeImage 47(int) 1D depth array sampled format:Unknown + 54: TypeSampledImage 53 + 62: TypeImage 6(float) 2D array sampled format:Unknown + 63: TypePointer UniformConstant 62 + 64(g_tTex2df4a): 63(ptr) Variable UniformConstant + 67: TypeImage 6(float) 2D depth array sampled format:Unknown + 68: TypeSampledImage 67 + 70: 6(float) Constant 1050253722 + 71: 25(fvec3) ConstantComposite 21 22 70 + 72: TypeVector 6(float) 4 + 80: TypeImage 32(int) 2D array sampled format:Unknown + 81: TypePointer UniformConstant 80 + 82(g_tTex2di4a): 81(ptr) Variable UniformConstant + 85: TypeImage 32(int) 2D depth array sampled format:Unknown + 86: TypeSampledImage 85 + 95: TypeImage 47(int) 2D array sampled format:Unknown + 96: TypePointer UniformConstant 95 + 97(g_tTex2du4a): 96(ptr) Variable UniformConstant + 100: TypeImage 47(int) 2D depth array sampled format:Unknown + 101: TypeSampledImage 100 + 110: TypeImage 6(float) Cube array sampled format:Unknown + 111: TypePointer UniformConstant 110 +112(g_tTexcdf4a): 111(ptr) Variable UniformConstant + 115: TypeImage 6(float) Cube depth array sampled format:Unknown + 116: TypeSampledImage 115 + 118: 6(float) Constant 1053609165 + 119: 72(fvec4) ConstantComposite 21 22 70 118 + 127: TypeImage 32(int) Cube array sampled format:Unknown + 128: TypePointer UniformConstant 127 +129(g_tTexcdi4a): 128(ptr) Variable UniformConstant + 132: TypeImage 32(int) Cube depth array sampled format:Unknown + 133: TypeSampledImage 132 + 142: TypeImage 47(int) Cube array sampled format:Unknown + 143: TypePointer UniformConstant 142 +144(g_tTexcdu4a): 143(ptr) Variable UniformConstant + 147: TypeImage 47(int) Cube depth array sampled format:Unknown + 148: TypeSampledImage 147 + 156(PS_OUTPUT): TypeStruct 72(fvec4) 6(float) + 157: TypePointer Function 156(PS_OUTPUT) + 159: 32(int) Constant 0 + 160: 6(float) Constant 1065353216 + 161: 72(fvec4) ConstantComposite 160 160 160 160 + 162: TypePointer Function 72(fvec4) + 164: 32(int) Constant 1 + 166: TypePointer Output 72(fvec4) + 167(Color): 166(ptr) Variable Output + 170: TypePointer Output 6(float) + 171(Depth): 170(ptr) Variable Output + 175: TypeImage 6(float) 1D sampled format:Unknown 176: TypePointer UniformConstant 175 - 177(g_tTexcdf4): 176(ptr) Variable UniformConstant - 178: TypeImage 29(int) Cube sampled format:Unknown + 177(g_tTex1df4): 176(ptr) Variable UniformConstant + 178: TypeImage 32(int) 1D sampled format:Unknown 179: TypePointer UniformConstant 178 - 180(g_tTexcdi4): 179(ptr) Variable UniformConstant - 181: TypeImage 42(int) Cube sampled format:Unknown + 180(g_tTex1di4): 179(ptr) Variable UniformConstant + 181: TypeImage 47(int) 1D sampled format:Unknown 182: TypePointer UniformConstant 181 - 183(g_tTexcdu4): 182(ptr) Variable UniformConstant + 183(g_tTex1du4): 182(ptr) Variable UniformConstant + 184: TypeImage 6(float) 2D sampled format:Unknown + 185: TypePointer UniformConstant 184 + 186(g_tTex2df4): 185(ptr) Variable UniformConstant + 187: TypeImage 32(int) 2D sampled format:Unknown + 188: TypePointer UniformConstant 187 + 189(g_tTex2di4): 188(ptr) Variable UniformConstant + 190: TypeImage 47(int) 2D sampled format:Unknown + 191: TypePointer UniformConstant 190 + 192(g_tTex2du4): 191(ptr) Variable UniformConstant + 193: TypeImage 6(float) 3D sampled format:Unknown + 194: TypePointer UniformConstant 193 + 195(g_tTex3df4): 194(ptr) Variable UniformConstant + 196: TypeImage 32(int) 3D sampled format:Unknown + 197: TypePointer UniformConstant 196 + 198(g_tTex3di4): 197(ptr) Variable UniformConstant + 199: TypeImage 47(int) 3D sampled format:Unknown + 200: TypePointer UniformConstant 199 + 201(g_tTex3du4): 200(ptr) Variable UniformConstant + 202: TypeImage 6(float) Cube sampled format:Unknown + 203: TypePointer UniformConstant 202 + 204(g_tTexcdf4): 203(ptr) Variable UniformConstant + 205: TypeImage 32(int) Cube sampled format:Unknown + 206: TypePointer UniformConstant 205 + 207(g_tTexcdi4): 206(ptr) Variable UniformConstant + 208: TypeImage 47(int) Cube sampled format:Unknown + 209: TypePointer UniformConstant 208 + 210(g_tTexcdu4): 209(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r10): 7(ptr) Variable Function - 28(r12): 7(ptr) Variable Function - 41(r14): 7(ptr) Variable Function - 54(r30): 7(ptr) Variable Function - 69(r32): 7(ptr) Variable Function - 81(r34): 7(ptr) Variable Function - 93(r60): 7(ptr) Variable Function - 107(r62): 7(ptr) Variable Function - 118(r64): 7(ptr) Variable Function - 131(psout): 130(ptr) Variable Function + 31(r12): 7(ptr) Variable Function + 46(r14): 7(ptr) Variable Function + 61(r30): 7(ptr) Variable Function + 79(r32): 7(ptr) Variable Function + 94(r34): 7(ptr) Variable Function + 109(r60): 7(ptr) Variable Function + 126(r62): 7(ptr) Variable Function + 141(r64): 7(ptr) Variable Function + 158(psout): 157(ptr) Variable Function 12: 9 Load 11(g_tTex1df4a) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 25: 6(float) CompositeExtract 23 0 - 26: 6(float) CompositeExtract 25 0 - 27: 6(float) ImageSampleDrefImplicitLod 19 25 26 - Store 8(r10) 27 - 33: 30 Load 32(g_tTex1di4a) - 34: 13 Load 15(g_sSamp) - 37: 36 SampledImage 33 34 - 38: 6(float) CompositeExtract 23 0 - 39: 6(float) CompositeExtract 38 0 - 40: 6(float) ImageSampleDrefImplicitLod 37 38 39 - Store 28(r12) 40 - 46: 43 Load 45(g_tTex1du4a) - 47: 13 Load 15(g_sSamp) - 50: 49 SampledImage 46 47 - 51: 6(float) CompositeExtract 23 0 - 52: 6(float) CompositeExtract 51 0 - 53: 6(float) ImageSampleDrefImplicitLod 50 51 52 - Store 41(r14) 53 - 58: 55 Load 57(g_tTex2df4a) - 59: 13 Load 15(g_sSamp) - 62: 61 SampledImage 58 59 - 66: 6(float) CompositeExtract 65 0 - 67: 6(float) CompositeExtract 66 0 - 68: 6(float) ImageSampleDrefImplicitLod 62 66 67 - Store 54(r30) 68 - 73: 70 Load 72(g_tTex2di4a) - 74: 13 Load 15(g_sSamp) - 77: 76 SampledImage 73 74 - 78: 6(float) CompositeExtract 65 0 - 79: 6(float) CompositeExtract 78 0 - 80: 6(float) ImageSampleDrefImplicitLod 77 78 79 - Store 69(r32) 80 - 85: 82 Load 84(g_tTex2du4a) - 86: 13 Load 15(g_sSamp) - 89: 88 SampledImage 85 86 - 90: 6(float) CompositeExtract 65 0 - 91: 6(float) CompositeExtract 90 0 - 92: 6(float) ImageSampleDrefImplicitLod 89 90 91 - Store 81(r34) 92 - 97: 94 Load 96(g_tTexcdf4a) - 98: 13 Load 15(g_sSamp) - 101: 100 SampledImage 97 98 - 105: 6(float) CompositeExtract 104 0 - 106: 6(float) ImageSampleDrefImplicitLod 101 105 24 - Store 93(r60) 106 - 111: 108 Load 110(g_tTexcdi4a) - 112: 13 Load 15(g_sSamp) - 115: 114 SampledImage 111 112 - 116: 6(float) CompositeExtract 104 0 - 117: 6(float) ImageSampleDrefImplicitLod 115 116 24 - Store 107(r62) 117 - 122: 119 Load 121(g_tTexcdu4a) - 123: 13 Load 15(g_sSamp) - 126: 125 SampledImage 122 123 - 127: 6(float) CompositeExtract 104 0 - 128: 6(float) ImageSampleDrefImplicitLod 126 127 24 - Store 118(r64) 128 - 136: 135(ptr) AccessChain 131(psout) 132 - Store 136 134 - 138: 7(ptr) AccessChain 131(psout) 137 - Store 138 133 - 141: 135(ptr) AccessChain 131(psout) 132 - 142: 102(fvec4) Load 141 - Store 140(Color) 142 - 145: 7(ptr) AccessChain 131(psout) 137 - 146: 6(float) Load 145 - Store 144(Depth) 146 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 29: 6(float) CompositeExtract 28 2 + 30: 6(float) ImageSampleDrefImplicitLod 19 28 29 + Store 8(r10) 30 + 36: 33 Load 35(g_tTex1di4a) + 37: 13 Load 15(g_sSamp) + 40: 39 SampledImage 36 37 + 41: 6(float) CompositeExtract 23 0 + 42: 6(float) CompositeExtract 23 1 + 43: 25(fvec3) CompositeConstruct 41 42 24 + 44: 6(float) CompositeExtract 43 2 + 45: 6(float) ImageSampleDrefImplicitLod 40 43 44 + Store 31(r12) 45 + 51: 48 Load 50(g_tTex1du4a) + 52: 13 Load 15(g_sSamp) + 55: 54 SampledImage 51 52 + 56: 6(float) CompositeExtract 23 0 + 57: 6(float) CompositeExtract 23 1 + 58: 25(fvec3) CompositeConstruct 56 57 24 + 59: 6(float) CompositeExtract 58 2 + 60: 6(float) ImageSampleDrefImplicitLod 55 58 59 + Store 46(r14) 60 + 65: 62 Load 64(g_tTex2df4a) + 66: 13 Load 15(g_sSamp) + 69: 68 SampledImage 65 66 + 73: 6(float) CompositeExtract 71 0 + 74: 6(float) CompositeExtract 71 1 + 75: 6(float) CompositeExtract 71 2 + 76: 72(fvec4) CompositeConstruct 73 74 75 24 + 77: 6(float) CompositeExtract 76 3 + 78: 6(float) ImageSampleDrefImplicitLod 69 76 77 + Store 61(r30) 78 + 83: 80 Load 82(g_tTex2di4a) + 84: 13 Load 15(g_sSamp) + 87: 86 SampledImage 83 84 + 88: 6(float) CompositeExtract 71 0 + 89: 6(float) CompositeExtract 71 1 + 90: 6(float) CompositeExtract 71 2 + 91: 72(fvec4) CompositeConstruct 88 89 90 24 + 92: 6(float) CompositeExtract 91 3 + 93: 6(float) ImageSampleDrefImplicitLod 87 91 92 + Store 79(r32) 93 + 98: 95 Load 97(g_tTex2du4a) + 99: 13 Load 15(g_sSamp) + 102: 101 SampledImage 98 99 + 103: 6(float) CompositeExtract 71 0 + 104: 6(float) CompositeExtract 71 1 + 105: 6(float) CompositeExtract 71 2 + 106: 72(fvec4) CompositeConstruct 103 104 105 24 + 107: 6(float) CompositeExtract 106 3 + 108: 6(float) ImageSampleDrefImplicitLod 102 106 107 + Store 94(r34) 108 + 113: 110 Load 112(g_tTexcdf4a) + 114: 13 Load 15(g_sSamp) + 117: 116 SampledImage 113 114 + 120: 6(float) CompositeExtract 119 0 + 121: 6(float) CompositeExtract 119 1 + 122: 6(float) CompositeExtract 119 2 + 123: 6(float) CompositeExtract 119 3 + 124: 72(fvec4) CompositeConstruct 120 121 122 123 + 125: 6(float) ImageSampleDrefImplicitLod 117 124 24 + Store 109(r60) 125 + 130: 127 Load 129(g_tTexcdi4a) + 131: 13 Load 15(g_sSamp) + 134: 133 SampledImage 130 131 + 135: 6(float) CompositeExtract 119 0 + 136: 6(float) CompositeExtract 119 1 + 137: 6(float) CompositeExtract 119 2 + 138: 6(float) CompositeExtract 119 3 + 139: 72(fvec4) CompositeConstruct 135 136 137 138 + 140: 6(float) ImageSampleDrefImplicitLod 134 139 24 + Store 126(r62) 140 + 145: 142 Load 144(g_tTexcdu4a) + 146: 13 Load 15(g_sSamp) + 149: 148 SampledImage 145 146 + 150: 6(float) CompositeExtract 119 0 + 151: 6(float) CompositeExtract 119 1 + 152: 6(float) CompositeExtract 119 2 + 153: 6(float) CompositeExtract 119 3 + 154: 72(fvec4) CompositeConstruct 150 151 152 153 + 155: 6(float) ImageSampleDrefImplicitLod 149 154 24 + Store 141(r64) 155 + 163: 162(ptr) AccessChain 158(psout) 159 + Store 163 161 + 165: 7(ptr) AccessChain 158(psout) 164 + Store 165 160 + 168: 162(ptr) AccessChain 158(psout) 159 + 169: 72(fvec4) Load 168 + Store 167(Color) 169 + 172: 7(ptr) AccessChain 158(psout) 164 + 173: 6(float) Load 172 + Store 171(Depth) 173 Return FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index d7a6b2f3..aa9b3795 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -24,7 +24,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -36,7 +36,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -48,7 +48,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -61,7 +61,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -87,7 +87,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -101,7 +101,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -115,7 +115,7 @@ gl_FragCoord origin is upper left 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:55 Construct vec4 (temp float) +0:55 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -197,7 +197,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -209,7 +209,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -221,7 +221,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -233,7 +233,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -246,7 +246,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -259,7 +259,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -286,7 +286,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -300,7 +300,7 @@ gl_FragCoord origin is upper left 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:55 Construct vec4 (temp float) +0:55 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -367,79 +367,79 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 182 +// Id's are bound by 200 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 138 142 + EntryPoint Fragment 4 "main" 156 160 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r00" Name 11 "g_tTex1df4" Name 15 "g_sSamp" - Name 24 "r02" - Name 28 "g_tTex1di4" - Name 36 "r04" - Name 40 "g_tTex1du4" - Name 48 "r20" - Name 51 "g_tTex2df4" - Name 63 "r22" - Name 66 "g_tTex2di4" - Name 75 "r24" - Name 78 "g_tTex2du4" - Name 87 "r50" - Name 90 "g_tTexcdf4" - Name 102 "r52" - Name 105 "g_tTexcdi4" - Name 114 "r54" - Name 117 "g_tTexcdu4" - Name 127 "PS_OUTPUT" - MemberName 127(PS_OUTPUT) 0 "Color" - MemberName 127(PS_OUTPUT) 1 "Depth" - Name 129 "psout" - Name 138 "Color" - Name 142 "Depth" - Name 148 "g_tTex3df4" - Name 151 "g_tTex3di4" - Name 154 "g_tTex3du4" - Name 157 "g_tTex1df4a" - Name 160 "g_tTex1di4a" - Name 163 "g_tTex1du4a" - Name 166 "g_tTex2df4a" - Name 169 "g_tTex2di4a" - Name 172 "g_tTex2du4a" - Name 175 "g_tTexcdf4a" - Name 178 "g_tTexcdi4a" - Name 181 "g_tTexcdu4a" + Name 26 "r02" + Name 30 "g_tTex1di4" + Name 39 "r04" + Name 43 "g_tTex1du4" + Name 52 "r20" + Name 55 "g_tTex2df4" + Name 69 "r22" + Name 72 "g_tTex2di4" + Name 83 "r24" + Name 86 "g_tTex2du4" + Name 97 "r50" + Name 100 "g_tTexcdf4" + Name 115 "r52" + Name 118 "g_tTexcdi4" + Name 130 "r54" + Name 133 "g_tTexcdu4" + Name 145 "PS_OUTPUT" + MemberName 145(PS_OUTPUT) 0 "Color" + MemberName 145(PS_OUTPUT) 1 "Depth" + Name 147 "psout" + Name 156 "Color" + Name 160 "Depth" + Name 166 "g_tTex3df4" + Name 169 "g_tTex3di4" + Name 172 "g_tTex3du4" + Name 175 "g_tTex1df4a" + Name 178 "g_tTex1di4a" + Name 181 "g_tTex1du4a" + Name 184 "g_tTex2df4a" + Name 187 "g_tTex2di4a" + Name 190 "g_tTex2du4a" + Name 193 "g_tTexcdf4a" + Name 196 "g_tTexcdi4a" + Name 199 "g_tTexcdu4a" Decorate 11(g_tTex1df4) DescriptorSet 0 Decorate 11(g_tTex1df4) Binding 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 28(g_tTex1di4) DescriptorSet 0 - Decorate 40(g_tTex1du4) DescriptorSet 0 - Decorate 51(g_tTex2df4) DescriptorSet 0 - Decorate 66(g_tTex2di4) DescriptorSet 0 - Decorate 78(g_tTex2du4) DescriptorSet 0 - Decorate 90(g_tTexcdf4) DescriptorSet 0 - Decorate 105(g_tTexcdi4) DescriptorSet 0 - Decorate 117(g_tTexcdu4) DescriptorSet 0 - Decorate 138(Color) Location 0 - Decorate 142(Depth) BuiltIn FragDepth - Decorate 148(g_tTex3df4) DescriptorSet 0 - Decorate 151(g_tTex3di4) DescriptorSet 0 - Decorate 154(g_tTex3du4) DescriptorSet 0 - Decorate 157(g_tTex1df4a) DescriptorSet 0 - Decorate 160(g_tTex1di4a) DescriptorSet 0 - Decorate 163(g_tTex1du4a) DescriptorSet 0 - Decorate 166(g_tTex2df4a) DescriptorSet 0 - Decorate 169(g_tTex2di4a) DescriptorSet 0 - Decorate 172(g_tTex2du4a) DescriptorSet 0 - Decorate 175(g_tTexcdf4a) DescriptorSet 0 - Decorate 178(g_tTexcdi4a) DescriptorSet 0 - Decorate 181(g_tTexcdu4a) DescriptorSet 0 + Decorate 30(g_tTex1di4) DescriptorSet 0 + Decorate 43(g_tTex1du4) DescriptorSet 0 + Decorate 55(g_tTex2df4) DescriptorSet 0 + Decorate 72(g_tTex2di4) DescriptorSet 0 + Decorate 86(g_tTex2du4) DescriptorSet 0 + Decorate 100(g_tTexcdf4) DescriptorSet 0 + Decorate 118(g_tTexcdi4) DescriptorSet 0 + Decorate 133(g_tTexcdu4) DescriptorSet 0 + Decorate 156(Color) Location 0 + Decorate 160(Depth) BuiltIn FragDepth + Decorate 166(g_tTex3df4) DescriptorSet 0 + Decorate 169(g_tTex3di4) DescriptorSet 0 + Decorate 172(g_tTex3du4) DescriptorSet 0 + Decorate 175(g_tTex1df4a) DescriptorSet 0 + Decorate 178(g_tTex1di4a) DescriptorSet 0 + Decorate 181(g_tTex1du4a) DescriptorSet 0 + Decorate 184(g_tTex2df4a) DescriptorSet 0 + Decorate 187(g_tTex2di4a) DescriptorSet 0 + Decorate 190(g_tTex2du4a) DescriptorSet 0 + Decorate 193(g_tTexcdf4a) DescriptorSet 0 + Decorate 196(g_tTexcdi4a) DescriptorSet 0 + Decorate 199(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -454,183 +454,201 @@ gl_FragCoord origin is upper left 18: TypeSampledImage 17 20: 6(float) Constant 1036831949 21: 6(float) Constant 1061158912 - 25: TypeInt 32 1 - 26: TypeImage 25(int) 1D sampled format:Unknown - 27: TypePointer UniformConstant 26 - 28(g_tTex1di4): 27(ptr) Variable UniformConstant - 31: TypeImage 25(int) 1D depth sampled format:Unknown - 32: TypeSampledImage 31 - 37: TypeInt 32 0 - 38: TypeImage 37(int) 1D sampled format:Unknown - 39: TypePointer UniformConstant 38 - 40(g_tTex1du4): 39(ptr) Variable UniformConstant - 43: TypeImage 37(int) 1D depth sampled format:Unknown - 44: TypeSampledImage 43 - 49: TypeImage 6(float) 2D sampled format:Unknown - 50: TypePointer UniformConstant 49 - 51(g_tTex2df4): 50(ptr) Variable UniformConstant - 54: TypeImage 6(float) 2D depth sampled format:Unknown - 55: TypeSampledImage 54 - 57: TypeVector 6(float) 2 - 58: 6(float) Constant 1045220557 - 59: 57(fvec2) ConstantComposite 20 58 - 64: TypeImage 25(int) 2D sampled format:Unknown - 65: TypePointer UniformConstant 64 - 66(g_tTex2di4): 65(ptr) Variable UniformConstant - 69: TypeImage 25(int) 2D depth sampled format:Unknown - 70: TypeSampledImage 69 - 76: TypeImage 37(int) 2D sampled format:Unknown - 77: TypePointer UniformConstant 76 - 78(g_tTex2du4): 77(ptr) Variable UniformConstant - 81: TypeImage 37(int) 2D depth sampled format:Unknown - 82: TypeSampledImage 81 - 88: TypeImage 6(float) Cube sampled format:Unknown - 89: TypePointer UniformConstant 88 - 90(g_tTexcdf4): 89(ptr) Variable UniformConstant - 93: TypeImage 6(float) Cube depth sampled format:Unknown - 94: TypeSampledImage 93 - 96: TypeVector 6(float) 3 - 97: 6(float) Constant 1050253722 - 98: 96(fvec3) ConstantComposite 20 58 97 - 103: TypeImage 25(int) Cube sampled format:Unknown - 104: TypePointer UniformConstant 103 - 105(g_tTexcdi4): 104(ptr) Variable UniformConstant - 108: TypeImage 25(int) Cube depth sampled format:Unknown - 109: TypeSampledImage 108 - 115: TypeImage 37(int) Cube sampled format:Unknown - 116: TypePointer UniformConstant 115 - 117(g_tTexcdu4): 116(ptr) Variable UniformConstant - 120: TypeImage 37(int) Cube depth sampled format:Unknown - 121: TypeSampledImage 120 - 126: TypeVector 6(float) 4 - 127(PS_OUTPUT): TypeStruct 126(fvec4) 6(float) - 128: TypePointer Function 127(PS_OUTPUT) - 130: 25(int) Constant 0 - 131: 6(float) Constant 1065353216 - 132: 126(fvec4) ConstantComposite 131 131 131 131 - 133: TypePointer Function 126(fvec4) - 135: 25(int) Constant 1 - 137: TypePointer Output 126(fvec4) - 138(Color): 137(ptr) Variable Output - 141: TypePointer Output 6(float) - 142(Depth): 141(ptr) Variable Output - 146: TypeImage 6(float) 3D sampled format:Unknown - 147: TypePointer UniformConstant 146 - 148(g_tTex3df4): 147(ptr) Variable UniformConstant - 149: TypeImage 25(int) 3D sampled format:Unknown - 150: TypePointer UniformConstant 149 - 151(g_tTex3di4): 150(ptr) Variable UniformConstant - 152: TypeImage 37(int) 3D sampled format:Unknown - 153: TypePointer UniformConstant 152 - 154(g_tTex3du4): 153(ptr) Variable UniformConstant - 155: TypeImage 6(float) 1D array sampled format:Unknown - 156: TypePointer UniformConstant 155 -157(g_tTex1df4a): 156(ptr) Variable UniformConstant - 158: TypeImage 25(int) 1D array sampled format:Unknown - 159: TypePointer UniformConstant 158 -160(g_tTex1di4a): 159(ptr) Variable UniformConstant - 161: TypeImage 37(int) 1D array sampled format:Unknown - 162: TypePointer UniformConstant 161 -163(g_tTex1du4a): 162(ptr) Variable UniformConstant - 164: TypeImage 6(float) 2D array sampled format:Unknown + 22: TypeVector 6(float) 2 + 27: TypeInt 32 1 + 28: TypeImage 27(int) 1D sampled format:Unknown + 29: TypePointer UniformConstant 28 + 30(g_tTex1di4): 29(ptr) Variable UniformConstant + 33: TypeImage 27(int) 1D depth sampled format:Unknown + 34: TypeSampledImage 33 + 40: TypeInt 32 0 + 41: TypeImage 40(int) 1D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex1du4): 42(ptr) Variable UniformConstant + 46: TypeImage 40(int) 1D depth sampled format:Unknown + 47: TypeSampledImage 46 + 53: TypeImage 6(float) 2D sampled format:Unknown + 54: TypePointer UniformConstant 53 + 55(g_tTex2df4): 54(ptr) Variable UniformConstant + 58: TypeImage 6(float) 2D depth sampled format:Unknown + 59: TypeSampledImage 58 + 61: 6(float) Constant 1045220557 + 62: 22(fvec2) ConstantComposite 20 61 + 63: TypeVector 6(float) 3 + 70: TypeImage 27(int) 2D sampled format:Unknown + 71: TypePointer UniformConstant 70 + 72(g_tTex2di4): 71(ptr) Variable UniformConstant + 75: TypeImage 27(int) 2D depth sampled format:Unknown + 76: TypeSampledImage 75 + 84: TypeImage 40(int) 2D sampled format:Unknown + 85: TypePointer UniformConstant 84 + 86(g_tTex2du4): 85(ptr) Variable UniformConstant + 89: TypeImage 40(int) 2D depth sampled format:Unknown + 90: TypeSampledImage 89 + 98: TypeImage 6(float) Cube sampled format:Unknown + 99: TypePointer UniformConstant 98 + 100(g_tTexcdf4): 99(ptr) Variable UniformConstant + 103: TypeImage 6(float) Cube depth sampled format:Unknown + 104: TypeSampledImage 103 + 106: 6(float) Constant 1050253722 + 107: 63(fvec3) ConstantComposite 20 61 106 + 108: TypeVector 6(float) 4 + 116: TypeImage 27(int) Cube sampled format:Unknown + 117: TypePointer UniformConstant 116 + 118(g_tTexcdi4): 117(ptr) Variable UniformConstant + 121: TypeImage 27(int) Cube depth sampled format:Unknown + 122: TypeSampledImage 121 + 131: TypeImage 40(int) Cube sampled format:Unknown + 132: TypePointer UniformConstant 131 + 133(g_tTexcdu4): 132(ptr) Variable UniformConstant + 136: TypeImage 40(int) Cube depth sampled format:Unknown + 137: TypeSampledImage 136 + 145(PS_OUTPUT): TypeStruct 108(fvec4) 6(float) + 146: TypePointer Function 145(PS_OUTPUT) + 148: 27(int) Constant 0 + 149: 6(float) Constant 1065353216 + 150: 108(fvec4) ConstantComposite 149 149 149 149 + 151: TypePointer Function 108(fvec4) + 153: 27(int) Constant 1 + 155: TypePointer Output 108(fvec4) + 156(Color): 155(ptr) Variable Output + 159: TypePointer Output 6(float) + 160(Depth): 159(ptr) Variable Output + 164: TypeImage 6(float) 3D sampled format:Unknown 165: TypePointer UniformConstant 164 -166(g_tTex2df4a): 165(ptr) Variable UniformConstant - 167: TypeImage 25(int) 2D array sampled format:Unknown + 166(g_tTex3df4): 165(ptr) Variable UniformConstant + 167: TypeImage 27(int) 3D sampled format:Unknown 168: TypePointer UniformConstant 167 -169(g_tTex2di4a): 168(ptr) Variable UniformConstant - 170: TypeImage 37(int) 2D array sampled format:Unknown + 169(g_tTex3di4): 168(ptr) Variable UniformConstant + 170: TypeImage 40(int) 3D sampled format:Unknown 171: TypePointer UniformConstant 170 -172(g_tTex2du4a): 171(ptr) Variable UniformConstant - 173: TypeImage 6(float) Cube array sampled format:Unknown + 172(g_tTex3du4): 171(ptr) Variable UniformConstant + 173: TypeImage 6(float) 1D array sampled format:Unknown 174: TypePointer UniformConstant 173 -175(g_tTexcdf4a): 174(ptr) Variable UniformConstant - 176: TypeImage 25(int) Cube array sampled format:Unknown +175(g_tTex1df4a): 174(ptr) Variable UniformConstant + 176: TypeImage 27(int) 1D array sampled format:Unknown 177: TypePointer UniformConstant 176 -178(g_tTexcdi4a): 177(ptr) Variable UniformConstant - 179: TypeImage 37(int) Cube array sampled format:Unknown +178(g_tTex1di4a): 177(ptr) Variable UniformConstant + 179: TypeImage 40(int) 1D array sampled format:Unknown 180: TypePointer UniformConstant 179 -181(g_tTexcdu4a): 180(ptr) Variable UniformConstant +181(g_tTex1du4a): 180(ptr) Variable UniformConstant + 182: TypeImage 6(float) 2D array sampled format:Unknown + 183: TypePointer UniformConstant 182 +184(g_tTex2df4a): 183(ptr) Variable UniformConstant + 185: TypeImage 27(int) 2D array sampled format:Unknown + 186: TypePointer UniformConstant 185 +187(g_tTex2di4a): 186(ptr) Variable UniformConstant + 188: TypeImage 40(int) 2D array sampled format:Unknown + 189: TypePointer UniformConstant 188 +190(g_tTex2du4a): 189(ptr) Variable UniformConstant + 191: TypeImage 6(float) Cube array sampled format:Unknown + 192: TypePointer UniformConstant 191 +193(g_tTexcdf4a): 192(ptr) Variable UniformConstant + 194: TypeImage 27(int) Cube array sampled format:Unknown + 195: TypePointer UniformConstant 194 +196(g_tTexcdi4a): 195(ptr) Variable UniformConstant + 197: TypeImage 40(int) Cube array sampled format:Unknown + 198: TypePointer UniformConstant 197 +199(g_tTexcdu4a): 198(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r00): 7(ptr) Variable Function - 24(r02): 7(ptr) Variable Function - 36(r04): 7(ptr) Variable Function - 48(r20): 7(ptr) Variable Function - 63(r22): 7(ptr) Variable Function - 75(r24): 7(ptr) Variable Function - 87(r50): 7(ptr) Variable Function - 102(r52): 7(ptr) Variable Function - 114(r54): 7(ptr) Variable Function - 129(psout): 128(ptr) Variable Function + 26(r02): 7(ptr) Variable Function + 39(r04): 7(ptr) Variable Function + 52(r20): 7(ptr) Variable Function + 69(r22): 7(ptr) Variable Function + 83(r24): 7(ptr) Variable Function + 97(r50): 7(ptr) Variable Function + 115(r52): 7(ptr) Variable Function + 130(r54): 7(ptr) Variable Function + 147(psout): 146(ptr) Variable Function 12: 9 Load 11(g_tTex1df4) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 22: 6(float) CompositeExtract 20 0 - 23: 6(float) ImageSampleDrefImplicitLod 19 20 22 - Store 8(r00) 23 - 29: 26 Load 28(g_tTex1di4) - 30: 13 Load 15(g_sSamp) - 33: 32 SampledImage 29 30 - 34: 6(float) CompositeExtract 20 0 - 35: 6(float) ImageSampleDrefImplicitLod 33 20 34 - Store 24(r02) 35 - 41: 38 Load 40(g_tTex1du4) - 42: 13 Load 15(g_sSamp) - 45: 44 SampledImage 41 42 - 46: 6(float) CompositeExtract 20 0 - 47: 6(float) ImageSampleDrefImplicitLod 45 20 46 - Store 36(r04) 47 - 52: 49 Load 51(g_tTex2df4) - 53: 13 Load 15(g_sSamp) - 56: 55 SampledImage 52 53 - 60: 6(float) CompositeExtract 59 0 - 61: 6(float) CompositeExtract 60 0 - 62: 6(float) ImageSampleDrefImplicitLod 56 60 61 - Store 48(r20) 62 - 67: 64 Load 66(g_tTex2di4) - 68: 13 Load 15(g_sSamp) - 71: 70 SampledImage 67 68 - 72: 6(float) CompositeExtract 59 0 - 73: 6(float) CompositeExtract 72 0 - 74: 6(float) ImageSampleDrefImplicitLod 71 72 73 - Store 63(r22) 74 - 79: 76 Load 78(g_tTex2du4) - 80: 13 Load 15(g_sSamp) - 83: 82 SampledImage 79 80 - 84: 6(float) CompositeExtract 59 0 - 85: 6(float) CompositeExtract 84 0 - 86: 6(float) ImageSampleDrefImplicitLod 83 84 85 - Store 75(r24) 86 - 91: 88 Load 90(g_tTexcdf4) - 92: 13 Load 15(g_sSamp) - 95: 94 SampledImage 91 92 - 99: 6(float) CompositeExtract 98 0 - 100: 6(float) CompositeExtract 99 0 - 101: 6(float) ImageSampleDrefImplicitLod 95 99 100 - Store 87(r50) 101 - 106: 103 Load 105(g_tTexcdi4) - 107: 13 Load 15(g_sSamp) - 110: 109 SampledImage 106 107 - 111: 6(float) CompositeExtract 98 0 - 112: 6(float) CompositeExtract 111 0 - 113: 6(float) ImageSampleDrefImplicitLod 110 111 112 - Store 102(r52) 113 - 118: 115 Load 117(g_tTexcdu4) - 119: 13 Load 15(g_sSamp) - 122: 121 SampledImage 118 119 - 123: 6(float) CompositeExtract 98 0 - 124: 6(float) CompositeExtract 123 0 - 125: 6(float) ImageSampleDrefImplicitLod 122 123 124 - Store 114(r54) 125 - 134: 133(ptr) AccessChain 129(psout) 130 - Store 134 132 - 136: 7(ptr) AccessChain 129(psout) 135 - Store 136 131 - 139: 133(ptr) AccessChain 129(psout) 130 - 140: 126(fvec4) Load 139 - Store 138(Color) 140 - 143: 7(ptr) AccessChain 129(psout) 135 - 144: 6(float) Load 143 - Store 142(Depth) 144 + 23: 22(fvec2) CompositeConstruct 20 21 + 24: 6(float) CompositeExtract 23 1 + 25: 6(float) ImageSampleDrefImplicitLod 19 23 24 + Store 8(r00) 25 + 31: 28 Load 30(g_tTex1di4) + 32: 13 Load 15(g_sSamp) + 35: 34 SampledImage 31 32 + 36: 22(fvec2) CompositeConstruct 20 21 + 37: 6(float) CompositeExtract 36 1 + 38: 6(float) ImageSampleDrefImplicitLod 35 36 37 + Store 26(r02) 38 + 44: 41 Load 43(g_tTex1du4) + 45: 13 Load 15(g_sSamp) + 48: 47 SampledImage 44 45 + 49: 22(fvec2) CompositeConstruct 20 21 + 50: 6(float) CompositeExtract 49 1 + 51: 6(float) ImageSampleDrefImplicitLod 48 49 50 + Store 39(r04) 51 + 56: 53 Load 55(g_tTex2df4) + 57: 13 Load 15(g_sSamp) + 60: 59 SampledImage 56 57 + 64: 6(float) CompositeExtract 62 0 + 65: 6(float) CompositeExtract 62 1 + 66: 63(fvec3) CompositeConstruct 64 65 21 + 67: 6(float) CompositeExtract 66 2 + 68: 6(float) ImageSampleDrefImplicitLod 60 66 67 + Store 52(r20) 68 + 73: 70 Load 72(g_tTex2di4) + 74: 13 Load 15(g_sSamp) + 77: 76 SampledImage 73 74 + 78: 6(float) CompositeExtract 62 0 + 79: 6(float) CompositeExtract 62 1 + 80: 63(fvec3) CompositeConstruct 78 79 21 + 81: 6(float) CompositeExtract 80 2 + 82: 6(float) ImageSampleDrefImplicitLod 77 80 81 + Store 69(r22) 82 + 87: 84 Load 86(g_tTex2du4) + 88: 13 Load 15(g_sSamp) + 91: 90 SampledImage 87 88 + 92: 6(float) CompositeExtract 62 0 + 93: 6(float) CompositeExtract 62 1 + 94: 63(fvec3) CompositeConstruct 92 93 21 + 95: 6(float) CompositeExtract 94 2 + 96: 6(float) ImageSampleDrefImplicitLod 91 94 95 + Store 83(r24) 96 + 101: 98 Load 100(g_tTexcdf4) + 102: 13 Load 15(g_sSamp) + 105: 104 SampledImage 101 102 + 109: 6(float) CompositeExtract 107 0 + 110: 6(float) CompositeExtract 107 1 + 111: 6(float) CompositeExtract 107 2 + 112: 108(fvec4) CompositeConstruct 109 110 111 21 + 113: 6(float) CompositeExtract 112 3 + 114: 6(float) ImageSampleDrefImplicitLod 105 112 113 + Store 97(r50) 114 + 119: 116 Load 118(g_tTexcdi4) + 120: 13 Load 15(g_sSamp) + 123: 122 SampledImage 119 120 + 124: 6(float) CompositeExtract 107 0 + 125: 6(float) CompositeExtract 107 1 + 126: 6(float) CompositeExtract 107 2 + 127: 108(fvec4) CompositeConstruct 124 125 126 21 + 128: 6(float) CompositeExtract 127 3 + 129: 6(float) ImageSampleDrefImplicitLod 123 127 128 + Store 115(r52) 129 + 134: 131 Load 133(g_tTexcdu4) + 135: 13 Load 15(g_sSamp) + 138: 137 SampledImage 134 135 + 139: 6(float) CompositeExtract 107 0 + 140: 6(float) CompositeExtract 107 1 + 141: 6(float) CompositeExtract 107 2 + 142: 108(fvec4) CompositeConstruct 139 140 141 21 + 143: 6(float) CompositeExtract 142 3 + 144: 6(float) ImageSampleDrefImplicitLod 138 142 143 + Store 130(r54) 144 + 152: 151(ptr) AccessChain 147(psout) 148 + Store 152 150 + 154: 7(ptr) AccessChain 147(psout) 153 + Store 154 149 + 157: 151(ptr) AccessChain 147(psout) 148 + 158: 108(fvec4) Load 157 + Store 156(Color) 158 + 161: 7(ptr) AccessChain 147(psout) 153 + 162: 6(float) Load 161 + Store 160(Depth) 162 Return FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index 021e08f6..fd3250f5 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -26,7 +26,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -40,7 +40,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -54,7 +54,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -86,7 +86,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -170,7 +170,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -198,7 +198,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -212,7 +212,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -228,7 +228,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -313,76 +313,76 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 156 +// Id's are bound by 166 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 103 107 + EntryPoint Fragment 4 "main" 113 117 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r01" Name 11 "g_tTex1df4" Name 15 "g_sSamp" - Name 26 "r03" - Name 29 "g_tTex1di4" - Name 37 "r05" - Name 41 "g_tTex1du4" - Name 49 "r21" - Name 52 "g_tTex2df4" - Name 67 "r23" - Name 70 "g_tTex2di4" - Name 79 "r25" - Name 82 "g_tTex2du4" - Name 92 "PS_OUTPUT" - MemberName 92(PS_OUTPUT) 0 "Color" - MemberName 92(PS_OUTPUT) 1 "Depth" - Name 94 "psout" - Name 103 "Color" - Name 107 "Depth" - Name 113 "g_tTex3df4" - Name 116 "g_tTex3di4" - Name 119 "g_tTex3du4" - Name 122 "g_tTexcdf4" - Name 125 "g_tTexcdi4" - Name 128 "g_tTexcdu4" - Name 131 "g_tTex1df4a" - Name 134 "g_tTex1di4a" - Name 137 "g_tTex1du4a" - Name 140 "g_tTex2df4a" - Name 143 "g_tTex2di4a" - Name 146 "g_tTex2du4a" - Name 149 "g_tTexcdf4a" - Name 152 "g_tTexcdi4a" - Name 155 "g_tTexcdu4a" + Name 28 "r03" + Name 31 "g_tTex1di4" + Name 40 "r05" + Name 44 "g_tTex1du4" + Name 53 "r21" + Name 56 "g_tTex2df4" + Name 73 "r23" + Name 76 "g_tTex2di4" + Name 87 "r25" + Name 90 "g_tTex2du4" + Name 102 "PS_OUTPUT" + MemberName 102(PS_OUTPUT) 0 "Color" + MemberName 102(PS_OUTPUT) 1 "Depth" + Name 104 "psout" + Name 113 "Color" + Name 117 "Depth" + Name 123 "g_tTex3df4" + Name 126 "g_tTex3di4" + Name 129 "g_tTex3du4" + Name 132 "g_tTexcdf4" + Name 135 "g_tTexcdi4" + Name 138 "g_tTexcdu4" + Name 141 "g_tTex1df4a" + Name 144 "g_tTex1di4a" + Name 147 "g_tTex1du4a" + Name 150 "g_tTex2df4a" + Name 153 "g_tTex2di4a" + Name 156 "g_tTex2du4a" + Name 159 "g_tTexcdf4a" + Name 162 "g_tTexcdi4a" + Name 165 "g_tTexcdu4a" Decorate 11(g_tTex1df4) DescriptorSet 0 Decorate 11(g_tTex1df4) Binding 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 29(g_tTex1di4) DescriptorSet 0 - Decorate 41(g_tTex1du4) DescriptorSet 0 - Decorate 52(g_tTex2df4) DescriptorSet 0 - Decorate 70(g_tTex2di4) DescriptorSet 0 - Decorate 82(g_tTex2du4) DescriptorSet 0 - Decorate 103(Color) Location 0 - Decorate 107(Depth) BuiltIn FragDepth - Decorate 113(g_tTex3df4) DescriptorSet 0 - Decorate 116(g_tTex3di4) DescriptorSet 0 - Decorate 119(g_tTex3du4) DescriptorSet 0 - Decorate 122(g_tTexcdf4) DescriptorSet 0 - Decorate 125(g_tTexcdi4) DescriptorSet 0 - Decorate 128(g_tTexcdu4) DescriptorSet 0 - Decorate 131(g_tTex1df4a) DescriptorSet 0 - Decorate 134(g_tTex1di4a) DescriptorSet 0 - Decorate 137(g_tTex1du4a) DescriptorSet 0 - Decorate 140(g_tTex2df4a) DescriptorSet 0 - Decorate 143(g_tTex2di4a) DescriptorSet 0 - Decorate 146(g_tTex2du4a) DescriptorSet 0 - Decorate 149(g_tTexcdf4a) DescriptorSet 0 - Decorate 152(g_tTexcdi4a) DescriptorSet 0 - Decorate 155(g_tTexcdu4a) DescriptorSet 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 44(g_tTex1du4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 76(g_tTex2di4) DescriptorSet 0 + Decorate 90(g_tTex2du4) DescriptorSet 0 + Decorate 113(Color) Location 0 + Decorate 117(Depth) BuiltIn FragDepth + Decorate 123(g_tTex3df4) DescriptorSet 0 + Decorate 126(g_tTex3di4) DescriptorSet 0 + Decorate 129(g_tTex3du4) DescriptorSet 0 + Decorate 132(g_tTexcdf4) DescriptorSet 0 + Decorate 135(g_tTexcdi4) DescriptorSet 0 + Decorate 138(g_tTexcdu4) DescriptorSet 0 + Decorate 141(g_tTex1df4a) DescriptorSet 0 + Decorate 144(g_tTex1di4a) DescriptorSet 0 + Decorate 147(g_tTex1du4a) DescriptorSet 0 + Decorate 150(g_tTex2df4a) DescriptorSet 0 + Decorate 153(g_tTex2di4a) DescriptorSet 0 + Decorate 156(g_tTex2du4a) DescriptorSet 0 + Decorate 159(g_tTexcdf4a) DescriptorSet 0 + Decorate 162(g_tTexcdi4a) DescriptorSet 0 + Decorate 165(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -397,154 +397,164 @@ gl_FragCoord origin is upper left 18: TypeSampledImage 17 20: 6(float) Constant 1036831949 21: 6(float) Constant 1061158912 - 22: TypeInt 32 1 - 23: 22(int) Constant 2 - 27: TypeImage 22(int) 1D sampled format:Unknown - 28: TypePointer UniformConstant 27 - 29(g_tTex1di4): 28(ptr) Variable UniformConstant - 32: TypeImage 22(int) 1D depth sampled format:Unknown - 33: TypeSampledImage 32 - 38: TypeInt 32 0 - 39: TypeImage 38(int) 1D sampled format:Unknown - 40: TypePointer UniformConstant 39 - 41(g_tTex1du4): 40(ptr) Variable UniformConstant - 44: TypeImage 38(int) 1D depth sampled format:Unknown - 45: TypeSampledImage 44 - 50: TypeImage 6(float) 2D sampled format:Unknown - 51: TypePointer UniformConstant 50 - 52(g_tTex2df4): 51(ptr) Variable UniformConstant - 55: TypeImage 6(float) 2D depth sampled format:Unknown - 56: TypeSampledImage 55 - 58: TypeVector 6(float) 2 - 59: 6(float) Constant 1045220557 - 60: 58(fvec2) ConstantComposite 20 59 - 62: TypeVector 22(int) 2 - 63: 22(int) Constant 3 - 64: 62(ivec2) ConstantComposite 23 63 - 68: TypeImage 22(int) 2D sampled format:Unknown - 69: TypePointer UniformConstant 68 - 70(g_tTex2di4): 69(ptr) Variable UniformConstant - 73: TypeImage 22(int) 2D depth sampled format:Unknown - 74: TypeSampledImage 73 - 80: TypeImage 38(int) 2D sampled format:Unknown - 81: TypePointer UniformConstant 80 - 82(g_tTex2du4): 81(ptr) Variable UniformConstant - 85: TypeImage 38(int) 2D depth sampled format:Unknown - 86: TypeSampledImage 85 - 91: TypeVector 6(float) 4 - 92(PS_OUTPUT): TypeStruct 91(fvec4) 6(float) - 93: TypePointer Function 92(PS_OUTPUT) - 95: 22(int) Constant 0 - 96: 6(float) Constant 1065353216 - 97: 91(fvec4) ConstantComposite 96 96 96 96 - 98: TypePointer Function 91(fvec4) - 100: 22(int) Constant 1 - 102: TypePointer Output 91(fvec4) - 103(Color): 102(ptr) Variable Output - 106: TypePointer Output 6(float) - 107(Depth): 106(ptr) Variable Output - 111: TypeImage 6(float) 3D sampled format:Unknown - 112: TypePointer UniformConstant 111 - 113(g_tTex3df4): 112(ptr) Variable UniformConstant - 114: TypeImage 22(int) 3D sampled format:Unknown - 115: TypePointer UniformConstant 114 - 116(g_tTex3di4): 115(ptr) Variable UniformConstant - 117: TypeImage 38(int) 3D sampled format:Unknown - 118: TypePointer UniformConstant 117 - 119(g_tTex3du4): 118(ptr) Variable UniformConstant - 120: TypeImage 6(float) Cube sampled format:Unknown - 121: TypePointer UniformConstant 120 - 122(g_tTexcdf4): 121(ptr) Variable UniformConstant - 123: TypeImage 22(int) Cube sampled format:Unknown - 124: TypePointer UniformConstant 123 - 125(g_tTexcdi4): 124(ptr) Variable UniformConstant - 126: TypeImage 38(int) Cube sampled format:Unknown - 127: TypePointer UniformConstant 126 - 128(g_tTexcdu4): 127(ptr) Variable UniformConstant - 129: TypeImage 6(float) 1D array sampled format:Unknown - 130: TypePointer UniformConstant 129 -131(g_tTex1df4a): 130(ptr) Variable UniformConstant - 132: TypeImage 22(int) 1D array sampled format:Unknown - 133: TypePointer UniformConstant 132 -134(g_tTex1di4a): 133(ptr) Variable UniformConstant - 135: TypeImage 38(int) 1D array sampled format:Unknown - 136: TypePointer UniformConstant 135 -137(g_tTex1du4a): 136(ptr) Variable UniformConstant - 138: TypeImage 6(float) 2D array sampled format:Unknown - 139: TypePointer UniformConstant 138 -140(g_tTex2df4a): 139(ptr) Variable UniformConstant - 141: TypeImage 22(int) 2D array sampled format:Unknown - 142: TypePointer UniformConstant 141 -143(g_tTex2di4a): 142(ptr) Variable UniformConstant - 144: TypeImage 38(int) 2D array sampled format:Unknown - 145: TypePointer UniformConstant 144 -146(g_tTex2du4a): 145(ptr) Variable UniformConstant - 147: TypeImage 6(float) Cube array sampled format:Unknown - 148: TypePointer UniformConstant 147 -149(g_tTexcdf4a): 148(ptr) Variable UniformConstant - 150: TypeImage 22(int) Cube array sampled format:Unknown - 151: TypePointer UniformConstant 150 -152(g_tTexcdi4a): 151(ptr) Variable UniformConstant - 153: TypeImage 38(int) Cube array sampled format:Unknown - 154: TypePointer UniformConstant 153 -155(g_tTexcdu4a): 154(ptr) Variable UniformConstant + 22: TypeVector 6(float) 2 + 24: TypeInt 32 1 + 25: 24(int) Constant 2 + 29: TypeImage 24(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 34: TypeImage 24(int) 1D depth sampled format:Unknown + 35: TypeSampledImage 34 + 41: TypeInt 32 0 + 42: TypeImage 41(int) 1D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(g_tTex1du4): 43(ptr) Variable UniformConstant + 47: TypeImage 41(int) 1D depth sampled format:Unknown + 48: TypeSampledImage 47 + 54: TypeImage 6(float) 2D sampled format:Unknown + 55: TypePointer UniformConstant 54 + 56(g_tTex2df4): 55(ptr) Variable UniformConstant + 59: TypeImage 6(float) 2D depth sampled format:Unknown + 60: TypeSampledImage 59 + 62: 6(float) Constant 1045220557 + 63: 22(fvec2) ConstantComposite 20 62 + 64: TypeVector 6(float) 3 + 68: TypeVector 24(int) 2 + 69: 24(int) Constant 3 + 70: 68(ivec2) ConstantComposite 25 69 + 74: TypeImage 24(int) 2D sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex2di4): 75(ptr) Variable UniformConstant + 79: TypeImage 24(int) 2D depth sampled format:Unknown + 80: TypeSampledImage 79 + 88: TypeImage 41(int) 2D sampled format:Unknown + 89: TypePointer UniformConstant 88 + 90(g_tTex2du4): 89(ptr) Variable UniformConstant + 93: TypeImage 41(int) 2D depth sampled format:Unknown + 94: TypeSampledImage 93 + 101: TypeVector 6(float) 4 + 102(PS_OUTPUT): TypeStruct 101(fvec4) 6(float) + 103: TypePointer Function 102(PS_OUTPUT) + 105: 24(int) Constant 0 + 106: 6(float) Constant 1065353216 + 107: 101(fvec4) ConstantComposite 106 106 106 106 + 108: TypePointer Function 101(fvec4) + 110: 24(int) Constant 1 + 112: TypePointer Output 101(fvec4) + 113(Color): 112(ptr) Variable Output + 116: TypePointer Output 6(float) + 117(Depth): 116(ptr) Variable Output + 121: TypeImage 6(float) 3D sampled format:Unknown + 122: TypePointer UniformConstant 121 + 123(g_tTex3df4): 122(ptr) Variable UniformConstant + 124: TypeImage 24(int) 3D sampled format:Unknown + 125: TypePointer UniformConstant 124 + 126(g_tTex3di4): 125(ptr) Variable UniformConstant + 127: TypeImage 41(int) 3D sampled format:Unknown + 128: TypePointer UniformConstant 127 + 129(g_tTex3du4): 128(ptr) Variable UniformConstant + 130: TypeImage 6(float) Cube sampled format:Unknown + 131: TypePointer UniformConstant 130 + 132(g_tTexcdf4): 131(ptr) Variable UniformConstant + 133: TypeImage 24(int) Cube sampled format:Unknown + 134: TypePointer UniformConstant 133 + 135(g_tTexcdi4): 134(ptr) Variable UniformConstant + 136: TypeImage 41(int) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdu4): 137(ptr) Variable UniformConstant + 139: TypeImage 6(float) 1D array sampled format:Unknown + 140: TypePointer UniformConstant 139 +141(g_tTex1df4a): 140(ptr) Variable UniformConstant + 142: TypeImage 24(int) 1D array sampled format:Unknown + 143: TypePointer UniformConstant 142 +144(g_tTex1di4a): 143(ptr) Variable UniformConstant + 145: TypeImage 41(int) 1D array sampled format:Unknown + 146: TypePointer UniformConstant 145 +147(g_tTex1du4a): 146(ptr) Variable UniformConstant + 148: TypeImage 6(float) 2D array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTex2df4a): 149(ptr) Variable UniformConstant + 151: TypeImage 24(int) 2D array sampled format:Unknown + 152: TypePointer UniformConstant 151 +153(g_tTex2di4a): 152(ptr) Variable UniformConstant + 154: TypeImage 41(int) 2D array sampled format:Unknown + 155: TypePointer UniformConstant 154 +156(g_tTex2du4a): 155(ptr) Variable UniformConstant + 157: TypeImage 6(float) Cube array sampled format:Unknown + 158: TypePointer UniformConstant 157 +159(g_tTexcdf4a): 158(ptr) Variable UniformConstant + 160: TypeImage 24(int) Cube array sampled format:Unknown + 161: TypePointer UniformConstant 160 +162(g_tTexcdi4a): 161(ptr) Variable UniformConstant + 163: TypeImage 41(int) Cube array sampled format:Unknown + 164: TypePointer UniformConstant 163 +165(g_tTexcdu4a): 164(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r01): 7(ptr) Variable Function - 26(r03): 7(ptr) Variable Function - 37(r05): 7(ptr) Variable Function - 49(r21): 7(ptr) Variable Function - 67(r23): 7(ptr) Variable Function - 79(r25): 7(ptr) Variable Function - 94(psout): 93(ptr) Variable Function + 28(r03): 7(ptr) Variable Function + 40(r05): 7(ptr) Variable Function + 53(r21): 7(ptr) Variable Function + 73(r23): 7(ptr) Variable Function + 87(r25): 7(ptr) Variable Function + 104(psout): 103(ptr) Variable Function 12: 9 Load 11(g_tTex1df4) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 24: 6(float) CompositeExtract 20 0 - 25: 6(float) ImageSampleDrefImplicitLod 19 20 24 ConstOffset 23 - Store 8(r01) 25 - 30: 27 Load 29(g_tTex1di4) - 31: 13 Load 15(g_sSamp) - 34: 33 SampledImage 30 31 - 35: 6(float) CompositeExtract 20 0 - 36: 6(float) ImageSampleDrefImplicitLod 34 20 35 ConstOffset 23 - Store 26(r03) 36 - 42: 39 Load 41(g_tTex1du4) - 43: 13 Load 15(g_sSamp) - 46: 45 SampledImage 42 43 - 47: 6(float) CompositeExtract 20 0 - 48: 6(float) ImageSampleDrefImplicitLod 46 20 47 ConstOffset 23 - Store 37(r05) 48 - 53: 50 Load 52(g_tTex2df4) - 54: 13 Load 15(g_sSamp) - 57: 56 SampledImage 53 54 - 61: 6(float) CompositeExtract 60 0 - 65: 6(float) CompositeExtract 61 0 - 66: 6(float) ImageSampleDrefImplicitLod 57 61 65 ConstOffset 64 - Store 49(r21) 66 - 71: 68 Load 70(g_tTex2di4) - 72: 13 Load 15(g_sSamp) - 75: 74 SampledImage 71 72 - 76: 6(float) CompositeExtract 60 0 - 77: 6(float) CompositeExtract 76 0 - 78: 6(float) ImageSampleDrefImplicitLod 75 76 77 ConstOffset 64 - Store 67(r23) 78 - 83: 80 Load 82(g_tTex2du4) - 84: 13 Load 15(g_sSamp) - 87: 86 SampledImage 83 84 - 88: 6(float) CompositeExtract 60 0 - 89: 6(float) CompositeExtract 88 0 - 90: 6(float) ImageSampleDrefImplicitLod 87 88 89 ConstOffset 64 - Store 79(r25) 90 - 99: 98(ptr) AccessChain 94(psout) 95 - Store 99 97 - 101: 7(ptr) AccessChain 94(psout) 100 - Store 101 96 - 104: 98(ptr) AccessChain 94(psout) 95 - 105: 91(fvec4) Load 104 - Store 103(Color) 105 - 108: 7(ptr) AccessChain 94(psout) 100 - 109: 6(float) Load 108 - Store 107(Depth) 109 + 23: 22(fvec2) CompositeConstruct 20 21 + 26: 6(float) CompositeExtract 23 1 + 27: 6(float) ImageSampleDrefImplicitLod 19 23 26 ConstOffset 25 + Store 8(r01) 27 + 32: 29 Load 31(g_tTex1di4) + 33: 13 Load 15(g_sSamp) + 36: 35 SampledImage 32 33 + 37: 22(fvec2) CompositeConstruct 20 21 + 38: 6(float) CompositeExtract 37 1 + 39: 6(float) ImageSampleDrefImplicitLod 36 37 38 ConstOffset 25 + Store 28(r03) 39 + 45: 42 Load 44(g_tTex1du4) + 46: 13 Load 15(g_sSamp) + 49: 48 SampledImage 45 46 + 50: 22(fvec2) CompositeConstruct 20 21 + 51: 6(float) CompositeExtract 50 1 + 52: 6(float) ImageSampleDrefImplicitLod 49 50 51 ConstOffset 25 + Store 40(r05) 52 + 57: 54 Load 56(g_tTex2df4) + 58: 13 Load 15(g_sSamp) + 61: 60 SampledImage 57 58 + 65: 6(float) CompositeExtract 63 0 + 66: 6(float) CompositeExtract 63 1 + 67: 64(fvec3) CompositeConstruct 65 66 21 + 71: 6(float) CompositeExtract 67 2 + 72: 6(float) ImageSampleDrefImplicitLod 61 67 71 ConstOffset 70 + Store 53(r21) 72 + 77: 74 Load 76(g_tTex2di4) + 78: 13 Load 15(g_sSamp) + 81: 80 SampledImage 77 78 + 82: 6(float) CompositeExtract 63 0 + 83: 6(float) CompositeExtract 63 1 + 84: 64(fvec3) CompositeConstruct 82 83 21 + 85: 6(float) CompositeExtract 84 2 + 86: 6(float) ImageSampleDrefImplicitLod 81 84 85 ConstOffset 70 + Store 73(r23) 86 + 91: 88 Load 90(g_tTex2du4) + 92: 13 Load 15(g_sSamp) + 95: 94 SampledImage 91 92 + 96: 6(float) CompositeExtract 63 0 + 97: 6(float) CompositeExtract 63 1 + 98: 64(fvec3) CompositeConstruct 96 97 21 + 99: 6(float) CompositeExtract 98 2 + 100: 6(float) ImageSampleDrefImplicitLod 95 98 99 ConstOffset 70 + Store 87(r25) 100 + 109: 108(ptr) AccessChain 104(psout) 105 + Store 109 107 + 111: 7(ptr) AccessChain 104(psout) 110 + Store 111 106 + 114: 108(ptr) AccessChain 104(psout) 105 + 115: 101(fvec4) Load 114 + Store 113(Color) 115 + 118: 7(ptr) AccessChain 104(psout) 110 + 119: 6(float) Load 118 + Store 117(Depth) 119 Return FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index 73a2a89b..05695ed4 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -27,7 +27,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -42,7 +42,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -57,7 +57,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -91,7 +91,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -176,7 +176,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -191,7 +191,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -206,7 +206,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -221,7 +221,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -238,7 +238,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -255,7 +255,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -325,76 +325,76 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 162 +// Id's are bound by 177 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 109 113 + EntryPoint Fragment 4 "main" 124 128 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r11" Name 11 "g_tTex1df4a" Name 15 "g_sSamp" - Name 30 "r13" - Name 33 "g_tTex1di4a" - Name 42 "r15" - Name 46 "g_tTex1du4a" - Name 55 "r31" - Name 58 "g_tTex2df4a" - Name 73 "r33" - Name 76 "g_tTex2di4a" - Name 85 "r35" - Name 88 "g_tTex2du4a" - Name 98 "PS_OUTPUT" - MemberName 98(PS_OUTPUT) 0 "Color" - MemberName 98(PS_OUTPUT) 1 "Depth" - Name 100 "psout" - Name 109 "Color" - Name 113 "Depth" - Name 119 "g_tTex1df4" - Name 122 "g_tTex1di4" - Name 125 "g_tTex1du4" - Name 128 "g_tTex2df4" - Name 131 "g_tTex2di4" - Name 134 "g_tTex2du4" - Name 137 "g_tTex3df4" - Name 140 "g_tTex3di4" - Name 143 "g_tTex3du4" - Name 146 "g_tTexcdf4" - Name 149 "g_tTexcdi4" - Name 152 "g_tTexcdu4" - Name 155 "g_tTexcdf4a" - Name 158 "g_tTexcdi4a" - Name 161 "g_tTexcdu4a" + Name 33 "r13" + Name 36 "g_tTex1di4a" + Name 47 "r15" + Name 51 "g_tTex1du4a" + Name 62 "r31" + Name 65 "g_tTex2df4a" + Name 83 "r33" + Name 86 "g_tTex2di4a" + Name 98 "r35" + Name 101 "g_tTex2du4a" + Name 113 "PS_OUTPUT" + MemberName 113(PS_OUTPUT) 0 "Color" + MemberName 113(PS_OUTPUT) 1 "Depth" + Name 115 "psout" + Name 124 "Color" + Name 128 "Depth" + Name 134 "g_tTex1df4" + Name 137 "g_tTex1di4" + Name 140 "g_tTex1du4" + Name 143 "g_tTex2df4" + Name 146 "g_tTex2di4" + Name 149 "g_tTex2du4" + Name 152 "g_tTex3df4" + Name 155 "g_tTex3di4" + Name 158 "g_tTex3du4" + Name 161 "g_tTexcdf4" + Name 164 "g_tTexcdi4" + Name 167 "g_tTexcdu4" + Name 170 "g_tTexcdf4a" + Name 173 "g_tTexcdi4a" + Name 176 "g_tTexcdu4a" Decorate 11(g_tTex1df4a) DescriptorSet 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4a) DescriptorSet 0 - Decorate 46(g_tTex1du4a) DescriptorSet 0 - Decorate 58(g_tTex2df4a) DescriptorSet 0 - Decorate 76(g_tTex2di4a) DescriptorSet 0 - Decorate 88(g_tTex2du4a) DescriptorSet 0 - Decorate 109(Color) Location 0 - Decorate 113(Depth) BuiltIn FragDepth - Decorate 119(g_tTex1df4) DescriptorSet 0 - Decorate 119(g_tTex1df4) Binding 0 - Decorate 122(g_tTex1di4) DescriptorSet 0 - Decorate 125(g_tTex1du4) DescriptorSet 0 - Decorate 128(g_tTex2df4) DescriptorSet 0 - Decorate 131(g_tTex2di4) DescriptorSet 0 - Decorate 134(g_tTex2du4) DescriptorSet 0 - Decorate 137(g_tTex3df4) DescriptorSet 0 - Decorate 140(g_tTex3di4) DescriptorSet 0 - Decorate 143(g_tTex3du4) DescriptorSet 0 - Decorate 146(g_tTexcdf4) DescriptorSet 0 - Decorate 149(g_tTexcdi4) DescriptorSet 0 - Decorate 152(g_tTexcdu4) DescriptorSet 0 - Decorate 155(g_tTexcdf4a) DescriptorSet 0 - Decorate 158(g_tTexcdi4a) DescriptorSet 0 - Decorate 161(g_tTexcdu4a) DescriptorSet 0 + Decorate 36(g_tTex1di4a) DescriptorSet 0 + Decorate 51(g_tTex1du4a) DescriptorSet 0 + Decorate 65(g_tTex2df4a) DescriptorSet 0 + Decorate 86(g_tTex2di4a) DescriptorSet 0 + Decorate 101(g_tTex2du4a) DescriptorSet 0 + Decorate 124(Color) Location 0 + Decorate 128(Depth) BuiltIn FragDepth + Decorate 134(g_tTex1df4) DescriptorSet 0 + Decorate 134(g_tTex1df4) Binding 0 + Decorate 137(g_tTex1di4) DescriptorSet 0 + Decorate 140(g_tTex1du4) DescriptorSet 0 + Decorate 143(g_tTex2df4) DescriptorSet 0 + Decorate 146(g_tTex2di4) DescriptorSet 0 + Decorate 149(g_tTex2du4) DescriptorSet 0 + Decorate 152(g_tTex3df4) DescriptorSet 0 + Decorate 155(g_tTex3di4) DescriptorSet 0 + Decorate 158(g_tTex3du4) DescriptorSet 0 + Decorate 161(g_tTexcdf4) DescriptorSet 0 + Decorate 164(g_tTexcdi4) DescriptorSet 0 + Decorate 167(g_tTexcdu4) DescriptorSet 0 + Decorate 170(g_tTexcdf4a) DescriptorSet 0 + Decorate 173(g_tTexcdi4a) DescriptorSet 0 + Decorate 176(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -412,157 +412,172 @@ gl_FragCoord origin is upper left 22: 6(float) Constant 1045220557 23: 20(fvec2) ConstantComposite 21 22 24: 6(float) Constant 1061158912 - 26: TypeInt 32 1 - 27: 26(int) Constant 2 - 31: TypeImage 26(int) 1D array sampled format:Unknown - 32: TypePointer UniformConstant 31 - 33(g_tTex1di4a): 32(ptr) Variable UniformConstant - 36: TypeImage 26(int) 1D depth array sampled format:Unknown - 37: TypeSampledImage 36 - 43: TypeInt 32 0 - 44: TypeImage 43(int) 1D array sampled format:Unknown - 45: TypePointer UniformConstant 44 - 46(g_tTex1du4a): 45(ptr) Variable UniformConstant - 49: TypeImage 43(int) 1D depth array sampled format:Unknown - 50: TypeSampledImage 49 - 56: TypeImage 6(float) 2D array sampled format:Unknown - 57: TypePointer UniformConstant 56 - 58(g_tTex2df4a): 57(ptr) Variable UniformConstant - 61: TypeImage 6(float) 2D depth array sampled format:Unknown - 62: TypeSampledImage 61 - 64: TypeVector 6(float) 3 - 65: 6(float) Constant 1050253722 - 66: 64(fvec3) ConstantComposite 21 22 65 - 68: TypeVector 26(int) 2 - 69: 26(int) Constant 3 - 70: 68(ivec2) ConstantComposite 27 69 - 74: TypeImage 26(int) 2D array sampled format:Unknown - 75: TypePointer UniformConstant 74 - 76(g_tTex2di4a): 75(ptr) Variable UniformConstant - 79: TypeImage 26(int) 2D depth array sampled format:Unknown - 80: TypeSampledImage 79 - 86: TypeImage 43(int) 2D array sampled format:Unknown - 87: TypePointer UniformConstant 86 - 88(g_tTex2du4a): 87(ptr) Variable UniformConstant - 91: TypeImage 43(int) 2D depth array sampled format:Unknown - 92: TypeSampledImage 91 - 97: TypeVector 6(float) 4 - 98(PS_OUTPUT): TypeStruct 97(fvec4) 6(float) - 99: TypePointer Function 98(PS_OUTPUT) - 101: 26(int) Constant 0 - 102: 6(float) Constant 1065353216 - 103: 97(fvec4) ConstantComposite 102 102 102 102 - 104: TypePointer Function 97(fvec4) - 106: 26(int) Constant 1 - 108: TypePointer Output 97(fvec4) - 109(Color): 108(ptr) Variable Output - 112: TypePointer Output 6(float) - 113(Depth): 112(ptr) Variable Output - 117: TypeImage 6(float) 1D sampled format:Unknown - 118: TypePointer UniformConstant 117 - 119(g_tTex1df4): 118(ptr) Variable UniformConstant - 120: TypeImage 26(int) 1D sampled format:Unknown - 121: TypePointer UniformConstant 120 - 122(g_tTex1di4): 121(ptr) Variable UniformConstant - 123: TypeImage 43(int) 1D sampled format:Unknown - 124: TypePointer UniformConstant 123 - 125(g_tTex1du4): 124(ptr) Variable UniformConstant - 126: TypeImage 6(float) 2D sampled format:Unknown - 127: TypePointer UniformConstant 126 - 128(g_tTex2df4): 127(ptr) Variable UniformConstant - 129: TypeImage 26(int) 2D sampled format:Unknown - 130: TypePointer UniformConstant 129 - 131(g_tTex2di4): 130(ptr) Variable UniformConstant - 132: TypeImage 43(int) 2D sampled format:Unknown + 25: TypeVector 6(float) 3 + 29: TypeInt 32 1 + 30: 29(int) Constant 2 + 34: TypeImage 29(int) 1D array sampled format:Unknown + 35: TypePointer UniformConstant 34 + 36(g_tTex1di4a): 35(ptr) Variable UniformConstant + 39: TypeImage 29(int) 1D depth array sampled format:Unknown + 40: TypeSampledImage 39 + 48: TypeInt 32 0 + 49: TypeImage 48(int) 1D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex1du4a): 50(ptr) Variable UniformConstant + 54: TypeImage 48(int) 1D depth array sampled format:Unknown + 55: TypeSampledImage 54 + 63: TypeImage 6(float) 2D array sampled format:Unknown + 64: TypePointer UniformConstant 63 + 65(g_tTex2df4a): 64(ptr) Variable UniformConstant + 68: TypeImage 6(float) 2D depth array sampled format:Unknown + 69: TypeSampledImage 68 + 71: 6(float) Constant 1050253722 + 72: 25(fvec3) ConstantComposite 21 22 71 + 73: TypeVector 6(float) 4 + 78: TypeVector 29(int) 2 + 79: 29(int) Constant 3 + 80: 78(ivec2) ConstantComposite 30 79 + 84: TypeImage 29(int) 2D array sampled format:Unknown + 85: TypePointer UniformConstant 84 + 86(g_tTex2di4a): 85(ptr) Variable UniformConstant + 89: TypeImage 29(int) 2D depth array sampled format:Unknown + 90: TypeSampledImage 89 + 99: TypeImage 48(int) 2D array sampled format:Unknown + 100: TypePointer UniformConstant 99 +101(g_tTex2du4a): 100(ptr) Variable UniformConstant + 104: TypeImage 48(int) 2D depth array sampled format:Unknown + 105: TypeSampledImage 104 + 113(PS_OUTPUT): TypeStruct 73(fvec4) 6(float) + 114: TypePointer Function 113(PS_OUTPUT) + 116: 29(int) Constant 0 + 117: 6(float) Constant 1065353216 + 118: 73(fvec4) ConstantComposite 117 117 117 117 + 119: TypePointer Function 73(fvec4) + 121: 29(int) Constant 1 + 123: TypePointer Output 73(fvec4) + 124(Color): 123(ptr) Variable Output + 127: TypePointer Output 6(float) + 128(Depth): 127(ptr) Variable Output + 132: TypeImage 6(float) 1D sampled format:Unknown 133: TypePointer UniformConstant 132 - 134(g_tTex2du4): 133(ptr) Variable UniformConstant - 135: TypeImage 6(float) 3D sampled format:Unknown + 134(g_tTex1df4): 133(ptr) Variable UniformConstant + 135: TypeImage 29(int) 1D sampled format:Unknown 136: TypePointer UniformConstant 135 - 137(g_tTex3df4): 136(ptr) Variable UniformConstant - 138: TypeImage 26(int) 3D sampled format:Unknown + 137(g_tTex1di4): 136(ptr) Variable UniformConstant + 138: TypeImage 48(int) 1D sampled format:Unknown 139: TypePointer UniformConstant 138 - 140(g_tTex3di4): 139(ptr) Variable UniformConstant - 141: TypeImage 43(int) 3D sampled format:Unknown + 140(g_tTex1du4): 139(ptr) Variable UniformConstant + 141: TypeImage 6(float) 2D sampled format:Unknown 142: TypePointer UniformConstant 141 - 143(g_tTex3du4): 142(ptr) Variable UniformConstant - 144: TypeImage 6(float) Cube sampled format:Unknown + 143(g_tTex2df4): 142(ptr) Variable UniformConstant + 144: TypeImage 29(int) 2D sampled format:Unknown 145: TypePointer UniformConstant 144 - 146(g_tTexcdf4): 145(ptr) Variable UniformConstant - 147: TypeImage 26(int) Cube sampled format:Unknown + 146(g_tTex2di4): 145(ptr) Variable UniformConstant + 147: TypeImage 48(int) 2D sampled format:Unknown 148: TypePointer UniformConstant 147 - 149(g_tTexcdi4): 148(ptr) Variable UniformConstant - 150: TypeImage 43(int) Cube sampled format:Unknown + 149(g_tTex2du4): 148(ptr) Variable UniformConstant + 150: TypeImage 6(float) 3D sampled format:Unknown 151: TypePointer UniformConstant 150 - 152(g_tTexcdu4): 151(ptr) Variable UniformConstant - 153: TypeImage 6(float) Cube array sampled format:Unknown + 152(g_tTex3df4): 151(ptr) Variable UniformConstant + 153: TypeImage 29(int) 3D sampled format:Unknown 154: TypePointer UniformConstant 153 -155(g_tTexcdf4a): 154(ptr) Variable UniformConstant - 156: TypeImage 26(int) Cube array sampled format:Unknown + 155(g_tTex3di4): 154(ptr) Variable UniformConstant + 156: TypeImage 48(int) 3D sampled format:Unknown 157: TypePointer UniformConstant 156 -158(g_tTexcdi4a): 157(ptr) Variable UniformConstant - 159: TypeImage 43(int) Cube array sampled format:Unknown + 158(g_tTex3du4): 157(ptr) Variable UniformConstant + 159: TypeImage 6(float) Cube sampled format:Unknown 160: TypePointer UniformConstant 159 -161(g_tTexcdu4a): 160(ptr) Variable UniformConstant + 161(g_tTexcdf4): 160(ptr) Variable UniformConstant + 162: TypeImage 29(int) Cube sampled format:Unknown + 163: TypePointer UniformConstant 162 + 164(g_tTexcdi4): 163(ptr) Variable UniformConstant + 165: TypeImage 48(int) Cube sampled format:Unknown + 166: TypePointer UniformConstant 165 + 167(g_tTexcdu4): 166(ptr) Variable UniformConstant + 168: TypeImage 6(float) Cube array sampled format:Unknown + 169: TypePointer UniformConstant 168 +170(g_tTexcdf4a): 169(ptr) Variable UniformConstant + 171: TypeImage 29(int) Cube array sampled format:Unknown + 172: TypePointer UniformConstant 171 +173(g_tTexcdi4a): 172(ptr) Variable UniformConstant + 174: TypeImage 48(int) Cube array sampled format:Unknown + 175: TypePointer UniformConstant 174 +176(g_tTexcdu4a): 175(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r11): 7(ptr) Variable Function - 30(r13): 7(ptr) Variable Function - 42(r15): 7(ptr) Variable Function - 55(r31): 7(ptr) Variable Function - 73(r33): 7(ptr) Variable Function - 85(r35): 7(ptr) Variable Function - 100(psout): 99(ptr) Variable Function + 33(r13): 7(ptr) Variable Function + 47(r15): 7(ptr) Variable Function + 62(r31): 7(ptr) Variable Function + 83(r33): 7(ptr) Variable Function + 98(r35): 7(ptr) Variable Function + 115(psout): 114(ptr) Variable Function 12: 9 Load 11(g_tTex1df4a) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 25: 6(float) CompositeExtract 23 0 - 28: 6(float) CompositeExtract 25 0 - 29: 6(float) ImageSampleDrefImplicitLod 19 25 28 ConstOffset 27 - Store 8(r11) 29 - 34: 31 Load 33(g_tTex1di4a) - 35: 13 Load 15(g_sSamp) - 38: 37 SampledImage 34 35 - 39: 6(float) CompositeExtract 23 0 - 40: 6(float) CompositeExtract 39 0 - 41: 6(float) ImageSampleDrefImplicitLod 38 39 40 ConstOffset 27 - Store 30(r13) 41 - 47: 44 Load 46(g_tTex1du4a) - 48: 13 Load 15(g_sSamp) - 51: 50 SampledImage 47 48 - 52: 6(float) CompositeExtract 23 0 - 53: 6(float) CompositeExtract 52 0 - 54: 6(float) ImageSampleDrefImplicitLod 51 52 53 ConstOffset 27 - Store 42(r15) 54 - 59: 56 Load 58(g_tTex2df4a) - 60: 13 Load 15(g_sSamp) - 63: 62 SampledImage 59 60 - 67: 6(float) CompositeExtract 66 0 - 71: 6(float) CompositeExtract 67 0 - 72: 6(float) ImageSampleDrefImplicitLod 63 67 71 ConstOffset 70 - Store 55(r31) 72 - 77: 74 Load 76(g_tTex2di4a) - 78: 13 Load 15(g_sSamp) - 81: 80 SampledImage 77 78 - 82: 6(float) CompositeExtract 66 0 - 83: 6(float) CompositeExtract 82 0 - 84: 6(float) ImageSampleDrefImplicitLod 81 82 83 ConstOffset 70 - Store 73(r33) 84 - 89: 86 Load 88(g_tTex2du4a) - 90: 13 Load 15(g_sSamp) - 93: 92 SampledImage 89 90 - 94: 6(float) CompositeExtract 66 0 - 95: 6(float) CompositeExtract 94 0 - 96: 6(float) ImageSampleDrefImplicitLod 93 94 95 ConstOffset 70 - Store 85(r35) 96 - 105: 104(ptr) AccessChain 100(psout) 101 - Store 105 103 - 107: 7(ptr) AccessChain 100(psout) 106 - Store 107 102 - 110: 104(ptr) AccessChain 100(psout) 101 - 111: 97(fvec4) Load 110 - Store 109(Color) 111 - 114: 7(ptr) AccessChain 100(psout) 106 - 115: 6(float) Load 114 - Store 113(Depth) 115 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 31: 6(float) CompositeExtract 28 2 + 32: 6(float) ImageSampleDrefImplicitLod 19 28 31 ConstOffset 30 + Store 8(r11) 32 + 37: 34 Load 36(g_tTex1di4a) + 38: 13 Load 15(g_sSamp) + 41: 40 SampledImage 37 38 + 42: 6(float) CompositeExtract 23 0 + 43: 6(float) CompositeExtract 23 1 + 44: 25(fvec3) CompositeConstruct 42 43 24 + 45: 6(float) CompositeExtract 44 2 + 46: 6(float) ImageSampleDrefImplicitLod 41 44 45 ConstOffset 30 + Store 33(r13) 46 + 52: 49 Load 51(g_tTex1du4a) + 53: 13 Load 15(g_sSamp) + 56: 55 SampledImage 52 53 + 57: 6(float) CompositeExtract 23 0 + 58: 6(float) CompositeExtract 23 1 + 59: 25(fvec3) CompositeConstruct 57 58 24 + 60: 6(float) CompositeExtract 59 2 + 61: 6(float) ImageSampleDrefImplicitLod 56 59 60 ConstOffset 30 + Store 47(r15) 61 + 66: 63 Load 65(g_tTex2df4a) + 67: 13 Load 15(g_sSamp) + 70: 69 SampledImage 66 67 + 74: 6(float) CompositeExtract 72 0 + 75: 6(float) CompositeExtract 72 1 + 76: 6(float) CompositeExtract 72 2 + 77: 73(fvec4) CompositeConstruct 74 75 76 24 + 81: 6(float) CompositeExtract 77 3 + 82: 6(float) ImageSampleDrefImplicitLod 70 77 81 ConstOffset 80 + Store 62(r31) 82 + 87: 84 Load 86(g_tTex2di4a) + 88: 13 Load 15(g_sSamp) + 91: 90 SampledImage 87 88 + 92: 6(float) CompositeExtract 72 0 + 93: 6(float) CompositeExtract 72 1 + 94: 6(float) CompositeExtract 72 2 + 95: 73(fvec4) CompositeConstruct 92 93 94 24 + 96: 6(float) CompositeExtract 95 3 + 97: 6(float) ImageSampleDrefImplicitLod 91 95 96 ConstOffset 80 + Store 83(r33) 97 + 102: 99 Load 101(g_tTex2du4a) + 103: 13 Load 15(g_sSamp) + 106: 105 SampledImage 102 103 + 107: 6(float) CompositeExtract 72 0 + 108: 6(float) CompositeExtract 72 1 + 109: 6(float) CompositeExtract 72 2 + 110: 73(fvec4) CompositeConstruct 107 108 109 24 + 111: 6(float) CompositeExtract 110 3 + 112: 6(float) ImageSampleDrefImplicitLod 106 110 111 ConstOffset 80 + Store 98(r35) 112 + 120: 119(ptr) AccessChain 115(psout) 116 + Store 120 118 + 122: 7(ptr) AccessChain 115(psout) 121 + Store 122 117 + 125: 119(ptr) AccessChain 115(psout) 116 + 126: 73(fvec4) Load 125 + Store 124(Color) 126 + 129: 7(ptr) AccessChain 115(psout) 121 + 130: 6(float) Load 129 + Store 128(Depth) 130 Return FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index c5009ff3..40546103 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -27,7 +27,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -42,7 +42,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -57,7 +57,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -73,7 +73,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -89,7 +89,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -105,7 +105,7 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 Construct vec4 (temp float) +0:52 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -122,7 +122,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -139,7 +139,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -224,7 +224,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -239,7 +239,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -269,7 +269,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -285,7 +285,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -301,7 +301,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -317,7 +317,7 @@ gl_FragCoord origin is upper left 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:52 Construct vec4 (temp float) +0:52 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -334,7 +334,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -351,7 +351,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -421,79 +421,79 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 185 +// Id's are bound by 212 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 141 145 + EntryPoint Fragment 4 "main" 168 172 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r10" Name 11 "g_tTex1df4a" Name 15 "g_sSamp" - Name 29 "r12" - Name 33 "g_tTex1di4a" - Name 42 "r14" - Name 46 "g_tTex1du4a" - Name 55 "r30" - Name 58 "g_tTex2df4a" - Name 70 "r32" - Name 73 "g_tTex2di4a" - Name 82 "r34" - Name 85 "g_tTex2du4a" - Name 94 "r60" - Name 97 "g_tTexcdf4a" - Name 108 "r62" - Name 111 "g_tTexcdi4a" - Name 119 "r64" - Name 122 "g_tTexcdu4a" - Name 130 "PS_OUTPUT" - MemberName 130(PS_OUTPUT) 0 "Color" - MemberName 130(PS_OUTPUT) 1 "Depth" - Name 132 "psout" - Name 141 "Color" - Name 145 "Depth" - Name 151 "g_tTex1df4" - Name 154 "g_tTex1di4" - Name 157 "g_tTex1du4" - Name 160 "g_tTex2df4" - Name 163 "g_tTex2di4" - Name 166 "g_tTex2du4" - Name 169 "g_tTex3df4" - Name 172 "g_tTex3di4" - Name 175 "g_tTex3du4" - Name 178 "g_tTexcdf4" - Name 181 "g_tTexcdi4" - Name 184 "g_tTexcdu4" + Name 32 "r12" + Name 36 "g_tTex1di4a" + Name 47 "r14" + Name 51 "g_tTex1du4a" + Name 62 "r30" + Name 65 "g_tTex2df4a" + Name 80 "r32" + Name 83 "g_tTex2di4a" + Name 95 "r34" + Name 98 "g_tTex2du4a" + Name 110 "r60" + Name 113 "g_tTexcdf4a" + Name 127 "r62" + Name 130 "g_tTexcdi4a" + Name 142 "r64" + Name 145 "g_tTexcdu4a" + Name 157 "PS_OUTPUT" + MemberName 157(PS_OUTPUT) 0 "Color" + MemberName 157(PS_OUTPUT) 1 "Depth" + Name 159 "psout" + Name 168 "Color" + Name 172 "Depth" + Name 178 "g_tTex1df4" + Name 181 "g_tTex1di4" + Name 184 "g_tTex1du4" + Name 187 "g_tTex2df4" + Name 190 "g_tTex2di4" + Name 193 "g_tTex2du4" + Name 196 "g_tTex3df4" + Name 199 "g_tTex3di4" + Name 202 "g_tTex3du4" + Name 205 "g_tTexcdf4" + Name 208 "g_tTexcdi4" + Name 211 "g_tTexcdu4" Decorate 11(g_tTex1df4a) DescriptorSet 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4a) DescriptorSet 0 - Decorate 46(g_tTex1du4a) DescriptorSet 0 - Decorate 58(g_tTex2df4a) DescriptorSet 0 - Decorate 73(g_tTex2di4a) DescriptorSet 0 - Decorate 85(g_tTex2du4a) DescriptorSet 0 - Decorate 97(g_tTexcdf4a) DescriptorSet 0 - Decorate 111(g_tTexcdi4a) DescriptorSet 0 - Decorate 122(g_tTexcdu4a) DescriptorSet 0 - Decorate 141(Color) Location 0 - Decorate 145(Depth) BuiltIn FragDepth - Decorate 151(g_tTex1df4) DescriptorSet 0 - Decorate 151(g_tTex1df4) Binding 0 - Decorate 154(g_tTex1di4) DescriptorSet 0 - Decorate 157(g_tTex1du4) DescriptorSet 0 - Decorate 160(g_tTex2df4) DescriptorSet 0 - Decorate 163(g_tTex2di4) DescriptorSet 0 - Decorate 166(g_tTex2du4) DescriptorSet 0 - Decorate 169(g_tTex3df4) DescriptorSet 0 - Decorate 172(g_tTex3di4) DescriptorSet 0 - Decorate 175(g_tTex3du4) DescriptorSet 0 - Decorate 178(g_tTexcdf4) DescriptorSet 0 - Decorate 181(g_tTexcdi4) DescriptorSet 0 - Decorate 184(g_tTexcdu4) DescriptorSet 0 + Decorate 36(g_tTex1di4a) DescriptorSet 0 + Decorate 51(g_tTex1du4a) DescriptorSet 0 + Decorate 65(g_tTex2df4a) DescriptorSet 0 + Decorate 83(g_tTex2di4a) DescriptorSet 0 + Decorate 98(g_tTex2du4a) DescriptorSet 0 + Decorate 113(g_tTexcdf4a) DescriptorSet 0 + Decorate 130(g_tTexcdi4a) DescriptorSet 0 + Decorate 145(g_tTexcdu4a) DescriptorSet 0 + Decorate 168(Color) Location 0 + Decorate 172(Depth) BuiltIn FragDepth + Decorate 178(g_tTex1df4) DescriptorSet 0 + Decorate 178(g_tTex1df4) Binding 0 + Decorate 181(g_tTex1di4) DescriptorSet 0 + Decorate 184(g_tTex1du4) DescriptorSet 0 + Decorate 187(g_tTex2df4) DescriptorSet 0 + Decorate 190(g_tTex2di4) DescriptorSet 0 + Decorate 193(g_tTex2du4) DescriptorSet 0 + Decorate 196(g_tTex3df4) DescriptorSet 0 + Decorate 199(g_tTex3di4) DescriptorSet 0 + Decorate 202(g_tTex3du4) DescriptorSet 0 + Decorate 205(g_tTexcdf4) DescriptorSet 0 + Decorate 208(g_tTexcdi4) DescriptorSet 0 + Decorate 211(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -511,183 +511,210 @@ gl_FragCoord origin is upper left 22: 6(float) Constant 1045220557 23: 20(fvec2) ConstantComposite 21 22 24: 6(float) Constant 1061158912 - 26: 6(float) Constant 0 - 30: TypeInt 32 1 - 31: TypeImage 30(int) 1D array sampled format:Unknown - 32: TypePointer UniformConstant 31 - 33(g_tTex1di4a): 32(ptr) Variable UniformConstant - 36: TypeImage 30(int) 1D depth array sampled format:Unknown - 37: TypeSampledImage 36 - 43: TypeInt 32 0 - 44: TypeImage 43(int) 1D array sampled format:Unknown - 45: TypePointer UniformConstant 44 - 46(g_tTex1du4a): 45(ptr) Variable UniformConstant - 49: TypeImage 43(int) 1D depth array sampled format:Unknown - 50: TypeSampledImage 49 - 56: TypeImage 6(float) 2D array sampled format:Unknown - 57: TypePointer UniformConstant 56 - 58(g_tTex2df4a): 57(ptr) Variable UniformConstant - 61: TypeImage 6(float) 2D depth array sampled format:Unknown - 62: TypeSampledImage 61 - 64: TypeVector 6(float) 3 - 65: 6(float) Constant 1050253722 - 66: 64(fvec3) ConstantComposite 21 22 65 - 71: TypeImage 30(int) 2D array sampled format:Unknown - 72: TypePointer UniformConstant 71 - 73(g_tTex2di4a): 72(ptr) Variable UniformConstant - 76: TypeImage 30(int) 2D depth array sampled format:Unknown - 77: TypeSampledImage 76 - 83: TypeImage 43(int) 2D array sampled format:Unknown - 84: TypePointer UniformConstant 83 - 85(g_tTex2du4a): 84(ptr) Variable UniformConstant - 88: TypeImage 43(int) 2D depth array sampled format:Unknown - 89: TypeSampledImage 88 - 95: TypeImage 6(float) Cube array sampled format:Unknown - 96: TypePointer UniformConstant 95 - 97(g_tTexcdf4a): 96(ptr) Variable UniformConstant - 100: TypeImage 6(float) Cube depth array sampled format:Unknown - 101: TypeSampledImage 100 - 103: TypeVector 6(float) 4 - 104: 6(float) Constant 1053609165 - 105: 103(fvec4) ConstantComposite 21 22 65 104 - 109: TypeImage 30(int) Cube array sampled format:Unknown - 110: TypePointer UniformConstant 109 -111(g_tTexcdi4a): 110(ptr) Variable UniformConstant - 114: TypeImage 30(int) Cube depth array sampled format:Unknown - 115: TypeSampledImage 114 - 120: TypeImage 43(int) Cube array sampled format:Unknown - 121: TypePointer UniformConstant 120 -122(g_tTexcdu4a): 121(ptr) Variable UniformConstant - 125: TypeImage 43(int) Cube depth array sampled format:Unknown - 126: TypeSampledImage 125 - 130(PS_OUTPUT): TypeStruct 103(fvec4) 6(float) - 131: TypePointer Function 130(PS_OUTPUT) - 133: 30(int) Constant 0 - 134: 6(float) Constant 1065353216 - 135: 103(fvec4) ConstantComposite 134 134 134 134 - 136: TypePointer Function 103(fvec4) - 138: 30(int) Constant 1 - 140: TypePointer Output 103(fvec4) - 141(Color): 140(ptr) Variable Output - 144: TypePointer Output 6(float) - 145(Depth): 144(ptr) Variable Output - 149: TypeImage 6(float) 1D sampled format:Unknown - 150: TypePointer UniformConstant 149 - 151(g_tTex1df4): 150(ptr) Variable UniformConstant - 152: TypeImage 30(int) 1D sampled format:Unknown - 153: TypePointer UniformConstant 152 - 154(g_tTex1di4): 153(ptr) Variable UniformConstant - 155: TypeImage 43(int) 1D sampled format:Unknown - 156: TypePointer UniformConstant 155 - 157(g_tTex1du4): 156(ptr) Variable UniformConstant - 158: TypeImage 6(float) 2D sampled format:Unknown - 159: TypePointer UniformConstant 158 - 160(g_tTex2df4): 159(ptr) Variable UniformConstant - 161: TypeImage 30(int) 2D sampled format:Unknown - 162: TypePointer UniformConstant 161 - 163(g_tTex2di4): 162(ptr) Variable UniformConstant - 164: TypeImage 43(int) 2D sampled format:Unknown - 165: TypePointer UniformConstant 164 - 166(g_tTex2du4): 165(ptr) Variable UniformConstant - 167: TypeImage 6(float) 3D sampled format:Unknown - 168: TypePointer UniformConstant 167 - 169(g_tTex3df4): 168(ptr) Variable UniformConstant - 170: TypeImage 30(int) 3D sampled format:Unknown - 171: TypePointer UniformConstant 170 - 172(g_tTex3di4): 171(ptr) Variable UniformConstant - 173: TypeImage 43(int) 3D sampled format:Unknown - 174: TypePointer UniformConstant 173 - 175(g_tTex3du4): 174(ptr) Variable UniformConstant - 176: TypeImage 6(float) Cube sampled format:Unknown + 25: TypeVector 6(float) 3 + 29: 6(float) Constant 0 + 33: TypeInt 32 1 + 34: TypeImage 33(int) 1D array sampled format:Unknown + 35: TypePointer UniformConstant 34 + 36(g_tTex1di4a): 35(ptr) Variable UniformConstant + 39: TypeImage 33(int) 1D depth array sampled format:Unknown + 40: TypeSampledImage 39 + 48: TypeInt 32 0 + 49: TypeImage 48(int) 1D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex1du4a): 50(ptr) Variable UniformConstant + 54: TypeImage 48(int) 1D depth array sampled format:Unknown + 55: TypeSampledImage 54 + 63: TypeImage 6(float) 2D array sampled format:Unknown + 64: TypePointer UniformConstant 63 + 65(g_tTex2df4a): 64(ptr) Variable UniformConstant + 68: TypeImage 6(float) 2D depth array sampled format:Unknown + 69: TypeSampledImage 68 + 71: 6(float) Constant 1050253722 + 72: 25(fvec3) ConstantComposite 21 22 71 + 73: TypeVector 6(float) 4 + 81: TypeImage 33(int) 2D array sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex2di4a): 82(ptr) Variable UniformConstant + 86: TypeImage 33(int) 2D depth array sampled format:Unknown + 87: TypeSampledImage 86 + 96: TypeImage 48(int) 2D array sampled format:Unknown + 97: TypePointer UniformConstant 96 + 98(g_tTex2du4a): 97(ptr) Variable UniformConstant + 101: TypeImage 48(int) 2D depth array sampled format:Unknown + 102: TypeSampledImage 101 + 111: TypeImage 6(float) Cube array sampled format:Unknown + 112: TypePointer UniformConstant 111 +113(g_tTexcdf4a): 112(ptr) Variable UniformConstant + 116: TypeImage 6(float) Cube depth array sampled format:Unknown + 117: TypeSampledImage 116 + 119: 6(float) Constant 1053609165 + 120: 73(fvec4) ConstantComposite 21 22 71 119 + 128: TypeImage 33(int) Cube array sampled format:Unknown + 129: TypePointer UniformConstant 128 +130(g_tTexcdi4a): 129(ptr) Variable UniformConstant + 133: TypeImage 33(int) Cube depth array sampled format:Unknown + 134: TypeSampledImage 133 + 143: TypeImage 48(int) Cube array sampled format:Unknown + 144: TypePointer UniformConstant 143 +145(g_tTexcdu4a): 144(ptr) Variable UniformConstant + 148: TypeImage 48(int) Cube depth array sampled format:Unknown + 149: TypeSampledImage 148 + 157(PS_OUTPUT): TypeStruct 73(fvec4) 6(float) + 158: TypePointer Function 157(PS_OUTPUT) + 160: 33(int) Constant 0 + 161: 6(float) Constant 1065353216 + 162: 73(fvec4) ConstantComposite 161 161 161 161 + 163: TypePointer Function 73(fvec4) + 165: 33(int) Constant 1 + 167: TypePointer Output 73(fvec4) + 168(Color): 167(ptr) Variable Output + 171: TypePointer Output 6(float) + 172(Depth): 171(ptr) Variable Output + 176: TypeImage 6(float) 1D sampled format:Unknown 177: TypePointer UniformConstant 176 - 178(g_tTexcdf4): 177(ptr) Variable UniformConstant - 179: TypeImage 30(int) Cube sampled format:Unknown + 178(g_tTex1df4): 177(ptr) Variable UniformConstant + 179: TypeImage 33(int) 1D sampled format:Unknown 180: TypePointer UniformConstant 179 - 181(g_tTexcdi4): 180(ptr) Variable UniformConstant - 182: TypeImage 43(int) Cube sampled format:Unknown + 181(g_tTex1di4): 180(ptr) Variable UniformConstant + 182: TypeImage 48(int) 1D sampled format:Unknown 183: TypePointer UniformConstant 182 - 184(g_tTexcdu4): 183(ptr) Variable UniformConstant + 184(g_tTex1du4): 183(ptr) Variable UniformConstant + 185: TypeImage 6(float) 2D sampled format:Unknown + 186: TypePointer UniformConstant 185 + 187(g_tTex2df4): 186(ptr) Variable UniformConstant + 188: TypeImage 33(int) 2D sampled format:Unknown + 189: TypePointer UniformConstant 188 + 190(g_tTex2di4): 189(ptr) Variable UniformConstant + 191: TypeImage 48(int) 2D sampled format:Unknown + 192: TypePointer UniformConstant 191 + 193(g_tTex2du4): 192(ptr) Variable UniformConstant + 194: TypeImage 6(float) 3D sampled format:Unknown + 195: TypePointer UniformConstant 194 + 196(g_tTex3df4): 195(ptr) Variable UniformConstant + 197: TypeImage 33(int) 3D sampled format:Unknown + 198: TypePointer UniformConstant 197 + 199(g_tTex3di4): 198(ptr) Variable UniformConstant + 200: TypeImage 48(int) 3D sampled format:Unknown + 201: TypePointer UniformConstant 200 + 202(g_tTex3du4): 201(ptr) Variable UniformConstant + 203: TypeImage 6(float) Cube sampled format:Unknown + 204: TypePointer UniformConstant 203 + 205(g_tTexcdf4): 204(ptr) Variable UniformConstant + 206: TypeImage 33(int) Cube sampled format:Unknown + 207: TypePointer UniformConstant 206 + 208(g_tTexcdi4): 207(ptr) Variable UniformConstant + 209: TypeImage 48(int) Cube sampled format:Unknown + 210: TypePointer UniformConstant 209 + 211(g_tTexcdu4): 210(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r10): 7(ptr) Variable Function - 29(r12): 7(ptr) Variable Function - 42(r14): 7(ptr) Variable Function - 55(r30): 7(ptr) Variable Function - 70(r32): 7(ptr) Variable Function - 82(r34): 7(ptr) Variable Function - 94(r60): 7(ptr) Variable Function - 108(r62): 7(ptr) Variable Function - 119(r64): 7(ptr) Variable Function - 132(psout): 131(ptr) Variable Function + 32(r12): 7(ptr) Variable Function + 47(r14): 7(ptr) Variable Function + 62(r30): 7(ptr) Variable Function + 80(r32): 7(ptr) Variable Function + 95(r34): 7(ptr) Variable Function + 110(r60): 7(ptr) Variable Function + 127(r62): 7(ptr) Variable Function + 142(r64): 7(ptr) Variable Function + 159(psout): 158(ptr) Variable Function 12: 9 Load 11(g_tTex1df4a) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 25: 6(float) CompositeExtract 23 0 - 27: 6(float) CompositeExtract 25 0 - 28: 6(float) ImageSampleDrefExplicitLod 19 25 27 Lod 26 - Store 8(r10) 28 - 34: 31 Load 33(g_tTex1di4a) - 35: 13 Load 15(g_sSamp) - 38: 37 SampledImage 34 35 - 39: 6(float) CompositeExtract 23 0 - 40: 6(float) CompositeExtract 39 0 - 41: 6(float) ImageSampleDrefExplicitLod 38 39 40 Lod 26 - Store 29(r12) 41 - 47: 44 Load 46(g_tTex1du4a) - 48: 13 Load 15(g_sSamp) - 51: 50 SampledImage 47 48 - 52: 6(float) CompositeExtract 23 0 - 53: 6(float) CompositeExtract 52 0 - 54: 6(float) ImageSampleDrefExplicitLod 51 52 53 Lod 26 - Store 42(r14) 54 - 59: 56 Load 58(g_tTex2df4a) - 60: 13 Load 15(g_sSamp) - 63: 62 SampledImage 59 60 - 67: 6(float) CompositeExtract 66 0 - 68: 6(float) CompositeExtract 67 0 - 69: 6(float) ImageSampleDrefExplicitLod 63 67 68 Lod 26 - Store 55(r30) 69 - 74: 71 Load 73(g_tTex2di4a) - 75: 13 Load 15(g_sSamp) - 78: 77 SampledImage 74 75 - 79: 6(float) CompositeExtract 66 0 - 80: 6(float) CompositeExtract 79 0 - 81: 6(float) ImageSampleDrefExplicitLod 78 79 80 Lod 26 - Store 70(r32) 81 - 86: 83 Load 85(g_tTex2du4a) - 87: 13 Load 15(g_sSamp) - 90: 89 SampledImage 86 87 - 91: 6(float) CompositeExtract 66 0 - 92: 6(float) CompositeExtract 91 0 - 93: 6(float) ImageSampleDrefExplicitLod 90 91 92 Lod 26 - Store 82(r34) 93 - 98: 95 Load 97(g_tTexcdf4a) - 99: 13 Load 15(g_sSamp) - 102: 101 SampledImage 98 99 - 106: 6(float) CompositeExtract 105 0 - 107: 6(float) ImageSampleDrefExplicitLod 102 106 24 Lod 24 - Store 94(r60) 107 - 112: 109 Load 111(g_tTexcdi4a) - 113: 13 Load 15(g_sSamp) - 116: 115 SampledImage 112 113 - 117: 6(float) CompositeExtract 105 0 - 118: 6(float) ImageSampleDrefExplicitLod 116 117 24 Lod 24 - Store 108(r62) 118 - 123: 120 Load 122(g_tTexcdu4a) - 124: 13 Load 15(g_sSamp) - 127: 126 SampledImage 123 124 - 128: 6(float) CompositeExtract 105 0 - 129: 6(float) ImageSampleDrefExplicitLod 127 128 24 Lod 24 - Store 119(r64) 129 - 137: 136(ptr) AccessChain 132(psout) 133 - Store 137 135 - 139: 7(ptr) AccessChain 132(psout) 138 - Store 139 134 - 142: 136(ptr) AccessChain 132(psout) 133 - 143: 103(fvec4) Load 142 - Store 141(Color) 143 - 146: 7(ptr) AccessChain 132(psout) 138 - 147: 6(float) Load 146 - Store 145(Depth) 147 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 30: 6(float) CompositeExtract 28 2 + 31: 6(float) ImageSampleDrefExplicitLod 19 28 30 Lod 29 + Store 8(r10) 31 + 37: 34 Load 36(g_tTex1di4a) + 38: 13 Load 15(g_sSamp) + 41: 40 SampledImage 37 38 + 42: 6(float) CompositeExtract 23 0 + 43: 6(float) CompositeExtract 23 1 + 44: 25(fvec3) CompositeConstruct 42 43 24 + 45: 6(float) CompositeExtract 44 2 + 46: 6(float) ImageSampleDrefExplicitLod 41 44 45 Lod 29 + Store 32(r12) 46 + 52: 49 Load 51(g_tTex1du4a) + 53: 13 Load 15(g_sSamp) + 56: 55 SampledImage 52 53 + 57: 6(float) CompositeExtract 23 0 + 58: 6(float) CompositeExtract 23 1 + 59: 25(fvec3) CompositeConstruct 57 58 24 + 60: 6(float) CompositeExtract 59 2 + 61: 6(float) ImageSampleDrefExplicitLod 56 59 60 Lod 29 + Store 47(r14) 61 + 66: 63 Load 65(g_tTex2df4a) + 67: 13 Load 15(g_sSamp) + 70: 69 SampledImage 66 67 + 74: 6(float) CompositeExtract 72 0 + 75: 6(float) CompositeExtract 72 1 + 76: 6(float) CompositeExtract 72 2 + 77: 73(fvec4) CompositeConstruct 74 75 76 24 + 78: 6(float) CompositeExtract 77 3 + 79: 6(float) ImageSampleDrefExplicitLod 70 77 78 Lod 29 + Store 62(r30) 79 + 84: 81 Load 83(g_tTex2di4a) + 85: 13 Load 15(g_sSamp) + 88: 87 SampledImage 84 85 + 89: 6(float) CompositeExtract 72 0 + 90: 6(float) CompositeExtract 72 1 + 91: 6(float) CompositeExtract 72 2 + 92: 73(fvec4) CompositeConstruct 89 90 91 24 + 93: 6(float) CompositeExtract 92 3 + 94: 6(float) ImageSampleDrefExplicitLod 88 92 93 Lod 29 + Store 80(r32) 94 + 99: 96 Load 98(g_tTex2du4a) + 100: 13 Load 15(g_sSamp) + 103: 102 SampledImage 99 100 + 104: 6(float) CompositeExtract 72 0 + 105: 6(float) CompositeExtract 72 1 + 106: 6(float) CompositeExtract 72 2 + 107: 73(fvec4) CompositeConstruct 104 105 106 24 + 108: 6(float) CompositeExtract 107 3 + 109: 6(float) ImageSampleDrefExplicitLod 103 107 108 Lod 29 + Store 95(r34) 109 + 114: 111 Load 113(g_tTexcdf4a) + 115: 13 Load 15(g_sSamp) + 118: 117 SampledImage 114 115 + 121: 6(float) CompositeExtract 120 0 + 122: 6(float) CompositeExtract 120 1 + 123: 6(float) CompositeExtract 120 2 + 124: 6(float) CompositeExtract 120 3 + 125: 73(fvec4) CompositeConstruct 121 122 123 124 + 126: 6(float) ImageSampleDrefExplicitLod 118 125 24 Lod 24 + Store 110(r60) 126 + 131: 128 Load 130(g_tTexcdi4a) + 132: 13 Load 15(g_sSamp) + 135: 134 SampledImage 131 132 + 136: 6(float) CompositeExtract 120 0 + 137: 6(float) CompositeExtract 120 1 + 138: 6(float) CompositeExtract 120 2 + 139: 6(float) CompositeExtract 120 3 + 140: 73(fvec4) CompositeConstruct 136 137 138 139 + 141: 6(float) ImageSampleDrefExplicitLod 135 140 24 Lod 24 + Store 127(r62) 141 + 146: 143 Load 145(g_tTexcdu4a) + 147: 13 Load 15(g_sSamp) + 150: 149 SampledImage 146 147 + 151: 6(float) CompositeExtract 120 0 + 152: 6(float) CompositeExtract 120 1 + 153: 6(float) CompositeExtract 120 2 + 154: 6(float) CompositeExtract 120 3 + 155: 73(fvec4) CompositeConstruct 151 152 153 154 + 156: 6(float) ImageSampleDrefExplicitLod 150 155 24 Lod 24 + Store 142(r64) 156 + 164: 163(ptr) AccessChain 159(psout) 160 + Store 164 162 + 166: 7(ptr) AccessChain 159(psout) 165 + Store 166 161 + 169: 163(ptr) AccessChain 159(psout) 160 + 170: 73(fvec4) Load 169 + Store 168(Color) 170 + 173: 7(ptr) AccessChain 159(psout) 165 + 174: 6(float) Load 173 + Store 172(Depth) 174 Return FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index b8f55b8e..a5923367 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -26,7 +26,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -40,7 +40,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -54,7 +54,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -69,7 +69,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -84,7 +84,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -99,7 +99,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -115,7 +115,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -131,7 +131,7 @@ gl_FragCoord origin is upper left 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:55 Construct vec4 (temp float) +0:55 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -215,7 +215,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -229,7 +229,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -243,7 +243,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -257,7 +257,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -287,7 +287,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -302,7 +302,7 @@ gl_FragCoord origin is upper left 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:53 Construct vec4 (temp float) +0:53 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -318,7 +318,7 @@ gl_FragCoord origin is upper left 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:54 Construct vec4 (temp float) +0:54 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -334,7 +334,7 @@ gl_FragCoord origin is upper left 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:55 Construct vec4 (temp float) +0:55 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -403,79 +403,79 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 183 +// Id's are bound by 201 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 139 143 + EntryPoint Fragment 4 "main" 157 161 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r00" Name 11 "g_tTex1df4" Name 15 "g_sSamp" - Name 25 "r02" - Name 29 "g_tTex1di4" - Name 37 "r04" - Name 41 "g_tTex1du4" - Name 49 "r20" - Name 52 "g_tTex2df4" - Name 64 "r22" - Name 67 "g_tTex2di4" - Name 76 "r24" - Name 79 "g_tTex2du4" - Name 88 "r50" - Name 91 "g_tTexcdf4" - Name 103 "r52" - Name 106 "g_tTexcdi4" - Name 115 "r54" - Name 118 "g_tTexcdu4" - Name 128 "PS_OUTPUT" - MemberName 128(PS_OUTPUT) 0 "Color" - MemberName 128(PS_OUTPUT) 1 "Depth" - Name 130 "psout" - Name 139 "Color" - Name 143 "Depth" - Name 149 "g_tTex3df4" - Name 152 "g_tTex3di4" - Name 155 "g_tTex3du4" - Name 158 "g_tTex1df4a" - Name 161 "g_tTex1di4a" - Name 164 "g_tTex1du4a" - Name 167 "g_tTex2df4a" - Name 170 "g_tTex2di4a" - Name 173 "g_tTex2du4a" - Name 176 "g_tTexcdf4a" - Name 179 "g_tTexcdi4a" - Name 182 "g_tTexcdu4a" + Name 27 "r02" + Name 31 "g_tTex1di4" + Name 40 "r04" + Name 44 "g_tTex1du4" + Name 53 "r20" + Name 56 "g_tTex2df4" + Name 70 "r22" + Name 73 "g_tTex2di4" + Name 84 "r24" + Name 87 "g_tTex2du4" + Name 98 "r50" + Name 101 "g_tTexcdf4" + Name 116 "r52" + Name 119 "g_tTexcdi4" + Name 131 "r54" + Name 134 "g_tTexcdu4" + Name 146 "PS_OUTPUT" + MemberName 146(PS_OUTPUT) 0 "Color" + MemberName 146(PS_OUTPUT) 1 "Depth" + Name 148 "psout" + Name 157 "Color" + Name 161 "Depth" + Name 167 "g_tTex3df4" + Name 170 "g_tTex3di4" + Name 173 "g_tTex3du4" + Name 176 "g_tTex1df4a" + Name 179 "g_tTex1di4a" + Name 182 "g_tTex1du4a" + Name 185 "g_tTex2df4a" + Name 188 "g_tTex2di4a" + Name 191 "g_tTex2du4a" + Name 194 "g_tTexcdf4a" + Name 197 "g_tTexcdi4a" + Name 200 "g_tTexcdu4a" Decorate 11(g_tTex1df4) DescriptorSet 0 Decorate 11(g_tTex1df4) Binding 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 29(g_tTex1di4) DescriptorSet 0 - Decorate 41(g_tTex1du4) DescriptorSet 0 - Decorate 52(g_tTex2df4) DescriptorSet 0 - Decorate 67(g_tTex2di4) DescriptorSet 0 - Decorate 79(g_tTex2du4) DescriptorSet 0 - Decorate 91(g_tTexcdf4) DescriptorSet 0 - Decorate 106(g_tTexcdi4) DescriptorSet 0 - Decorate 118(g_tTexcdu4) DescriptorSet 0 - Decorate 139(Color) Location 0 - Decorate 143(Depth) BuiltIn FragDepth - Decorate 149(g_tTex3df4) DescriptorSet 0 - Decorate 152(g_tTex3di4) DescriptorSet 0 - Decorate 155(g_tTex3du4) DescriptorSet 0 - Decorate 158(g_tTex1df4a) DescriptorSet 0 - Decorate 161(g_tTex1di4a) DescriptorSet 0 - Decorate 164(g_tTex1du4a) DescriptorSet 0 - Decorate 167(g_tTex2df4a) DescriptorSet 0 - Decorate 170(g_tTex2di4a) DescriptorSet 0 - Decorate 173(g_tTex2du4a) DescriptorSet 0 - Decorate 176(g_tTexcdf4a) DescriptorSet 0 - Decorate 179(g_tTexcdi4a) DescriptorSet 0 - Decorate 182(g_tTexcdu4a) DescriptorSet 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 44(g_tTex1du4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 73(g_tTex2di4) DescriptorSet 0 + Decorate 87(g_tTex2du4) DescriptorSet 0 + Decorate 101(g_tTexcdf4) DescriptorSet 0 + Decorate 119(g_tTexcdi4) DescriptorSet 0 + Decorate 134(g_tTexcdu4) DescriptorSet 0 + Decorate 157(Color) Location 0 + Decorate 161(Depth) BuiltIn FragDepth + Decorate 167(g_tTex3df4) DescriptorSet 0 + Decorate 170(g_tTex3di4) DescriptorSet 0 + Decorate 173(g_tTex3du4) DescriptorSet 0 + Decorate 176(g_tTex1df4a) DescriptorSet 0 + Decorate 179(g_tTex1di4a) DescriptorSet 0 + Decorate 182(g_tTex1du4a) DescriptorSet 0 + Decorate 185(g_tTex2df4a) DescriptorSet 0 + Decorate 188(g_tTex2di4a) DescriptorSet 0 + Decorate 191(g_tTex2du4a) DescriptorSet 0 + Decorate 194(g_tTexcdf4a) DescriptorSet 0 + Decorate 197(g_tTexcdi4a) DescriptorSet 0 + Decorate 200(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -490,184 +490,202 @@ gl_FragCoord origin is upper left 18: TypeSampledImage 17 20: 6(float) Constant 1036831949 21: 6(float) Constant 1061158912 - 22: 6(float) Constant 0 - 26: TypeInt 32 1 - 27: TypeImage 26(int) 1D sampled format:Unknown - 28: TypePointer UniformConstant 27 - 29(g_tTex1di4): 28(ptr) Variable UniformConstant - 32: TypeImage 26(int) 1D depth sampled format:Unknown - 33: TypeSampledImage 32 - 38: TypeInt 32 0 - 39: TypeImage 38(int) 1D sampled format:Unknown - 40: TypePointer UniformConstant 39 - 41(g_tTex1du4): 40(ptr) Variable UniformConstant - 44: TypeImage 38(int) 1D depth sampled format:Unknown - 45: TypeSampledImage 44 - 50: TypeImage 6(float) 2D sampled format:Unknown - 51: TypePointer UniformConstant 50 - 52(g_tTex2df4): 51(ptr) Variable UniformConstant - 55: TypeImage 6(float) 2D depth sampled format:Unknown - 56: TypeSampledImage 55 - 58: TypeVector 6(float) 2 - 59: 6(float) Constant 1045220557 - 60: 58(fvec2) ConstantComposite 20 59 - 65: TypeImage 26(int) 2D sampled format:Unknown - 66: TypePointer UniformConstant 65 - 67(g_tTex2di4): 66(ptr) Variable UniformConstant - 70: TypeImage 26(int) 2D depth sampled format:Unknown - 71: TypeSampledImage 70 - 77: TypeImage 38(int) 2D sampled format:Unknown - 78: TypePointer UniformConstant 77 - 79(g_tTex2du4): 78(ptr) Variable UniformConstant - 82: TypeImage 38(int) 2D depth sampled format:Unknown - 83: TypeSampledImage 82 - 89: TypeImage 6(float) Cube sampled format:Unknown - 90: TypePointer UniformConstant 89 - 91(g_tTexcdf4): 90(ptr) Variable UniformConstant - 94: TypeImage 6(float) Cube depth sampled format:Unknown - 95: TypeSampledImage 94 - 97: TypeVector 6(float) 3 - 98: 6(float) Constant 1050253722 - 99: 97(fvec3) ConstantComposite 20 59 98 - 104: TypeImage 26(int) Cube sampled format:Unknown - 105: TypePointer UniformConstant 104 - 106(g_tTexcdi4): 105(ptr) Variable UniformConstant - 109: TypeImage 26(int) Cube depth sampled format:Unknown - 110: TypeSampledImage 109 - 116: TypeImage 38(int) Cube sampled format:Unknown - 117: TypePointer UniformConstant 116 - 118(g_tTexcdu4): 117(ptr) Variable UniformConstant - 121: TypeImage 38(int) Cube depth sampled format:Unknown - 122: TypeSampledImage 121 - 127: TypeVector 6(float) 4 - 128(PS_OUTPUT): TypeStruct 127(fvec4) 6(float) - 129: TypePointer Function 128(PS_OUTPUT) - 131: 26(int) Constant 0 - 132: 6(float) Constant 1065353216 - 133: 127(fvec4) ConstantComposite 132 132 132 132 - 134: TypePointer Function 127(fvec4) - 136: 26(int) Constant 1 - 138: TypePointer Output 127(fvec4) - 139(Color): 138(ptr) Variable Output - 142: TypePointer Output 6(float) - 143(Depth): 142(ptr) Variable Output - 147: TypeImage 6(float) 3D sampled format:Unknown - 148: TypePointer UniformConstant 147 - 149(g_tTex3df4): 148(ptr) Variable UniformConstant - 150: TypeImage 26(int) 3D sampled format:Unknown - 151: TypePointer UniformConstant 150 - 152(g_tTex3di4): 151(ptr) Variable UniformConstant - 153: TypeImage 38(int) 3D sampled format:Unknown - 154: TypePointer UniformConstant 153 - 155(g_tTex3du4): 154(ptr) Variable UniformConstant - 156: TypeImage 6(float) 1D array sampled format:Unknown - 157: TypePointer UniformConstant 156 -158(g_tTex1df4a): 157(ptr) Variable UniformConstant - 159: TypeImage 26(int) 1D array sampled format:Unknown - 160: TypePointer UniformConstant 159 -161(g_tTex1di4a): 160(ptr) Variable UniformConstant - 162: TypeImage 38(int) 1D array sampled format:Unknown - 163: TypePointer UniformConstant 162 -164(g_tTex1du4a): 163(ptr) Variable UniformConstant - 165: TypeImage 6(float) 2D array sampled format:Unknown + 22: TypeVector 6(float) 2 + 24: 6(float) Constant 0 + 28: TypeInt 32 1 + 29: TypeImage 28(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 34: TypeImage 28(int) 1D depth sampled format:Unknown + 35: TypeSampledImage 34 + 41: TypeInt 32 0 + 42: TypeImage 41(int) 1D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(g_tTex1du4): 43(ptr) Variable UniformConstant + 47: TypeImage 41(int) 1D depth sampled format:Unknown + 48: TypeSampledImage 47 + 54: TypeImage 6(float) 2D sampled format:Unknown + 55: TypePointer UniformConstant 54 + 56(g_tTex2df4): 55(ptr) Variable UniformConstant + 59: TypeImage 6(float) 2D depth sampled format:Unknown + 60: TypeSampledImage 59 + 62: 6(float) Constant 1045220557 + 63: 22(fvec2) ConstantComposite 20 62 + 64: TypeVector 6(float) 3 + 71: TypeImage 28(int) 2D sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2di4): 72(ptr) Variable UniformConstant + 76: TypeImage 28(int) 2D depth sampled format:Unknown + 77: TypeSampledImage 76 + 85: TypeImage 41(int) 2D sampled format:Unknown + 86: TypePointer UniformConstant 85 + 87(g_tTex2du4): 86(ptr) Variable UniformConstant + 90: TypeImage 41(int) 2D depth sampled format:Unknown + 91: TypeSampledImage 90 + 99: TypeImage 6(float) Cube sampled format:Unknown + 100: TypePointer UniformConstant 99 + 101(g_tTexcdf4): 100(ptr) Variable UniformConstant + 104: TypeImage 6(float) Cube depth sampled format:Unknown + 105: TypeSampledImage 104 + 107: 6(float) Constant 1050253722 + 108: 64(fvec3) ConstantComposite 20 62 107 + 109: TypeVector 6(float) 4 + 117: TypeImage 28(int) Cube sampled format:Unknown + 118: TypePointer UniformConstant 117 + 119(g_tTexcdi4): 118(ptr) Variable UniformConstant + 122: TypeImage 28(int) Cube depth sampled format:Unknown + 123: TypeSampledImage 122 + 132: TypeImage 41(int) Cube sampled format:Unknown + 133: TypePointer UniformConstant 132 + 134(g_tTexcdu4): 133(ptr) Variable UniformConstant + 137: TypeImage 41(int) Cube depth sampled format:Unknown + 138: TypeSampledImage 137 + 146(PS_OUTPUT): TypeStruct 109(fvec4) 6(float) + 147: TypePointer Function 146(PS_OUTPUT) + 149: 28(int) Constant 0 + 150: 6(float) Constant 1065353216 + 151: 109(fvec4) ConstantComposite 150 150 150 150 + 152: TypePointer Function 109(fvec4) + 154: 28(int) Constant 1 + 156: TypePointer Output 109(fvec4) + 157(Color): 156(ptr) Variable Output + 160: TypePointer Output 6(float) + 161(Depth): 160(ptr) Variable Output + 165: TypeImage 6(float) 3D sampled format:Unknown 166: TypePointer UniformConstant 165 -167(g_tTex2df4a): 166(ptr) Variable UniformConstant - 168: TypeImage 26(int) 2D array sampled format:Unknown + 167(g_tTex3df4): 166(ptr) Variable UniformConstant + 168: TypeImage 28(int) 3D sampled format:Unknown 169: TypePointer UniformConstant 168 -170(g_tTex2di4a): 169(ptr) Variable UniformConstant - 171: TypeImage 38(int) 2D array sampled format:Unknown + 170(g_tTex3di4): 169(ptr) Variable UniformConstant + 171: TypeImage 41(int) 3D sampled format:Unknown 172: TypePointer UniformConstant 171 -173(g_tTex2du4a): 172(ptr) Variable UniformConstant - 174: TypeImage 6(float) Cube array sampled format:Unknown + 173(g_tTex3du4): 172(ptr) Variable UniformConstant + 174: TypeImage 6(float) 1D array sampled format:Unknown 175: TypePointer UniformConstant 174 -176(g_tTexcdf4a): 175(ptr) Variable UniformConstant - 177: TypeImage 26(int) Cube array sampled format:Unknown +176(g_tTex1df4a): 175(ptr) Variable UniformConstant + 177: TypeImage 28(int) 1D array sampled format:Unknown 178: TypePointer UniformConstant 177 -179(g_tTexcdi4a): 178(ptr) Variable UniformConstant - 180: TypeImage 38(int) Cube array sampled format:Unknown +179(g_tTex1di4a): 178(ptr) Variable UniformConstant + 180: TypeImage 41(int) 1D array sampled format:Unknown 181: TypePointer UniformConstant 180 -182(g_tTexcdu4a): 181(ptr) Variable UniformConstant +182(g_tTex1du4a): 181(ptr) Variable UniformConstant + 183: TypeImage 6(float) 2D array sampled format:Unknown + 184: TypePointer UniformConstant 183 +185(g_tTex2df4a): 184(ptr) Variable UniformConstant + 186: TypeImage 28(int) 2D array sampled format:Unknown + 187: TypePointer UniformConstant 186 +188(g_tTex2di4a): 187(ptr) Variable UniformConstant + 189: TypeImage 41(int) 2D array sampled format:Unknown + 190: TypePointer UniformConstant 189 +191(g_tTex2du4a): 190(ptr) Variable UniformConstant + 192: TypeImage 6(float) Cube array sampled format:Unknown + 193: TypePointer UniformConstant 192 +194(g_tTexcdf4a): 193(ptr) Variable UniformConstant + 195: TypeImage 28(int) Cube array sampled format:Unknown + 196: TypePointer UniformConstant 195 +197(g_tTexcdi4a): 196(ptr) Variable UniformConstant + 198: TypeImage 41(int) Cube array sampled format:Unknown + 199: TypePointer UniformConstant 198 +200(g_tTexcdu4a): 199(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r00): 7(ptr) Variable Function - 25(r02): 7(ptr) Variable Function - 37(r04): 7(ptr) Variable Function - 49(r20): 7(ptr) Variable Function - 64(r22): 7(ptr) Variable Function - 76(r24): 7(ptr) Variable Function - 88(r50): 7(ptr) Variable Function - 103(r52): 7(ptr) Variable Function - 115(r54): 7(ptr) Variable Function - 130(psout): 129(ptr) Variable Function + 27(r02): 7(ptr) Variable Function + 40(r04): 7(ptr) Variable Function + 53(r20): 7(ptr) Variable Function + 70(r22): 7(ptr) Variable Function + 84(r24): 7(ptr) Variable Function + 98(r50): 7(ptr) Variable Function + 116(r52): 7(ptr) Variable Function + 131(r54): 7(ptr) Variable Function + 148(psout): 147(ptr) Variable Function 12: 9 Load 11(g_tTex1df4) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 23: 6(float) CompositeExtract 20 0 - 24: 6(float) ImageSampleDrefExplicitLod 19 20 23 Lod 22 - Store 8(r00) 24 - 30: 27 Load 29(g_tTex1di4) - 31: 13 Load 15(g_sSamp) - 34: 33 SampledImage 30 31 - 35: 6(float) CompositeExtract 20 0 - 36: 6(float) ImageSampleDrefExplicitLod 34 20 35 Lod 22 - Store 25(r02) 36 - 42: 39 Load 41(g_tTex1du4) - 43: 13 Load 15(g_sSamp) - 46: 45 SampledImage 42 43 - 47: 6(float) CompositeExtract 20 0 - 48: 6(float) ImageSampleDrefExplicitLod 46 20 47 Lod 22 - Store 37(r04) 48 - 53: 50 Load 52(g_tTex2df4) - 54: 13 Load 15(g_sSamp) - 57: 56 SampledImage 53 54 - 61: 6(float) CompositeExtract 60 0 - 62: 6(float) CompositeExtract 61 0 - 63: 6(float) ImageSampleDrefExplicitLod 57 61 62 Lod 22 - Store 49(r20) 63 - 68: 65 Load 67(g_tTex2di4) - 69: 13 Load 15(g_sSamp) - 72: 71 SampledImage 68 69 - 73: 6(float) CompositeExtract 60 0 - 74: 6(float) CompositeExtract 73 0 - 75: 6(float) ImageSampleDrefExplicitLod 72 73 74 Lod 22 - Store 64(r22) 75 - 80: 77 Load 79(g_tTex2du4) - 81: 13 Load 15(g_sSamp) - 84: 83 SampledImage 80 81 - 85: 6(float) CompositeExtract 60 0 - 86: 6(float) CompositeExtract 85 0 - 87: 6(float) ImageSampleDrefExplicitLod 84 85 86 Lod 22 - Store 76(r24) 87 - 92: 89 Load 91(g_tTexcdf4) - 93: 13 Load 15(g_sSamp) - 96: 95 SampledImage 92 93 - 100: 6(float) CompositeExtract 99 0 - 101: 6(float) CompositeExtract 100 0 - 102: 6(float) ImageSampleDrefExplicitLod 96 100 101 Lod 22 - Store 88(r50) 102 - 107: 104 Load 106(g_tTexcdi4) - 108: 13 Load 15(g_sSamp) - 111: 110 SampledImage 107 108 - 112: 6(float) CompositeExtract 99 0 - 113: 6(float) CompositeExtract 112 0 - 114: 6(float) ImageSampleDrefExplicitLod 111 112 113 Lod 22 - Store 103(r52) 114 - 119: 116 Load 118(g_tTexcdu4) - 120: 13 Load 15(g_sSamp) - 123: 122 SampledImage 119 120 - 124: 6(float) CompositeExtract 99 0 - 125: 6(float) CompositeExtract 124 0 - 126: 6(float) ImageSampleDrefExplicitLod 123 124 125 Lod 22 - Store 115(r54) 126 - 135: 134(ptr) AccessChain 130(psout) 131 - Store 135 133 - 137: 7(ptr) AccessChain 130(psout) 136 - Store 137 132 - 140: 134(ptr) AccessChain 130(psout) 131 - 141: 127(fvec4) Load 140 - Store 139(Color) 141 - 144: 7(ptr) AccessChain 130(psout) 136 - 145: 6(float) Load 144 - Store 143(Depth) 145 + 23: 22(fvec2) CompositeConstruct 20 21 + 25: 6(float) CompositeExtract 23 1 + 26: 6(float) ImageSampleDrefExplicitLod 19 23 25 Lod 24 + Store 8(r00) 26 + 32: 29 Load 31(g_tTex1di4) + 33: 13 Load 15(g_sSamp) + 36: 35 SampledImage 32 33 + 37: 22(fvec2) CompositeConstruct 20 21 + 38: 6(float) CompositeExtract 37 1 + 39: 6(float) ImageSampleDrefExplicitLod 36 37 38 Lod 24 + Store 27(r02) 39 + 45: 42 Load 44(g_tTex1du4) + 46: 13 Load 15(g_sSamp) + 49: 48 SampledImage 45 46 + 50: 22(fvec2) CompositeConstruct 20 21 + 51: 6(float) CompositeExtract 50 1 + 52: 6(float) ImageSampleDrefExplicitLod 49 50 51 Lod 24 + Store 40(r04) 52 + 57: 54 Load 56(g_tTex2df4) + 58: 13 Load 15(g_sSamp) + 61: 60 SampledImage 57 58 + 65: 6(float) CompositeExtract 63 0 + 66: 6(float) CompositeExtract 63 1 + 67: 64(fvec3) CompositeConstruct 65 66 21 + 68: 6(float) CompositeExtract 67 2 + 69: 6(float) ImageSampleDrefExplicitLod 61 67 68 Lod 24 + Store 53(r20) 69 + 74: 71 Load 73(g_tTex2di4) + 75: 13 Load 15(g_sSamp) + 78: 77 SampledImage 74 75 + 79: 6(float) CompositeExtract 63 0 + 80: 6(float) CompositeExtract 63 1 + 81: 64(fvec3) CompositeConstruct 79 80 21 + 82: 6(float) CompositeExtract 81 2 + 83: 6(float) ImageSampleDrefExplicitLod 78 81 82 Lod 24 + Store 70(r22) 83 + 88: 85 Load 87(g_tTex2du4) + 89: 13 Load 15(g_sSamp) + 92: 91 SampledImage 88 89 + 93: 6(float) CompositeExtract 63 0 + 94: 6(float) CompositeExtract 63 1 + 95: 64(fvec3) CompositeConstruct 93 94 21 + 96: 6(float) CompositeExtract 95 2 + 97: 6(float) ImageSampleDrefExplicitLod 92 95 96 Lod 24 + Store 84(r24) 97 + 102: 99 Load 101(g_tTexcdf4) + 103: 13 Load 15(g_sSamp) + 106: 105 SampledImage 102 103 + 110: 6(float) CompositeExtract 108 0 + 111: 6(float) CompositeExtract 108 1 + 112: 6(float) CompositeExtract 108 2 + 113: 109(fvec4) CompositeConstruct 110 111 112 21 + 114: 6(float) CompositeExtract 113 3 + 115: 6(float) ImageSampleDrefExplicitLod 106 113 114 Lod 24 + Store 98(r50) 115 + 120: 117 Load 119(g_tTexcdi4) + 121: 13 Load 15(g_sSamp) + 124: 123 SampledImage 120 121 + 125: 6(float) CompositeExtract 108 0 + 126: 6(float) CompositeExtract 108 1 + 127: 6(float) CompositeExtract 108 2 + 128: 109(fvec4) CompositeConstruct 125 126 127 21 + 129: 6(float) CompositeExtract 128 3 + 130: 6(float) ImageSampleDrefExplicitLod 124 128 129 Lod 24 + Store 116(r52) 130 + 135: 132 Load 134(g_tTexcdu4) + 136: 13 Load 15(g_sSamp) + 139: 138 SampledImage 135 136 + 140: 6(float) CompositeExtract 108 0 + 141: 6(float) CompositeExtract 108 1 + 142: 6(float) CompositeExtract 108 2 + 143: 109(fvec4) CompositeConstruct 140 141 142 21 + 144: 6(float) CompositeExtract 143 3 + 145: 6(float) ImageSampleDrefExplicitLod 139 143 144 Lod 24 + Store 131(r54) 145 + 153: 152(ptr) AccessChain 148(psout) 149 + Store 153 151 + 155: 7(ptr) AccessChain 148(psout) 154 + Store 155 150 + 158: 152(ptr) AccessChain 148(psout) 149 + 159: 109(fvec4) Load 158 + Store 157(Color) 159 + 162: 7(ptr) AccessChain 148(psout) 154 + 163: 6(float) Load 162 + Store 161(Depth) 163 Return FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index b30a252e..bfbfbb29 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -28,7 +28,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -60,7 +60,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -78,7 +78,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -96,7 +96,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -182,7 +182,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec2 (temp float) +0:42 Construct vec2 (temp 2-component vector of float) 0:42 Constant: 0:42 0.100000 0:42 Constant: @@ -198,7 +198,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec2 (temp float) +0:43 Construct vec2 (temp 2-component vector of float) 0:43 Constant: 0:43 0.100000 0:43 Constant: @@ -214,7 +214,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec2 (temp float) +0:44 Construct vec2 (temp 2-component vector of float) 0:44 Constant: 0:44 0.100000 0:44 Constant: @@ -230,7 +230,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec3 (temp float) +0:47 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -248,7 +248,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec3 (temp float) +0:48 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -266,7 +266,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec3 (temp float) +0:49 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -337,76 +337,76 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 157 +// Id's are bound by 167 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 104 108 + EntryPoint Fragment 4 "main" 114 118 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r01" Name 11 "g_tTex1df4" Name 15 "g_sSamp" - Name 27 "r03" - Name 30 "g_tTex1di4" - Name 38 "r05" - Name 42 "g_tTex1du4" - Name 50 "r21" - Name 53 "g_tTex2df4" - Name 68 "r23" - Name 71 "g_tTex2di4" - Name 80 "r25" - Name 83 "g_tTex2du4" - Name 93 "PS_OUTPUT" - MemberName 93(PS_OUTPUT) 0 "Color" - MemberName 93(PS_OUTPUT) 1 "Depth" - Name 95 "psout" - Name 104 "Color" - Name 108 "Depth" - Name 114 "g_tTex3df4" - Name 117 "g_tTex3di4" - Name 120 "g_tTex3du4" - Name 123 "g_tTexcdf4" - Name 126 "g_tTexcdi4" - Name 129 "g_tTexcdu4" - Name 132 "g_tTex1df4a" - Name 135 "g_tTex1di4a" - Name 138 "g_tTex1du4a" - Name 141 "g_tTex2df4a" - Name 144 "g_tTex2di4a" - Name 147 "g_tTex2du4a" - Name 150 "g_tTexcdf4a" - Name 153 "g_tTexcdi4a" - Name 156 "g_tTexcdu4a" + Name 29 "r03" + Name 32 "g_tTex1di4" + Name 41 "r05" + Name 45 "g_tTex1du4" + Name 54 "r21" + Name 57 "g_tTex2df4" + Name 74 "r23" + Name 77 "g_tTex2di4" + Name 88 "r25" + Name 91 "g_tTex2du4" + Name 103 "PS_OUTPUT" + MemberName 103(PS_OUTPUT) 0 "Color" + MemberName 103(PS_OUTPUT) 1 "Depth" + Name 105 "psout" + Name 114 "Color" + Name 118 "Depth" + Name 124 "g_tTex3df4" + Name 127 "g_tTex3di4" + Name 130 "g_tTex3du4" + Name 133 "g_tTexcdf4" + Name 136 "g_tTexcdi4" + Name 139 "g_tTexcdu4" + Name 142 "g_tTex1df4a" + Name 145 "g_tTex1di4a" + Name 148 "g_tTex1du4a" + Name 151 "g_tTex2df4a" + Name 154 "g_tTex2di4a" + Name 157 "g_tTex2du4a" + Name 160 "g_tTexcdf4a" + Name 163 "g_tTexcdi4a" + Name 166 "g_tTexcdu4a" Decorate 11(g_tTex1df4) DescriptorSet 0 Decorate 11(g_tTex1df4) Binding 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 30(g_tTex1di4) DescriptorSet 0 - Decorate 42(g_tTex1du4) DescriptorSet 0 - Decorate 53(g_tTex2df4) DescriptorSet 0 - Decorate 71(g_tTex2di4) DescriptorSet 0 - Decorate 83(g_tTex2du4) DescriptorSet 0 - Decorate 104(Color) Location 0 - Decorate 108(Depth) BuiltIn FragDepth - Decorate 114(g_tTex3df4) DescriptorSet 0 - Decorate 117(g_tTex3di4) DescriptorSet 0 - Decorate 120(g_tTex3du4) DescriptorSet 0 - Decorate 123(g_tTexcdf4) DescriptorSet 0 - Decorate 126(g_tTexcdi4) DescriptorSet 0 - Decorate 129(g_tTexcdu4) DescriptorSet 0 - Decorate 132(g_tTex1df4a) DescriptorSet 0 - Decorate 135(g_tTex1di4a) DescriptorSet 0 - Decorate 138(g_tTex1du4a) DescriptorSet 0 - Decorate 141(g_tTex2df4a) DescriptorSet 0 - Decorate 144(g_tTex2di4a) DescriptorSet 0 - Decorate 147(g_tTex2du4a) DescriptorSet 0 - Decorate 150(g_tTexcdf4a) DescriptorSet 0 - Decorate 153(g_tTexcdi4a) DescriptorSet 0 - Decorate 156(g_tTexcdu4a) DescriptorSet 0 + Decorate 32(g_tTex1di4) DescriptorSet 0 + Decorate 45(g_tTex1du4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 77(g_tTex2di4) DescriptorSet 0 + Decorate 91(g_tTex2du4) DescriptorSet 0 + Decorate 114(Color) Location 0 + Decorate 118(Depth) BuiltIn FragDepth + Decorate 124(g_tTex3df4) DescriptorSet 0 + Decorate 127(g_tTex3di4) DescriptorSet 0 + Decorate 130(g_tTex3du4) DescriptorSet 0 + Decorate 133(g_tTexcdf4) DescriptorSet 0 + Decorate 136(g_tTexcdi4) DescriptorSet 0 + Decorate 139(g_tTexcdu4) DescriptorSet 0 + Decorate 142(g_tTex1df4a) DescriptorSet 0 + Decorate 145(g_tTex1di4a) DescriptorSet 0 + Decorate 148(g_tTex1du4a) DescriptorSet 0 + Decorate 151(g_tTex2df4a) DescriptorSet 0 + Decorate 154(g_tTex2di4a) DescriptorSet 0 + Decorate 157(g_tTex2du4a) DescriptorSet 0 + Decorate 160(g_tTexcdf4a) DescriptorSet 0 + Decorate 163(g_tTexcdi4a) DescriptorSet 0 + Decorate 166(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -421,155 +421,165 @@ gl_FragCoord origin is upper left 18: TypeSampledImage 17 20: 6(float) Constant 1036831949 21: 6(float) Constant 1061158912 - 22: 6(float) Constant 0 - 23: TypeInt 32 1 - 24: 23(int) Constant 2 - 28: TypeImage 23(int) 1D sampled format:Unknown - 29: TypePointer UniformConstant 28 - 30(g_tTex1di4): 29(ptr) Variable UniformConstant - 33: TypeImage 23(int) 1D depth sampled format:Unknown - 34: TypeSampledImage 33 - 39: TypeInt 32 0 - 40: TypeImage 39(int) 1D sampled format:Unknown - 41: TypePointer UniformConstant 40 - 42(g_tTex1du4): 41(ptr) Variable UniformConstant - 45: TypeImage 39(int) 1D depth sampled format:Unknown - 46: TypeSampledImage 45 - 51: TypeImage 6(float) 2D sampled format:Unknown - 52: TypePointer UniformConstant 51 - 53(g_tTex2df4): 52(ptr) Variable UniformConstant - 56: TypeImage 6(float) 2D depth sampled format:Unknown - 57: TypeSampledImage 56 - 59: TypeVector 6(float) 2 - 60: 6(float) Constant 1045220557 - 61: 59(fvec2) ConstantComposite 20 60 - 63: TypeVector 23(int) 2 - 64: 23(int) Constant 3 - 65: 63(ivec2) ConstantComposite 24 64 - 69: TypeImage 23(int) 2D sampled format:Unknown - 70: TypePointer UniformConstant 69 - 71(g_tTex2di4): 70(ptr) Variable UniformConstant - 74: TypeImage 23(int) 2D depth sampled format:Unknown - 75: TypeSampledImage 74 - 81: TypeImage 39(int) 2D sampled format:Unknown - 82: TypePointer UniformConstant 81 - 83(g_tTex2du4): 82(ptr) Variable UniformConstant - 86: TypeImage 39(int) 2D depth sampled format:Unknown - 87: TypeSampledImage 86 - 92: TypeVector 6(float) 4 - 93(PS_OUTPUT): TypeStruct 92(fvec4) 6(float) - 94: TypePointer Function 93(PS_OUTPUT) - 96: 23(int) Constant 0 - 97: 6(float) Constant 1065353216 - 98: 92(fvec4) ConstantComposite 97 97 97 97 - 99: TypePointer Function 92(fvec4) - 101: 23(int) Constant 1 - 103: TypePointer Output 92(fvec4) - 104(Color): 103(ptr) Variable Output - 107: TypePointer Output 6(float) - 108(Depth): 107(ptr) Variable Output - 112: TypeImage 6(float) 3D sampled format:Unknown - 113: TypePointer UniformConstant 112 - 114(g_tTex3df4): 113(ptr) Variable UniformConstant - 115: TypeImage 23(int) 3D sampled format:Unknown - 116: TypePointer UniformConstant 115 - 117(g_tTex3di4): 116(ptr) Variable UniformConstant - 118: TypeImage 39(int) 3D sampled format:Unknown - 119: TypePointer UniformConstant 118 - 120(g_tTex3du4): 119(ptr) Variable UniformConstant - 121: TypeImage 6(float) Cube sampled format:Unknown - 122: TypePointer UniformConstant 121 - 123(g_tTexcdf4): 122(ptr) Variable UniformConstant - 124: TypeImage 23(int) Cube sampled format:Unknown - 125: TypePointer UniformConstant 124 - 126(g_tTexcdi4): 125(ptr) Variable UniformConstant - 127: TypeImage 39(int) Cube sampled format:Unknown - 128: TypePointer UniformConstant 127 - 129(g_tTexcdu4): 128(ptr) Variable UniformConstant - 130: TypeImage 6(float) 1D array sampled format:Unknown - 131: TypePointer UniformConstant 130 -132(g_tTex1df4a): 131(ptr) Variable UniformConstant - 133: TypeImage 23(int) 1D array sampled format:Unknown - 134: TypePointer UniformConstant 133 -135(g_tTex1di4a): 134(ptr) Variable UniformConstant - 136: TypeImage 39(int) 1D array sampled format:Unknown - 137: TypePointer UniformConstant 136 -138(g_tTex1du4a): 137(ptr) Variable UniformConstant - 139: TypeImage 6(float) 2D array sampled format:Unknown - 140: TypePointer UniformConstant 139 -141(g_tTex2df4a): 140(ptr) Variable UniformConstant - 142: TypeImage 23(int) 2D array sampled format:Unknown - 143: TypePointer UniformConstant 142 -144(g_tTex2di4a): 143(ptr) Variable UniformConstant - 145: TypeImage 39(int) 2D array sampled format:Unknown - 146: TypePointer UniformConstant 145 -147(g_tTex2du4a): 146(ptr) Variable UniformConstant - 148: TypeImage 6(float) Cube array sampled format:Unknown - 149: TypePointer UniformConstant 148 -150(g_tTexcdf4a): 149(ptr) Variable UniformConstant - 151: TypeImage 23(int) Cube array sampled format:Unknown - 152: TypePointer UniformConstant 151 -153(g_tTexcdi4a): 152(ptr) Variable UniformConstant - 154: TypeImage 39(int) Cube array sampled format:Unknown - 155: TypePointer UniformConstant 154 -156(g_tTexcdu4a): 155(ptr) Variable UniformConstant + 22: TypeVector 6(float) 2 + 24: 6(float) Constant 0 + 25: TypeInt 32 1 + 26: 25(int) Constant 2 + 30: TypeImage 25(int) 1D sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex1di4): 31(ptr) Variable UniformConstant + 35: TypeImage 25(int) 1D depth sampled format:Unknown + 36: TypeSampledImage 35 + 42: TypeInt 32 0 + 43: TypeImage 42(int) 1D sampled format:Unknown + 44: TypePointer UniformConstant 43 + 45(g_tTex1du4): 44(ptr) Variable UniformConstant + 48: TypeImage 42(int) 1D depth sampled format:Unknown + 49: TypeSampledImage 48 + 55: TypeImage 6(float) 2D sampled format:Unknown + 56: TypePointer UniformConstant 55 + 57(g_tTex2df4): 56(ptr) Variable UniformConstant + 60: TypeImage 6(float) 2D depth sampled format:Unknown + 61: TypeSampledImage 60 + 63: 6(float) Constant 1045220557 + 64: 22(fvec2) ConstantComposite 20 63 + 65: TypeVector 6(float) 3 + 69: TypeVector 25(int) 2 + 70: 25(int) Constant 3 + 71: 69(ivec2) ConstantComposite 26 70 + 75: TypeImage 25(int) 2D sampled format:Unknown + 76: TypePointer UniformConstant 75 + 77(g_tTex2di4): 76(ptr) Variable UniformConstant + 80: TypeImage 25(int) 2D depth sampled format:Unknown + 81: TypeSampledImage 80 + 89: TypeImage 42(int) 2D sampled format:Unknown + 90: TypePointer UniformConstant 89 + 91(g_tTex2du4): 90(ptr) Variable UniformConstant + 94: TypeImage 42(int) 2D depth sampled format:Unknown + 95: TypeSampledImage 94 + 102: TypeVector 6(float) 4 + 103(PS_OUTPUT): TypeStruct 102(fvec4) 6(float) + 104: TypePointer Function 103(PS_OUTPUT) + 106: 25(int) Constant 0 + 107: 6(float) Constant 1065353216 + 108: 102(fvec4) ConstantComposite 107 107 107 107 + 109: TypePointer Function 102(fvec4) + 111: 25(int) Constant 1 + 113: TypePointer Output 102(fvec4) + 114(Color): 113(ptr) Variable Output + 117: TypePointer Output 6(float) + 118(Depth): 117(ptr) Variable Output + 122: TypeImage 6(float) 3D sampled format:Unknown + 123: TypePointer UniformConstant 122 + 124(g_tTex3df4): 123(ptr) Variable UniformConstant + 125: TypeImage 25(int) 3D sampled format:Unknown + 126: TypePointer UniformConstant 125 + 127(g_tTex3di4): 126(ptr) Variable UniformConstant + 128: TypeImage 42(int) 3D sampled format:Unknown + 129: TypePointer UniformConstant 128 + 130(g_tTex3du4): 129(ptr) Variable UniformConstant + 131: TypeImage 6(float) Cube sampled format:Unknown + 132: TypePointer UniformConstant 131 + 133(g_tTexcdf4): 132(ptr) Variable UniformConstant + 134: TypeImage 25(int) Cube sampled format:Unknown + 135: TypePointer UniformConstant 134 + 136(g_tTexcdi4): 135(ptr) Variable UniformConstant + 137: TypeImage 42(int) Cube sampled format:Unknown + 138: TypePointer UniformConstant 137 + 139(g_tTexcdu4): 138(ptr) Variable UniformConstant + 140: TypeImage 6(float) 1D array sampled format:Unknown + 141: TypePointer UniformConstant 140 +142(g_tTex1df4a): 141(ptr) Variable UniformConstant + 143: TypeImage 25(int) 1D array sampled format:Unknown + 144: TypePointer UniformConstant 143 +145(g_tTex1di4a): 144(ptr) Variable UniformConstant + 146: TypeImage 42(int) 1D array sampled format:Unknown + 147: TypePointer UniformConstant 146 +148(g_tTex1du4a): 147(ptr) Variable UniformConstant + 149: TypeImage 6(float) 2D array sampled format:Unknown + 150: TypePointer UniformConstant 149 +151(g_tTex2df4a): 150(ptr) Variable UniformConstant + 152: TypeImage 25(int) 2D array sampled format:Unknown + 153: TypePointer UniformConstant 152 +154(g_tTex2di4a): 153(ptr) Variable UniformConstant + 155: TypeImage 42(int) 2D array sampled format:Unknown + 156: TypePointer UniformConstant 155 +157(g_tTex2du4a): 156(ptr) Variable UniformConstant + 158: TypeImage 6(float) Cube array sampled format:Unknown + 159: TypePointer UniformConstant 158 +160(g_tTexcdf4a): 159(ptr) Variable UniformConstant + 161: TypeImage 25(int) Cube array sampled format:Unknown + 162: TypePointer UniformConstant 161 +163(g_tTexcdi4a): 162(ptr) Variable UniformConstant + 164: TypeImage 42(int) Cube array sampled format:Unknown + 165: TypePointer UniformConstant 164 +166(g_tTexcdu4a): 165(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r01): 7(ptr) Variable Function - 27(r03): 7(ptr) Variable Function - 38(r05): 7(ptr) Variable Function - 50(r21): 7(ptr) Variable Function - 68(r23): 7(ptr) Variable Function - 80(r25): 7(ptr) Variable Function - 95(psout): 94(ptr) Variable Function + 29(r03): 7(ptr) Variable Function + 41(r05): 7(ptr) Variable Function + 54(r21): 7(ptr) Variable Function + 74(r23): 7(ptr) Variable Function + 88(r25): 7(ptr) Variable Function + 105(psout): 104(ptr) Variable Function 12: 9 Load 11(g_tTex1df4) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 25: 6(float) CompositeExtract 20 0 - 26: 6(float) ImageSampleDrefExplicitLod 19 20 25 Lod ConstOffset 22 24 - Store 8(r01) 26 - 31: 28 Load 30(g_tTex1di4) - 32: 13 Load 15(g_sSamp) - 35: 34 SampledImage 31 32 - 36: 6(float) CompositeExtract 20 0 - 37: 6(float) ImageSampleDrefExplicitLod 35 20 36 Lod ConstOffset 22 24 - Store 27(r03) 37 - 43: 40 Load 42(g_tTex1du4) - 44: 13 Load 15(g_sSamp) - 47: 46 SampledImage 43 44 - 48: 6(float) CompositeExtract 20 0 - 49: 6(float) ImageSampleDrefExplicitLod 47 20 48 Lod ConstOffset 22 24 - Store 38(r05) 49 - 54: 51 Load 53(g_tTex2df4) - 55: 13 Load 15(g_sSamp) - 58: 57 SampledImage 54 55 - 62: 6(float) CompositeExtract 61 0 - 66: 6(float) CompositeExtract 62 0 - 67: 6(float) ImageSampleDrefExplicitLod 58 62 66 Lod ConstOffset 22 65 - Store 50(r21) 67 - 72: 69 Load 71(g_tTex2di4) - 73: 13 Load 15(g_sSamp) - 76: 75 SampledImage 72 73 - 77: 6(float) CompositeExtract 61 0 - 78: 6(float) CompositeExtract 77 0 - 79: 6(float) ImageSampleDrefExplicitLod 76 77 78 Lod ConstOffset 22 65 - Store 68(r23) 79 - 84: 81 Load 83(g_tTex2du4) - 85: 13 Load 15(g_sSamp) - 88: 87 SampledImage 84 85 - 89: 6(float) CompositeExtract 61 0 - 90: 6(float) CompositeExtract 89 0 - 91: 6(float) ImageSampleDrefExplicitLod 88 89 90 Lod ConstOffset 22 65 - Store 80(r25) 91 - 100: 99(ptr) AccessChain 95(psout) 96 - Store 100 98 - 102: 7(ptr) AccessChain 95(psout) 101 - Store 102 97 - 105: 99(ptr) AccessChain 95(psout) 96 - 106: 92(fvec4) Load 105 - Store 104(Color) 106 - 109: 7(ptr) AccessChain 95(psout) 101 - 110: 6(float) Load 109 - Store 108(Depth) 110 + 23: 22(fvec2) CompositeConstruct 20 21 + 27: 6(float) CompositeExtract 23 1 + 28: 6(float) ImageSampleDrefExplicitLod 19 23 27 Lod ConstOffset 24 26 + Store 8(r01) 28 + 33: 30 Load 32(g_tTex1di4) + 34: 13 Load 15(g_sSamp) + 37: 36 SampledImage 33 34 + 38: 22(fvec2) CompositeConstruct 20 21 + 39: 6(float) CompositeExtract 38 1 + 40: 6(float) ImageSampleDrefExplicitLod 37 38 39 Lod ConstOffset 24 26 + Store 29(r03) 40 + 46: 43 Load 45(g_tTex1du4) + 47: 13 Load 15(g_sSamp) + 50: 49 SampledImage 46 47 + 51: 22(fvec2) CompositeConstruct 20 21 + 52: 6(float) CompositeExtract 51 1 + 53: 6(float) ImageSampleDrefExplicitLod 50 51 52 Lod ConstOffset 24 26 + Store 41(r05) 53 + 58: 55 Load 57(g_tTex2df4) + 59: 13 Load 15(g_sSamp) + 62: 61 SampledImage 58 59 + 66: 6(float) CompositeExtract 64 0 + 67: 6(float) CompositeExtract 64 1 + 68: 65(fvec3) CompositeConstruct 66 67 21 + 72: 6(float) CompositeExtract 68 2 + 73: 6(float) ImageSampleDrefExplicitLod 62 68 72 Lod ConstOffset 24 71 + Store 54(r21) 73 + 78: 75 Load 77(g_tTex2di4) + 79: 13 Load 15(g_sSamp) + 82: 81 SampledImage 78 79 + 83: 6(float) CompositeExtract 64 0 + 84: 6(float) CompositeExtract 64 1 + 85: 65(fvec3) CompositeConstruct 83 84 21 + 86: 6(float) CompositeExtract 85 2 + 87: 6(float) ImageSampleDrefExplicitLod 82 85 86 Lod ConstOffset 24 71 + Store 74(r23) 87 + 92: 89 Load 91(g_tTex2du4) + 93: 13 Load 15(g_sSamp) + 96: 95 SampledImage 92 93 + 97: 6(float) CompositeExtract 64 0 + 98: 6(float) CompositeExtract 64 1 + 99: 65(fvec3) CompositeConstruct 97 98 21 + 100: 6(float) CompositeExtract 99 2 + 101: 6(float) ImageSampleDrefExplicitLod 96 99 100 Lod ConstOffset 24 71 + Store 88(r25) 101 + 110: 109(ptr) AccessChain 105(psout) 106 + Store 110 108 + 112: 7(ptr) AccessChain 105(psout) 111 + Store 112 107 + 115: 109(ptr) AccessChain 105(psout) 106 + 116: 102(fvec4) Load 115 + Store 114(Color) 116 + 119: 7(ptr) AccessChain 105(psout) 111 + 120: 6(float) Load 119 + Store 118(Depth) 120 Return FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index 19d262ad..0e38a7d6 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -29,7 +29,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -46,7 +46,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -63,7 +63,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -82,7 +82,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -101,7 +101,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -188,7 +188,7 @@ gl_FragCoord origin is upper left 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:42 Construct vec3 (temp float) +0:42 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -205,7 +205,7 @@ gl_FragCoord origin is upper left 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:43 Construct vec3 (temp float) +0:43 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -222,7 +222,7 @@ gl_FragCoord origin is upper left 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:44 Construct vec3 (temp float) +0:44 Construct vec3 (temp 3-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -239,7 +239,7 @@ gl_FragCoord origin is upper left 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:47 Construct vec4 (temp float) +0:47 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -258,7 +258,7 @@ gl_FragCoord origin is upper left 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:48 Construct vec4 (temp float) +0:48 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -277,7 +277,7 @@ gl_FragCoord origin is upper left 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) -0:49 Construct vec4 (temp float) +0:49 Construct vec4 (temp 4-component vector of float) 0:? Constant: 0:? 0.100000 0:? 0.200000 @@ -349,76 +349,76 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 163 +// Id's are bound by 178 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 110 114 + EntryPoint Fragment 4 "main" 125 129 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "r11" Name 11 "g_tTex1df4a" Name 15 "g_sSamp" - Name 31 "r13" - Name 34 "g_tTex1di4a" - Name 43 "r15" - Name 47 "g_tTex1du4a" - Name 56 "r31" - Name 59 "g_tTex2df4a" - Name 74 "r33" - Name 77 "g_tTex2di4a" - Name 86 "r35" - Name 89 "g_tTex2du4a" - Name 99 "PS_OUTPUT" - MemberName 99(PS_OUTPUT) 0 "Color" - MemberName 99(PS_OUTPUT) 1 "Depth" - Name 101 "psout" - Name 110 "Color" - Name 114 "Depth" - Name 120 "g_tTex1df4" - Name 123 "g_tTex1di4" - Name 126 "g_tTex1du4" - Name 129 "g_tTex2df4" - Name 132 "g_tTex2di4" - Name 135 "g_tTex2du4" - Name 138 "g_tTex3df4" - Name 141 "g_tTex3di4" - Name 144 "g_tTex3du4" - Name 147 "g_tTexcdf4" - Name 150 "g_tTexcdi4" - Name 153 "g_tTexcdu4" - Name 156 "g_tTexcdf4a" - Name 159 "g_tTexcdi4a" - Name 162 "g_tTexcdu4a" + Name 34 "r13" + Name 37 "g_tTex1di4a" + Name 48 "r15" + Name 52 "g_tTex1du4a" + Name 63 "r31" + Name 66 "g_tTex2df4a" + Name 84 "r33" + Name 87 "g_tTex2di4a" + Name 99 "r35" + Name 102 "g_tTex2du4a" + Name 114 "PS_OUTPUT" + MemberName 114(PS_OUTPUT) 0 "Color" + MemberName 114(PS_OUTPUT) 1 "Depth" + Name 116 "psout" + Name 125 "Color" + Name 129 "Depth" + Name 135 "g_tTex1df4" + Name 138 "g_tTex1di4" + Name 141 "g_tTex1du4" + Name 144 "g_tTex2df4" + Name 147 "g_tTex2di4" + Name 150 "g_tTex2du4" + Name 153 "g_tTex3df4" + Name 156 "g_tTex3di4" + Name 159 "g_tTex3du4" + Name 162 "g_tTexcdf4" + Name 165 "g_tTexcdi4" + Name 168 "g_tTexcdu4" + Name 171 "g_tTexcdf4a" + Name 174 "g_tTexcdi4a" + Name 177 "g_tTexcdu4a" Decorate 11(g_tTex1df4a) DescriptorSet 0 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 34(g_tTex1di4a) DescriptorSet 0 - Decorate 47(g_tTex1du4a) DescriptorSet 0 - Decorate 59(g_tTex2df4a) DescriptorSet 0 - Decorate 77(g_tTex2di4a) DescriptorSet 0 - Decorate 89(g_tTex2du4a) DescriptorSet 0 - Decorate 110(Color) Location 0 - Decorate 114(Depth) BuiltIn FragDepth - Decorate 120(g_tTex1df4) DescriptorSet 0 - Decorate 120(g_tTex1df4) Binding 0 - Decorate 123(g_tTex1di4) DescriptorSet 0 - Decorate 126(g_tTex1du4) DescriptorSet 0 - Decorate 129(g_tTex2df4) DescriptorSet 0 - Decorate 132(g_tTex2di4) DescriptorSet 0 - Decorate 135(g_tTex2du4) DescriptorSet 0 - Decorate 138(g_tTex3df4) DescriptorSet 0 - Decorate 141(g_tTex3di4) DescriptorSet 0 - Decorate 144(g_tTex3du4) DescriptorSet 0 - Decorate 147(g_tTexcdf4) DescriptorSet 0 - Decorate 150(g_tTexcdi4) DescriptorSet 0 - Decorate 153(g_tTexcdu4) DescriptorSet 0 - Decorate 156(g_tTexcdf4a) DescriptorSet 0 - Decorate 159(g_tTexcdi4a) DescriptorSet 0 - Decorate 162(g_tTexcdu4a) DescriptorSet 0 + Decorate 37(g_tTex1di4a) DescriptorSet 0 + Decorate 52(g_tTex1du4a) DescriptorSet 0 + Decorate 66(g_tTex2df4a) DescriptorSet 0 + Decorate 87(g_tTex2di4a) DescriptorSet 0 + Decorate 102(g_tTex2du4a) DescriptorSet 0 + Decorate 125(Color) Location 0 + Decorate 129(Depth) BuiltIn FragDepth + Decorate 135(g_tTex1df4) DescriptorSet 0 + Decorate 135(g_tTex1df4) Binding 0 + Decorate 138(g_tTex1di4) DescriptorSet 0 + Decorate 141(g_tTex1du4) DescriptorSet 0 + Decorate 144(g_tTex2df4) DescriptorSet 0 + Decorate 147(g_tTex2di4) DescriptorSet 0 + Decorate 150(g_tTex2du4) DescriptorSet 0 + Decorate 153(g_tTex3df4) DescriptorSet 0 + Decorate 156(g_tTex3di4) DescriptorSet 0 + Decorate 159(g_tTex3du4) DescriptorSet 0 + Decorate 162(g_tTexcdf4) DescriptorSet 0 + Decorate 165(g_tTexcdi4) DescriptorSet 0 + Decorate 168(g_tTexcdu4) DescriptorSet 0 + Decorate 171(g_tTexcdf4a) DescriptorSet 0 + Decorate 174(g_tTexcdi4a) DescriptorSet 0 + Decorate 177(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -436,158 +436,173 @@ gl_FragCoord origin is upper left 22: 6(float) Constant 1045220557 23: 20(fvec2) ConstantComposite 21 22 24: 6(float) Constant 1061158912 - 26: 6(float) Constant 0 - 27: TypeInt 32 1 - 28: 27(int) Constant 2 - 32: TypeImage 27(int) 1D array sampled format:Unknown - 33: TypePointer UniformConstant 32 - 34(g_tTex1di4a): 33(ptr) Variable UniformConstant - 37: TypeImage 27(int) 1D depth array sampled format:Unknown - 38: TypeSampledImage 37 - 44: TypeInt 32 0 - 45: TypeImage 44(int) 1D array sampled format:Unknown - 46: TypePointer UniformConstant 45 - 47(g_tTex1du4a): 46(ptr) Variable UniformConstant - 50: TypeImage 44(int) 1D depth array sampled format:Unknown - 51: TypeSampledImage 50 - 57: TypeImage 6(float) 2D array sampled format:Unknown - 58: TypePointer UniformConstant 57 - 59(g_tTex2df4a): 58(ptr) Variable UniformConstant - 62: TypeImage 6(float) 2D depth array sampled format:Unknown - 63: TypeSampledImage 62 - 65: TypeVector 6(float) 3 - 66: 6(float) Constant 1050253722 - 67: 65(fvec3) ConstantComposite 21 22 66 - 69: TypeVector 27(int) 2 - 70: 27(int) Constant 3 - 71: 69(ivec2) ConstantComposite 28 70 - 75: TypeImage 27(int) 2D array sampled format:Unknown - 76: TypePointer UniformConstant 75 - 77(g_tTex2di4a): 76(ptr) Variable UniformConstant - 80: TypeImage 27(int) 2D depth array sampled format:Unknown - 81: TypeSampledImage 80 - 87: TypeImage 44(int) 2D array sampled format:Unknown - 88: TypePointer UniformConstant 87 - 89(g_tTex2du4a): 88(ptr) Variable UniformConstant - 92: TypeImage 44(int) 2D depth array sampled format:Unknown - 93: TypeSampledImage 92 - 98: TypeVector 6(float) 4 - 99(PS_OUTPUT): TypeStruct 98(fvec4) 6(float) - 100: TypePointer Function 99(PS_OUTPUT) - 102: 27(int) Constant 0 - 103: 6(float) Constant 1065353216 - 104: 98(fvec4) ConstantComposite 103 103 103 103 - 105: TypePointer Function 98(fvec4) - 107: 27(int) Constant 1 - 109: TypePointer Output 98(fvec4) - 110(Color): 109(ptr) Variable Output - 113: TypePointer Output 6(float) - 114(Depth): 113(ptr) Variable Output - 118: TypeImage 6(float) 1D sampled format:Unknown - 119: TypePointer UniformConstant 118 - 120(g_tTex1df4): 119(ptr) Variable UniformConstant - 121: TypeImage 27(int) 1D sampled format:Unknown - 122: TypePointer UniformConstant 121 - 123(g_tTex1di4): 122(ptr) Variable UniformConstant - 124: TypeImage 44(int) 1D sampled format:Unknown - 125: TypePointer UniformConstant 124 - 126(g_tTex1du4): 125(ptr) Variable UniformConstant - 127: TypeImage 6(float) 2D sampled format:Unknown - 128: TypePointer UniformConstant 127 - 129(g_tTex2df4): 128(ptr) Variable UniformConstant - 130: TypeImage 27(int) 2D sampled format:Unknown - 131: TypePointer UniformConstant 130 - 132(g_tTex2di4): 131(ptr) Variable UniformConstant - 133: TypeImage 44(int) 2D sampled format:Unknown + 25: TypeVector 6(float) 3 + 29: 6(float) Constant 0 + 30: TypeInt 32 1 + 31: 30(int) Constant 2 + 35: TypeImage 30(int) 1D array sampled format:Unknown + 36: TypePointer UniformConstant 35 + 37(g_tTex1di4a): 36(ptr) Variable UniformConstant + 40: TypeImage 30(int) 1D depth array sampled format:Unknown + 41: TypeSampledImage 40 + 49: TypeInt 32 0 + 50: TypeImage 49(int) 1D array sampled format:Unknown + 51: TypePointer UniformConstant 50 + 52(g_tTex1du4a): 51(ptr) Variable UniformConstant + 55: TypeImage 49(int) 1D depth array sampled format:Unknown + 56: TypeSampledImage 55 + 64: TypeImage 6(float) 2D array sampled format:Unknown + 65: TypePointer UniformConstant 64 + 66(g_tTex2df4a): 65(ptr) Variable UniformConstant + 69: TypeImage 6(float) 2D depth array sampled format:Unknown + 70: TypeSampledImage 69 + 72: 6(float) Constant 1050253722 + 73: 25(fvec3) ConstantComposite 21 22 72 + 74: TypeVector 6(float) 4 + 79: TypeVector 30(int) 2 + 80: 30(int) Constant 3 + 81: 79(ivec2) ConstantComposite 31 80 + 85: TypeImage 30(int) 2D array sampled format:Unknown + 86: TypePointer UniformConstant 85 + 87(g_tTex2di4a): 86(ptr) Variable UniformConstant + 90: TypeImage 30(int) 2D depth array sampled format:Unknown + 91: TypeSampledImage 90 + 100: TypeImage 49(int) 2D array sampled format:Unknown + 101: TypePointer UniformConstant 100 +102(g_tTex2du4a): 101(ptr) Variable UniformConstant + 105: TypeImage 49(int) 2D depth array sampled format:Unknown + 106: TypeSampledImage 105 + 114(PS_OUTPUT): TypeStruct 74(fvec4) 6(float) + 115: TypePointer Function 114(PS_OUTPUT) + 117: 30(int) Constant 0 + 118: 6(float) Constant 1065353216 + 119: 74(fvec4) ConstantComposite 118 118 118 118 + 120: TypePointer Function 74(fvec4) + 122: 30(int) Constant 1 + 124: TypePointer Output 74(fvec4) + 125(Color): 124(ptr) Variable Output + 128: TypePointer Output 6(float) + 129(Depth): 128(ptr) Variable Output + 133: TypeImage 6(float) 1D sampled format:Unknown 134: TypePointer UniformConstant 133 - 135(g_tTex2du4): 134(ptr) Variable UniformConstant - 136: TypeImage 6(float) 3D sampled format:Unknown + 135(g_tTex1df4): 134(ptr) Variable UniformConstant + 136: TypeImage 30(int) 1D sampled format:Unknown 137: TypePointer UniformConstant 136 - 138(g_tTex3df4): 137(ptr) Variable UniformConstant - 139: TypeImage 27(int) 3D sampled format:Unknown + 138(g_tTex1di4): 137(ptr) Variable UniformConstant + 139: TypeImage 49(int) 1D sampled format:Unknown 140: TypePointer UniformConstant 139 - 141(g_tTex3di4): 140(ptr) Variable UniformConstant - 142: TypeImage 44(int) 3D sampled format:Unknown + 141(g_tTex1du4): 140(ptr) Variable UniformConstant + 142: TypeImage 6(float) 2D sampled format:Unknown 143: TypePointer UniformConstant 142 - 144(g_tTex3du4): 143(ptr) Variable UniformConstant - 145: TypeImage 6(float) Cube sampled format:Unknown + 144(g_tTex2df4): 143(ptr) Variable UniformConstant + 145: TypeImage 30(int) 2D sampled format:Unknown 146: TypePointer UniformConstant 145 - 147(g_tTexcdf4): 146(ptr) Variable UniformConstant - 148: TypeImage 27(int) Cube sampled format:Unknown + 147(g_tTex2di4): 146(ptr) Variable UniformConstant + 148: TypeImage 49(int) 2D sampled format:Unknown 149: TypePointer UniformConstant 148 - 150(g_tTexcdi4): 149(ptr) Variable UniformConstant - 151: TypeImage 44(int) Cube sampled format:Unknown + 150(g_tTex2du4): 149(ptr) Variable UniformConstant + 151: TypeImage 6(float) 3D sampled format:Unknown 152: TypePointer UniformConstant 151 - 153(g_tTexcdu4): 152(ptr) Variable UniformConstant - 154: TypeImage 6(float) Cube array sampled format:Unknown + 153(g_tTex3df4): 152(ptr) Variable UniformConstant + 154: TypeImage 30(int) 3D sampled format:Unknown 155: TypePointer UniformConstant 154 -156(g_tTexcdf4a): 155(ptr) Variable UniformConstant - 157: TypeImage 27(int) Cube array sampled format:Unknown + 156(g_tTex3di4): 155(ptr) Variable UniformConstant + 157: TypeImage 49(int) 3D sampled format:Unknown 158: TypePointer UniformConstant 157 -159(g_tTexcdi4a): 158(ptr) Variable UniformConstant - 160: TypeImage 44(int) Cube array sampled format:Unknown + 159(g_tTex3du4): 158(ptr) Variable UniformConstant + 160: TypeImage 6(float) Cube sampled format:Unknown 161: TypePointer UniformConstant 160 -162(g_tTexcdu4a): 161(ptr) Variable UniformConstant + 162(g_tTexcdf4): 161(ptr) Variable UniformConstant + 163: TypeImage 30(int) Cube sampled format:Unknown + 164: TypePointer UniformConstant 163 + 165(g_tTexcdi4): 164(ptr) Variable UniformConstant + 166: TypeImage 49(int) Cube sampled format:Unknown + 167: TypePointer UniformConstant 166 + 168(g_tTexcdu4): 167(ptr) Variable UniformConstant + 169: TypeImage 6(float) Cube array sampled format:Unknown + 170: TypePointer UniformConstant 169 +171(g_tTexcdf4a): 170(ptr) Variable UniformConstant + 172: TypeImage 30(int) Cube array sampled format:Unknown + 173: TypePointer UniformConstant 172 +174(g_tTexcdi4a): 173(ptr) Variable UniformConstant + 175: TypeImage 49(int) Cube array sampled format:Unknown + 176: TypePointer UniformConstant 175 +177(g_tTexcdu4a): 176(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(r11): 7(ptr) Variable Function - 31(r13): 7(ptr) Variable Function - 43(r15): 7(ptr) Variable Function - 56(r31): 7(ptr) Variable Function - 74(r33): 7(ptr) Variable Function - 86(r35): 7(ptr) Variable Function - 101(psout): 100(ptr) Variable Function + 34(r13): 7(ptr) Variable Function + 48(r15): 7(ptr) Variable Function + 63(r31): 7(ptr) Variable Function + 84(r33): 7(ptr) Variable Function + 99(r35): 7(ptr) Variable Function + 116(psout): 115(ptr) Variable Function 12: 9 Load 11(g_tTex1df4a) 16: 13 Load 15(g_sSamp) 19: 18 SampledImage 12 16 - 25: 6(float) CompositeExtract 23 0 - 29: 6(float) CompositeExtract 25 0 - 30: 6(float) ImageSampleDrefExplicitLod 19 25 29 Lod ConstOffset 26 28 - Store 8(r11) 30 - 35: 32 Load 34(g_tTex1di4a) - 36: 13 Load 15(g_sSamp) - 39: 38 SampledImage 35 36 - 40: 6(float) CompositeExtract 23 0 - 41: 6(float) CompositeExtract 40 0 - 42: 6(float) ImageSampleDrefExplicitLod 39 40 41 Lod ConstOffset 26 28 - Store 31(r13) 42 - 48: 45 Load 47(g_tTex1du4a) - 49: 13 Load 15(g_sSamp) - 52: 51 SampledImage 48 49 - 53: 6(float) CompositeExtract 23 0 - 54: 6(float) CompositeExtract 53 0 - 55: 6(float) ImageSampleDrefExplicitLod 52 53 54 Lod ConstOffset 26 28 - Store 43(r15) 55 - 60: 57 Load 59(g_tTex2df4a) - 61: 13 Load 15(g_sSamp) - 64: 63 SampledImage 60 61 - 68: 6(float) CompositeExtract 67 0 - 72: 6(float) CompositeExtract 68 0 - 73: 6(float) ImageSampleDrefExplicitLod 64 68 72 Lod ConstOffset 26 71 - Store 56(r31) 73 - 78: 75 Load 77(g_tTex2di4a) - 79: 13 Load 15(g_sSamp) - 82: 81 SampledImage 78 79 - 83: 6(float) CompositeExtract 67 0 - 84: 6(float) CompositeExtract 83 0 - 85: 6(float) ImageSampleDrefExplicitLod 82 83 84 Lod ConstOffset 26 71 - Store 74(r33) 85 - 90: 87 Load 89(g_tTex2du4a) - 91: 13 Load 15(g_sSamp) - 94: 93 SampledImage 90 91 - 95: 6(float) CompositeExtract 67 0 - 96: 6(float) CompositeExtract 95 0 - 97: 6(float) ImageSampleDrefExplicitLod 94 95 96 Lod ConstOffset 26 71 - Store 86(r35) 97 - 106: 105(ptr) AccessChain 101(psout) 102 - Store 106 104 - 108: 7(ptr) AccessChain 101(psout) 107 - Store 108 103 - 111: 105(ptr) AccessChain 101(psout) 102 - 112: 98(fvec4) Load 111 - Store 110(Color) 112 - 115: 7(ptr) AccessChain 101(psout) 107 - 116: 6(float) Load 115 - Store 114(Depth) 116 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 32: 6(float) CompositeExtract 28 2 + 33: 6(float) ImageSampleDrefExplicitLod 19 28 32 Lod ConstOffset 29 31 + Store 8(r11) 33 + 38: 35 Load 37(g_tTex1di4a) + 39: 13 Load 15(g_sSamp) + 42: 41 SampledImage 38 39 + 43: 6(float) CompositeExtract 23 0 + 44: 6(float) CompositeExtract 23 1 + 45: 25(fvec3) CompositeConstruct 43 44 24 + 46: 6(float) CompositeExtract 45 2 + 47: 6(float) ImageSampleDrefExplicitLod 42 45 46 Lod ConstOffset 29 31 + Store 34(r13) 47 + 53: 50 Load 52(g_tTex1du4a) + 54: 13 Load 15(g_sSamp) + 57: 56 SampledImage 53 54 + 58: 6(float) CompositeExtract 23 0 + 59: 6(float) CompositeExtract 23 1 + 60: 25(fvec3) CompositeConstruct 58 59 24 + 61: 6(float) CompositeExtract 60 2 + 62: 6(float) ImageSampleDrefExplicitLod 57 60 61 Lod ConstOffset 29 31 + Store 48(r15) 62 + 67: 64 Load 66(g_tTex2df4a) + 68: 13 Load 15(g_sSamp) + 71: 70 SampledImage 67 68 + 75: 6(float) CompositeExtract 73 0 + 76: 6(float) CompositeExtract 73 1 + 77: 6(float) CompositeExtract 73 2 + 78: 74(fvec4) CompositeConstruct 75 76 77 24 + 82: 6(float) CompositeExtract 78 3 + 83: 6(float) ImageSampleDrefExplicitLod 71 78 82 Lod ConstOffset 29 81 + Store 63(r31) 83 + 88: 85 Load 87(g_tTex2di4a) + 89: 13 Load 15(g_sSamp) + 92: 91 SampledImage 88 89 + 93: 6(float) CompositeExtract 73 0 + 94: 6(float) CompositeExtract 73 1 + 95: 6(float) CompositeExtract 73 2 + 96: 74(fvec4) CompositeConstruct 93 94 95 24 + 97: 6(float) CompositeExtract 96 3 + 98: 6(float) ImageSampleDrefExplicitLod 92 96 97 Lod ConstOffset 29 81 + Store 84(r33) 98 + 103: 100 Load 102(g_tTex2du4a) + 104: 13 Load 15(g_sSamp) + 107: 106 SampledImage 103 104 + 108: 6(float) CompositeExtract 73 0 + 109: 6(float) CompositeExtract 73 1 + 110: 6(float) CompositeExtract 73 2 + 111: 74(fvec4) CompositeConstruct 108 109 110 24 + 112: 6(float) CompositeExtract 111 3 + 113: 6(float) ImageSampleDrefExplicitLod 107 111 112 Lod ConstOffset 29 81 + Store 99(r35) 113 + 121: 120(ptr) AccessChain 116(psout) 117 + Store 121 119 + 123: 7(ptr) AccessChain 116(psout) 122 + Store 123 118 + 126: 120(ptr) AccessChain 116(psout) 117 + 127: 74(fvec4) Load 126 + Store 125(Color) 127 + 130: 7(ptr) AccessChain 116(psout) 122 + 131: 6(float) Load 130 + Store 129(Depth) 131 Return FunctionEnd diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index b4c417d9..e6bf43d9 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1496,6 +1496,10 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType constructCoord->getSequence().push_back(arg1); constructCoord->setLoc(loc); + // The input vector should never be less than 2, since there's always a bias. + // The max is for safety, and should be a no-op. + constructCoord->setType(TType(arg1->getBasicType(), EvqTemporary, std::max(arg1->getVectorSize() - 1, 0))); + TIntermAggregate* tex = new TIntermAggregate(EOpTexture); tex->getSequence().push_back(arg0); // sampler tex->getSequence().push_back(constructCoord); // coordinate @@ -1725,6 +1729,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (coordDimWithCmpVal != 5) // cube array shadow is special. coordWithCmp->getSequence().push_back(argCmpVal); coordWithCmp->setLoc(loc); + coordWithCmp->setType(TType(argCoord->getBasicType(), EvqTemporary, std::min(coordDimWithCmpVal, 4))); TOperator textureOp = (op == EOpMethodSampleCmpLevelZero ? EOpTextureLod : EOpTexture); if (argOffset != nullptr) From 8e1e717cae690e789c975b914a33f346e97799d3 Mon Sep 17 00:00:00 2001 From: Johannes van Waveren Date: Fri, 21 Oct 2016 17:21:12 +0900 Subject: [PATCH 076/130] fixed MSVC 2015 compile warnings --- SPIRV/GlslangToSpv.h | 4 ++++ glslang/Include/Common.h | 4 ++++ glslang/Include/intermediate.h | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h index 97b280ca..428cfb6a 100644 --- a/SPIRV/GlslangToSpv.h +++ b/SPIRV/GlslangToSpv.h @@ -32,6 +32,10 @@ //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. +#if _MSC_VER >= 1900 + #pragma warning(disable : 4464) // relative include path contains '..' +#endif + #include "../glslang/Include/intermediate.h" #include diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index efb78d44..368d8746 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -81,6 +81,10 @@ inline long long int atoll (const char* str) #pragma warning(disable : 4201) // nameless union #endif +#if _MSC_VER >= 1900 + #pragma warning(disable : 4464) // relative include path contains '..' +#endif + #include #include #include diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index d9982a3a..06869e59 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -46,6 +46,11 @@ #ifndef __INTERMEDIATE_H #define __INTERMEDIATE_H +#if _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" From d1300753f723925bdf2706ad038c067fd88ec728 Mon Sep 17 00:00:00 2001 From: Johannes van Waveren Date: Fri, 21 Oct 2016 17:30:50 +0900 Subject: [PATCH 077/130] update --- glslang/Include/Common.h | 4 ---- glslang/Include/intermediate.h | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index 6a695d09..e082356c 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -85,10 +85,6 @@ inline long long int atoll (const char* str) #pragma warning(disable : 4201) // nameless union #endif -#if _MSC_VER >= 1900 - #pragma warning(disable : 4464) // relative include path contains '..' -#endif - #include #include #include diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 397a8326..db61b750 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -47,8 +47,8 @@ #define __INTERMEDIATE_H #if _MSC_VER >= 1900 - #pragma warning( disable : 4464 ) // relative include path contains '..' - #pragma warning( disable : 5026 ) // 'glslang::TIntermUnary': move constructor was implicitly defined as deleted + #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" From c8e60e28b7e50326b9675b83214206d27674c2aa Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 20 Oct 2016 16:12:36 -0600 Subject: [PATCH 078/130] WIP: apply unused variable I happened upon numArgs while hunting for unused variables. I suspect the intent was to apply it as shown in this patch. However, I am not a compiler dude. Someone more appropriate should grok this change. --- 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 71ee4f38..965cb07c 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1216,7 +1216,7 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction function.getType().getQualifier().precision; } else if (TIntermAggregate* agg = node.getAsAggregate()) { TIntermSequence& sequence = agg->getSequence(); - int numArgs = (int)sequence.size(); + unsigned int numArgs = (unsigned int)sequence.size(); switch (agg->getOp()) { case EOpBitfieldExtract: numArgs = 1; @@ -1233,7 +1233,7 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction break; } // find the maximum precision from the arguments and parameters - for (unsigned int arg = 0; arg < sequence.size(); ++arg) { + for (unsigned int arg = 0; arg < numArgs; ++arg) { operationPrecision = std::max(operationPrecision, sequence[arg]->getAsTyped()->getQualifier().precision); operationPrecision = std::max(operationPrecision, function[arg].type->getQualifier().precision); } From 4e3dd2087c4b2c4b6aae9205d5cc8655bddf95d9 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 20 Oct 2016 23:56:45 -0600 Subject: [PATCH 079/130] WIP: avoid strtok --- StandAlone/ResourceLimits.cpp | 220 ++++++++++++++++++---------------- 1 file changed, 115 insertions(+), 105 deletions(-) diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index 8a5e6f37..10ede096 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include "ResourceLimits.h" @@ -240,208 +241,217 @@ std::string GetDefaultTBuiltInResourceString() void DecodeResourceLimits(TBuiltInResource* resources, char* config) { - const char* delims = " \t\n\r"; -#pragma warning(suppress: 4996) - const char* token = strtok(config, delims); - while (token) { -#pragma warning(suppress: 4996) - const char* valueStr = strtok(0, delims); - if (valueStr == 0 || ! (valueStr[0] == '-' || (valueStr[0] >= '0' && valueStr[0] <= '9'))) { - printf("Error: '%s' bad .conf file. Each name must be followed by one number.\n", valueStr ? valueStr : ""); + static const char* delims = " \t\n\r"; + + size_t pos = 0; + std::string configStr(config); + + while ((pos = configStr.find_first_not_of(delims, pos)) != std::string::npos) { + const size_t token_s = pos; + const size_t token_e = configStr.find_first_of(delims, token_s); + const size_t value_s = configStr.find_first_not_of(delims, token_e); + const size_t value_e = configStr.find_first_of(delims, value_s); + pos = value_e; + + // Faster to use compare(), but prefering readability. + const std::string tokenStr = configStr.substr(token_s, token_e-token_s); + const std::string valueStr = configStr.substr(value_s, value_e-value_s); + + if (value_s == std::string::npos || ! (valueStr[0] == '-' || isdigit(valueStr[0]))) { + printf("Error: '%s' bad .conf file. Each name must be followed by one number.\n", + valueStr.c_str()); return; } - int value = atoi(valueStr); - if (strcmp(token, "MaxLights") == 0) + const int value = std::stoi(valueStr); + + if (tokenStr == "MaxLights") resources->maxLights = value; - else if (strcmp(token, "MaxClipPlanes") == 0) + else if (tokenStr == "MaxClipPlanes") resources->maxClipPlanes = value; - else if (strcmp(token, "MaxTextureUnits") == 0) + else if (tokenStr == "MaxTextureUnits") resources->maxTextureUnits = value; - else if (strcmp(token, "MaxTextureCoords") == 0) + else if (tokenStr == "MaxTextureCoords") resources->maxTextureCoords = value; - else if (strcmp(token, "MaxVertexAttribs") == 0) + else if (tokenStr == "MaxVertexAttribs") resources->maxVertexAttribs = value; - else if (strcmp(token, "MaxVertexUniformComponents") == 0) + else if (tokenStr == "MaxVertexUniformComponents") resources->maxVertexUniformComponents = value; - else if (strcmp(token, "MaxVaryingFloats") == 0) + else if (tokenStr == "MaxVaryingFloats") resources->maxVaryingFloats = value; - else if (strcmp(token, "MaxVertexTextureImageUnits") == 0) + else if (tokenStr == "MaxVertexTextureImageUnits") resources->maxVertexTextureImageUnits = value; - else if (strcmp(token, "MaxCombinedTextureImageUnits") == 0) + else if (tokenStr == "MaxCombinedTextureImageUnits") resources->maxCombinedTextureImageUnits = value; - else if (strcmp(token, "MaxTextureImageUnits") == 0) + else if (tokenStr == "MaxTextureImageUnits") resources->maxTextureImageUnits = value; - else if (strcmp(token, "MaxFragmentUniformComponents") == 0) + else if (tokenStr == "MaxFragmentUniformComponents") resources->maxFragmentUniformComponents = value; - else if (strcmp(token, "MaxDrawBuffers") == 0) + else if (tokenStr == "MaxDrawBuffers") resources->maxDrawBuffers = value; - else if (strcmp(token, "MaxVertexUniformVectors") == 0) + else if (tokenStr == "MaxVertexUniformVectors") resources->maxVertexUniformVectors = value; - else if (strcmp(token, "MaxVaryingVectors") == 0) + else if (tokenStr == "MaxVaryingVectors") resources->maxVaryingVectors = value; - else if (strcmp(token, "MaxFragmentUniformVectors") == 0) + else if (tokenStr == "MaxFragmentUniformVectors") resources->maxFragmentUniformVectors = value; - else if (strcmp(token, "MaxVertexOutputVectors") == 0) + else if (tokenStr == "MaxVertexOutputVectors") resources->maxVertexOutputVectors = value; - else if (strcmp(token, "MaxFragmentInputVectors") == 0) + else if (tokenStr == "MaxFragmentInputVectors") resources->maxFragmentInputVectors = value; - else if (strcmp(token, "MinProgramTexelOffset") == 0) + else if (tokenStr == "MinProgramTexelOffset") resources->minProgramTexelOffset = value; - else if (strcmp(token, "MaxProgramTexelOffset") == 0) + else if (tokenStr == "MaxProgramTexelOffset") resources->maxProgramTexelOffset = value; - else if (strcmp(token, "MaxClipDistances") == 0) + else if (tokenStr == "MaxClipDistances") resources->maxClipDistances = value; - else if (strcmp(token, "MaxComputeWorkGroupCountX") == 0) + else if (tokenStr == "MaxComputeWorkGroupCountX") resources->maxComputeWorkGroupCountX = value; - else if (strcmp(token, "MaxComputeWorkGroupCountY") == 0) + else if (tokenStr == "MaxComputeWorkGroupCountY") resources->maxComputeWorkGroupCountY = value; - else if (strcmp(token, "MaxComputeWorkGroupCountZ") == 0) + else if (tokenStr == "MaxComputeWorkGroupCountZ") resources->maxComputeWorkGroupCountZ = value; - else if (strcmp(token, "MaxComputeWorkGroupSizeX") == 0) + else if (tokenStr == "MaxComputeWorkGroupSizeX") resources->maxComputeWorkGroupSizeX = value; - else if (strcmp(token, "MaxComputeWorkGroupSizeY") == 0) + else if (tokenStr == "MaxComputeWorkGroupSizeY") resources->maxComputeWorkGroupSizeY = value; - else if (strcmp(token, "MaxComputeWorkGroupSizeZ") == 0) + else if (tokenStr == "MaxComputeWorkGroupSizeZ") resources->maxComputeWorkGroupSizeZ = value; - else if (strcmp(token, "MaxComputeUniformComponents") == 0) + else if (tokenStr == "MaxComputeUniformComponents") resources->maxComputeUniformComponents = value; - else if (strcmp(token, "MaxComputeTextureImageUnits") == 0) + else if (tokenStr == "MaxComputeTextureImageUnits") resources->maxComputeTextureImageUnits = value; - else if (strcmp(token, "MaxComputeImageUniforms") == 0) + else if (tokenStr == "MaxComputeImageUniforms") resources->maxComputeImageUniforms = value; - else if (strcmp(token, "MaxComputeAtomicCounters") == 0) + else if (tokenStr == "MaxComputeAtomicCounters") resources->maxComputeAtomicCounters = value; - else if (strcmp(token, "MaxComputeAtomicCounterBuffers") == 0) + else if (tokenStr == "MaxComputeAtomicCounterBuffers") resources->maxComputeAtomicCounterBuffers = value; - else if (strcmp(token, "MaxVaryingComponents") == 0) + else if (tokenStr == "MaxVaryingComponents") resources->maxVaryingComponents = value; - else if (strcmp(token, "MaxVertexOutputComponents") == 0) + else if (tokenStr == "MaxVertexOutputComponents") resources->maxVertexOutputComponents = value; - else if (strcmp(token, "MaxGeometryInputComponents") == 0) + else if (tokenStr == "MaxGeometryInputComponents") resources->maxGeometryInputComponents = value; - else if (strcmp(token, "MaxGeometryOutputComponents") == 0) + else if (tokenStr == "MaxGeometryOutputComponents") resources->maxGeometryOutputComponents = value; - else if (strcmp(token, "MaxFragmentInputComponents") == 0) + else if (tokenStr == "MaxFragmentInputComponents") resources->maxFragmentInputComponents = value; - else if (strcmp(token, "MaxImageUnits") == 0) + else if (tokenStr == "MaxImageUnits") resources->maxImageUnits = value; - else if (strcmp(token, "MaxCombinedImageUnitsAndFragmentOutputs") == 0) + else if (tokenStr == "MaxCombinedImageUnitsAndFragmentOutputs") resources->maxCombinedImageUnitsAndFragmentOutputs = value; - else if (strcmp(token, "MaxCombinedShaderOutputResources") == 0) + else if (tokenStr == "MaxCombinedShaderOutputResources") resources->maxCombinedShaderOutputResources = value; - else if (strcmp(token, "MaxImageSamples") == 0) + else if (tokenStr == "MaxImageSamples") resources->maxImageSamples = value; - else if (strcmp(token, "MaxVertexImageUniforms") == 0) + else if (tokenStr == "MaxVertexImageUniforms") resources->maxVertexImageUniforms = value; - else if (strcmp(token, "MaxTessControlImageUniforms") == 0) + else if (tokenStr == "MaxTessControlImageUniforms") resources->maxTessControlImageUniforms = value; - else if (strcmp(token, "MaxTessEvaluationImageUniforms") == 0) + else if (tokenStr == "MaxTessEvaluationImageUniforms") resources->maxTessEvaluationImageUniforms = value; - else if (strcmp(token, "MaxGeometryImageUniforms") == 0) + else if (tokenStr == "MaxGeometryImageUniforms") resources->maxGeometryImageUniforms = value; - else if (strcmp(token, "MaxFragmentImageUniforms") == 0) + else if (tokenStr == "MaxFragmentImageUniforms") resources->maxFragmentImageUniforms = value; - else if (strcmp(token, "MaxCombinedImageUniforms") == 0) + else if (tokenStr == "MaxCombinedImageUniforms") resources->maxCombinedImageUniforms = value; - else if (strcmp(token, "MaxGeometryTextureImageUnits") == 0) + else if (tokenStr == "MaxGeometryTextureImageUnits") resources->maxGeometryTextureImageUnits = value; - else if (strcmp(token, "MaxGeometryOutputVertices") == 0) + else if (tokenStr == "MaxGeometryOutputVertices") resources->maxGeometryOutputVertices = value; - else if (strcmp(token, "MaxGeometryTotalOutputComponents") == 0) + else if (tokenStr == "MaxGeometryTotalOutputComponents") resources->maxGeometryTotalOutputComponents = value; - else if (strcmp(token, "MaxGeometryUniformComponents") == 0) + else if (tokenStr == "MaxGeometryUniformComponents") resources->maxGeometryUniformComponents = value; - else if (strcmp(token, "MaxGeometryVaryingComponents") == 0) + else if (tokenStr == "MaxGeometryVaryingComponents") resources->maxGeometryVaryingComponents = value; - else if (strcmp(token, "MaxTessControlInputComponents") == 0) + else if (tokenStr == "MaxTessControlInputComponents") resources->maxTessControlInputComponents = value; - else if (strcmp(token, "MaxTessControlOutputComponents") == 0) + else if (tokenStr == "MaxTessControlOutputComponents") resources->maxTessControlOutputComponents = value; - else if (strcmp(token, "MaxTessControlTextureImageUnits") == 0) + else if (tokenStr == "MaxTessControlTextureImageUnits") resources->maxTessControlTextureImageUnits = value; - else if (strcmp(token, "MaxTessControlUniformComponents") == 0) + else if (tokenStr == "MaxTessControlUniformComponents") resources->maxTessControlUniformComponents = value; - else if (strcmp(token, "MaxTessControlTotalOutputComponents") == 0) + else if (tokenStr == "MaxTessControlTotalOutputComponents") resources->maxTessControlTotalOutputComponents = value; - else if (strcmp(token, "MaxTessEvaluationInputComponents") == 0) + else if (tokenStr == "MaxTessEvaluationInputComponents") resources->maxTessEvaluationInputComponents = value; - else if (strcmp(token, "MaxTessEvaluationOutputComponents") == 0) + else if (tokenStr == "MaxTessEvaluationOutputComponents") resources->maxTessEvaluationOutputComponents = value; - else if (strcmp(token, "MaxTessEvaluationTextureImageUnits") == 0) + else if (tokenStr == "MaxTessEvaluationTextureImageUnits") resources->maxTessEvaluationTextureImageUnits = value; - else if (strcmp(token, "MaxTessEvaluationUniformComponents") == 0) + else if (tokenStr == "MaxTessEvaluationUniformComponents") resources->maxTessEvaluationUniformComponents = value; - else if (strcmp(token, "MaxTessPatchComponents") == 0) + else if (tokenStr == "MaxTessPatchComponents") resources->maxTessPatchComponents = value; - else if (strcmp(token, "MaxPatchVertices") == 0) + else if (tokenStr == "MaxPatchVertices") resources->maxPatchVertices = value; - else if (strcmp(token, "MaxTessGenLevel") == 0) + else if (tokenStr == "MaxTessGenLevel") resources->maxTessGenLevel = value; - else if (strcmp(token, "MaxViewports") == 0) + else if (tokenStr == "MaxViewports") resources->maxViewports = value; - else if (strcmp(token, "MaxVertexAtomicCounters") == 0) + else if (tokenStr == "MaxVertexAtomicCounters") resources->maxVertexAtomicCounters = value; - else if (strcmp(token, "MaxTessControlAtomicCounters") == 0) + else if (tokenStr == "MaxTessControlAtomicCounters") resources->maxTessControlAtomicCounters = value; - else if (strcmp(token, "MaxTessEvaluationAtomicCounters") == 0) + else if (tokenStr == "MaxTessEvaluationAtomicCounters") resources->maxTessEvaluationAtomicCounters = value; - else if (strcmp(token, "MaxGeometryAtomicCounters") == 0) + else if (tokenStr == "MaxGeometryAtomicCounters") resources->maxGeometryAtomicCounters = value; - else if (strcmp(token, "MaxFragmentAtomicCounters") == 0) + else if (tokenStr == "MaxFragmentAtomicCounters") resources->maxFragmentAtomicCounters = value; - else if (strcmp(token, "MaxCombinedAtomicCounters") == 0) + else if (tokenStr == "MaxCombinedAtomicCounters") resources->maxCombinedAtomicCounters = value; - else if (strcmp(token, "MaxAtomicCounterBindings") == 0) + else if (tokenStr == "MaxAtomicCounterBindings") resources->maxAtomicCounterBindings = value; - else if (strcmp(token, "MaxVertexAtomicCounterBuffers") == 0) + else if (tokenStr == "MaxVertexAtomicCounterBuffers") resources->maxVertexAtomicCounterBuffers = value; - else if (strcmp(token, "MaxTessControlAtomicCounterBuffers") == 0) + else if (tokenStr == "MaxTessControlAtomicCounterBuffers") resources->maxTessControlAtomicCounterBuffers = value; - else if (strcmp(token, "MaxTessEvaluationAtomicCounterBuffers") == 0) + else if (tokenStr == "MaxTessEvaluationAtomicCounterBuffers") resources->maxTessEvaluationAtomicCounterBuffers = value; - else if (strcmp(token, "MaxGeometryAtomicCounterBuffers") == 0) + else if (tokenStr == "MaxGeometryAtomicCounterBuffers") resources->maxGeometryAtomicCounterBuffers = value; - else if (strcmp(token, "MaxFragmentAtomicCounterBuffers") == 0) + else if (tokenStr == "MaxFragmentAtomicCounterBuffers") resources->maxFragmentAtomicCounterBuffers = value; - else if (strcmp(token, "MaxCombinedAtomicCounterBuffers") == 0) + else if (tokenStr == "MaxCombinedAtomicCounterBuffers") resources->maxCombinedAtomicCounterBuffers = value; - else if (strcmp(token, "MaxAtomicCounterBufferSize") == 0) + else if (tokenStr == "MaxAtomicCounterBufferSize") resources->maxAtomicCounterBufferSize = value; - else if (strcmp(token, "MaxTransformFeedbackBuffers") == 0) + else if (tokenStr == "MaxTransformFeedbackBuffers") resources->maxTransformFeedbackBuffers = value; - else if (strcmp(token, "MaxTransformFeedbackInterleavedComponents") == 0) + else if (tokenStr == "MaxTransformFeedbackInterleavedComponents") resources->maxTransformFeedbackInterleavedComponents = value; - else if (strcmp(token, "MaxCullDistances") == 0) + else if (tokenStr == "MaxCullDistances") resources->maxCullDistances = value; - else if (strcmp(token, "MaxCombinedClipAndCullDistances") == 0) + else if (tokenStr == "MaxCombinedClipAndCullDistances") resources->maxCombinedClipAndCullDistances = value; - else if (strcmp(token, "MaxSamples") == 0) + else if (tokenStr == "MaxSamples") resources->maxSamples = value; - - else if (strcmp(token, "nonInductiveForLoops") == 0) + else if (tokenStr == "nonInductiveForLoops") resources->limits.nonInductiveForLoops = (value != 0); - else if (strcmp(token, "whileLoops") == 0) + else if (tokenStr == "whileLoops") resources->limits.whileLoops = (value != 0); - else if (strcmp(token, "doWhileLoops") == 0) + else if (tokenStr == "doWhileLoops") resources->limits.doWhileLoops = (value != 0); - else if (strcmp(token, "generalUniformIndexing") == 0) + else if (tokenStr == "generalUniformIndexing") resources->limits.generalUniformIndexing = (value != 0); - else if (strcmp(token, "generalAttributeMatrixVectorIndexing") == 0) + else if (tokenStr == "generalAttributeMatrixVectorIndexing") resources->limits.generalAttributeMatrixVectorIndexing = (value != 0); - else if (strcmp(token, "generalVaryingIndexing") == 0) + else if (tokenStr == "generalVaryingIndexing") resources->limits.generalVaryingIndexing = (value != 0); - else if (strcmp(token, "generalSamplerIndexing") == 0) + else if (tokenStr == "generalSamplerIndexing") resources->limits.generalSamplerIndexing = (value != 0); - else if (strcmp(token, "generalVariableIndexing") == 0) + else if (tokenStr == "generalVariableIndexing") resources->limits.generalVariableIndexing = (value != 0); - else if (strcmp(token, "generalConstantMatrixVectorIndexing") == 0) + else if (tokenStr == "generalConstantMatrixVectorIndexing") resources->limits.generalConstantMatrixVectorIndexing = (value != 0); else - printf("Warning: unrecognized limit (%s) in configuration file.\n", token); + printf("Warning: unrecognized limit (%s) in configuration file.\n", tokenStr.c_str()); -#pragma warning(suppress: 4996) - token = strtok(0, delims); } } From 85244d74860c9c9c381a951dd8c11572e5d804da Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 21 Oct 2016 16:43:38 -0600 Subject: [PATCH 080/130] HLSL: Enable component-wise vector comparisons from operators This PR only changes a few lines of code, but is subtle. In HLSL, comparison operators (<,>,<=,>=,==,!=) operate component-wise when given a vector operand. If a whole vector equality or inequality is desired, then all() or any() can be used on the resulting bool vector. This PR enables this change. Existing shape conversion is used when one of the two arguments is a vector and one is a scalar. Some existing HLSL tests had assumed == and != meant vector-wise instead of component-wise comparisons. These tests have been changed to add an explicit any() or all() to the test source. This verifably does not change the final SPIR-V binary relative to the old behavior for == and !=. The AST does change for the (now explicit, formerly implicit) any() and all(). Also, a few tests changes where they previously had the return type wrong, e.g, from a vec < vec comparison in hlsl.shapeConv.frag. Promotion of comparison opcodes to vector forms (EOpEqual->EOpVectorEqual) is handled in promoteBinary(), as is setting the proper vector type of the result. EOpVectorEqual and EOpVectorNotEqual are now accepted as either aggregate or binary nodes, similar to how the other operators are handled. Partial support already existed for this: it has been fleshed out in the printing functions in intermOut.cpp. There is an existing defect around shape conversion with 1-vectors, but that is orthogonal to this PR and not addressed by it. --- Test/baseResults/hlsl.comparison.vec.frag.out | 401 ++++++++++++++++++ Test/baseResults/hlsl.doLoop.frag.out | 14 +- Test/baseResults/hlsl.forLoop.frag.out | 42 +- Test/baseResults/hlsl.if.frag.out | 84 ++-- Test/baseResults/hlsl.shapeConv.frag.out | 151 +++---- Test/baseResults/hlsl.whileLoop.frag.out | 14 +- Test/hlsl.comparison.vec.frag | 34 ++ Test/hlsl.doLoop.frag | 2 +- Test/hlsl.forLoop.frag | 6 +- Test/hlsl.if.frag | 12 +- Test/hlsl.shapeConv.frag | 4 +- Test/hlsl.whileLoop.frag | 2 +- glslang/MachineIndependent/Intermediate.cpp | 21 +- glslang/MachineIndependent/intermOut.cpp | 2 + gtests/Hlsl.FromFile.cpp | 1 + 15 files changed, 635 insertions(+), 155 deletions(-) create mode 100644 Test/baseResults/hlsl.comparison.vec.frag.out create mode 100644 Test/hlsl.comparison.vec.frag diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out new file mode 100644 index 00000000..8a31f63f --- /dev/null +++ b/Test/baseResults/hlsl.comparison.vec.frag.out @@ -0,0 +1,401 @@ +hlsl.comparison.vec.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: Bug1(vf4; (temp void) +0:4 Function Parameters: +0:4 'a' (in 4-component vector of float) +0:? Sequence +0:5 Sequence +0:5 move second child to first child (temp 4-component vector of float) +0:5 'v04' (temp 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:6 Sequence +0:6 move second child to first child (temp float) +0:6 'v01' (temp float) +0:6 Constant: +0:6 0.000000 +0:8 Sequence +0:8 move second child to first child (temp 4-component vector of bool) +0:8 'r00' (temp 4-component vector of bool) +0:8 Equal (temp 4-component vector of bool) +0:8 'a' (in 4-component vector of float) +0:8 'v04' (temp 4-component vector of float) +0:9 Sequence +0:9 move second child to first child (temp 4-component vector of bool) +0:9 'r01' (temp 4-component vector of bool) +0:9 NotEqual (temp 4-component vector of bool) +0:9 'a' (in 4-component vector of float) +0:9 'v04' (temp 4-component vector of float) +0:10 Sequence +0:10 move second child to first child (temp 4-component vector of bool) +0:10 'r02' (temp 4-component vector of bool) +0:10 Compare Less Than (temp 4-component vector of bool) +0:10 'a' (in 4-component vector of float) +0:10 'v04' (temp 4-component vector of float) +0:11 Sequence +0:11 move second child to first child (temp 4-component vector of bool) +0:11 'r03' (temp 4-component vector of bool) +0:11 Compare Greater Than (temp 4-component vector of bool) +0:11 'a' (in 4-component vector of float) +0:11 'v04' (temp 4-component vector of float) +0:13 Sequence +0:13 move second child to first child (temp 4-component vector of bool) +0:13 'r10' (temp 4-component vector of bool) +0:13 Equal (temp 4-component vector of bool) +0:13 'a' (in 4-component vector of float) +0:13 Construct vec4 (in 4-component vector of float) +0:13 'v01' (temp float) +0:14 Sequence +0:14 move second child to first child (temp 4-component vector of bool) +0:14 'r11' (temp 4-component vector of bool) +0:14 NotEqual (temp 4-component vector of bool) +0:14 'a' (in 4-component vector of float) +0:14 Construct vec4 (in 4-component vector of float) +0:14 'v01' (temp float) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of bool) +0:15 'r12' (temp 4-component vector of bool) +0:15 Compare Less Than (temp 4-component vector of bool) +0:15 'a' (in 4-component vector of float) +0:15 Construct vec4 (in 4-component vector of float) +0:15 'v01' (temp float) +0:16 Sequence +0:16 move second child to first child (temp 4-component vector of bool) +0:16 'r13' (temp 4-component vector of bool) +0:16 Compare Greater Than (temp 4-component vector of bool) +0:16 'a' (in 4-component vector of float) +0:16 Construct vec4 (in 4-component vector of float) +0:16 'v01' (temp float) +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of bool) +0:18 'r20' (temp 4-component vector of bool) +0:18 Equal (temp 4-component vector of bool) +0:18 Construct vec4 (in 4-component vector of float) +0:18 'v01' (temp float) +0:18 'a' (in 4-component vector of float) +0:19 Sequence +0:19 move second child to first child (temp 4-component vector of bool) +0:19 'r21' (temp 4-component vector of bool) +0:19 NotEqual (temp 4-component vector of bool) +0:19 Construct vec4 (in 4-component vector of float) +0:19 'v01' (temp float) +0:19 'a' (in 4-component vector of float) +0:20 Sequence +0:20 move second child to first child (temp 4-component vector of bool) +0:20 'r22' (temp 4-component vector of bool) +0:20 Compare Less Than (temp 4-component vector of bool) +0:20 Construct vec4 (in 4-component vector of float) +0:20 'v01' (temp float) +0:20 'a' (in 4-component vector of float) +0:21 Sequence +0:21 move second child to first child (temp 4-component vector of bool) +0:21 'r23' (temp 4-component vector of bool) +0:21 Compare Greater Than (temp 4-component vector of bool) +0:21 Construct vec4 (in 4-component vector of float) +0:21 'v01' (temp float) +0:21 'a' (in 4-component vector of float) +0:30 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:30 Function Parameters: +0:? Sequence +0:32 move second child to first child (temp 4-component vector of float) +0:32 Color: direct index for structure (temp 4-component vector of float) +0:32 'psout' (temp structure{temp 4-component vector of float Color}) +0:32 Constant: +0:32 0 (const int) +0:32 Constant: +0:32 0.000000 +0:32 0.000000 +0:32 0.000000 +0:32 0.000000 +0:33 Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:33 Color: direct index for structure (temp 4-component vector of float) +0:33 'psout' (temp structure{temp 4-component vector of float Color}) +0:33 Constant: +0:33 0 (const int) +0:33 Branch: Return +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float uf4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: Bug1(vf4; (temp void) +0:4 Function Parameters: +0:4 'a' (in 4-component vector of float) +0:? Sequence +0:5 Sequence +0:5 move second child to first child (temp 4-component vector of float) +0:5 'v04' (temp 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:6 Sequence +0:6 move second child to first child (temp float) +0:6 'v01' (temp float) +0:6 Constant: +0:6 0.000000 +0:8 Sequence +0:8 move second child to first child (temp 4-component vector of bool) +0:8 'r00' (temp 4-component vector of bool) +0:8 Equal (temp 4-component vector of bool) +0:8 'a' (in 4-component vector of float) +0:8 'v04' (temp 4-component vector of float) +0:9 Sequence +0:9 move second child to first child (temp 4-component vector of bool) +0:9 'r01' (temp 4-component vector of bool) +0:9 NotEqual (temp 4-component vector of bool) +0:9 'a' (in 4-component vector of float) +0:9 'v04' (temp 4-component vector of float) +0:10 Sequence +0:10 move second child to first child (temp 4-component vector of bool) +0:10 'r02' (temp 4-component vector of bool) +0:10 Compare Less Than (temp 4-component vector of bool) +0:10 'a' (in 4-component vector of float) +0:10 'v04' (temp 4-component vector of float) +0:11 Sequence +0:11 move second child to first child (temp 4-component vector of bool) +0:11 'r03' (temp 4-component vector of bool) +0:11 Compare Greater Than (temp 4-component vector of bool) +0:11 'a' (in 4-component vector of float) +0:11 'v04' (temp 4-component vector of float) +0:13 Sequence +0:13 move second child to first child (temp 4-component vector of bool) +0:13 'r10' (temp 4-component vector of bool) +0:13 Equal (temp 4-component vector of bool) +0:13 'a' (in 4-component vector of float) +0:13 Construct vec4 (in 4-component vector of float) +0:13 'v01' (temp float) +0:14 Sequence +0:14 move second child to first child (temp 4-component vector of bool) +0:14 'r11' (temp 4-component vector of bool) +0:14 NotEqual (temp 4-component vector of bool) +0:14 'a' (in 4-component vector of float) +0:14 Construct vec4 (in 4-component vector of float) +0:14 'v01' (temp float) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of bool) +0:15 'r12' (temp 4-component vector of bool) +0:15 Compare Less Than (temp 4-component vector of bool) +0:15 'a' (in 4-component vector of float) +0:15 Construct vec4 (in 4-component vector of float) +0:15 'v01' (temp float) +0:16 Sequence +0:16 move second child to first child (temp 4-component vector of bool) +0:16 'r13' (temp 4-component vector of bool) +0:16 Compare Greater Than (temp 4-component vector of bool) +0:16 'a' (in 4-component vector of float) +0:16 Construct vec4 (in 4-component vector of float) +0:16 'v01' (temp float) +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of bool) +0:18 'r20' (temp 4-component vector of bool) +0:18 Equal (temp 4-component vector of bool) +0:18 Construct vec4 (in 4-component vector of float) +0:18 'v01' (temp float) +0:18 'a' (in 4-component vector of float) +0:19 Sequence +0:19 move second child to first child (temp 4-component vector of bool) +0:19 'r21' (temp 4-component vector of bool) +0:19 NotEqual (temp 4-component vector of bool) +0:19 Construct vec4 (in 4-component vector of float) +0:19 'v01' (temp float) +0:19 'a' (in 4-component vector of float) +0:20 Sequence +0:20 move second child to first child (temp 4-component vector of bool) +0:20 'r22' (temp 4-component vector of bool) +0:20 Compare Less Than (temp 4-component vector of bool) +0:20 Construct vec4 (in 4-component vector of float) +0:20 'v01' (temp float) +0:20 'a' (in 4-component vector of float) +0:21 Sequence +0:21 move second child to first child (temp 4-component vector of bool) +0:21 'r23' (temp 4-component vector of bool) +0:21 Compare Greater Than (temp 4-component vector of bool) +0:21 Construct vec4 (in 4-component vector of float) +0:21 'v01' (temp float) +0:21 'a' (in 4-component vector of float) +0:30 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:30 Function Parameters: +0:? Sequence +0:32 move second child to first child (temp 4-component vector of float) +0:32 Color: direct index for structure (temp 4-component vector of float) +0:32 'psout' (temp structure{temp 4-component vector of float Color}) +0:32 Constant: +0:32 0 (const int) +0:32 Constant: +0:32 0.000000 +0:32 0.000000 +0:32 0.000000 +0:32 0.000000 +0:33 Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:33 Color: direct index for structure (temp 4-component vector of float) +0:33 'psout' (temp structure{temp 4-component vector of float Color}) +0:33 Constant: +0:33 0 (const int) +0:33 Branch: Return +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float uf4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 91 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 84 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "Bug1(vf4;" + Name 10 "a" + Name 13 "v04" + Name 17 "v01" + Name 21 "r00" + Name 25 "r01" + Name 29 "r02" + Name 33 "r03" + Name 37 "r10" + Name 42 "r11" + Name 47 "r12" + Name 52 "r13" + Name 57 "r20" + Name 62 "r21" + Name 67 "r22" + Name 72 "r23" + Name 77 "PS_OUTPUT" + MemberName 77(PS_OUTPUT) 0 "Color" + Name 79 "psout" + Name 84 "Color" + Name 88 "$Global" + MemberName 88($Global) 0 "uf4" + Name 90 "" + Decorate 84(Color) Location 0 + Decorate 88($Global) Block + Decorate 90 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeFunction 2 8(ptr) + 14: 6(float) Constant 0 + 15: 7(fvec4) ConstantComposite 14 14 14 14 + 16: TypePointer Function 6(float) + 18: TypeBool + 19: TypeVector 18(bool) 4 + 20: TypePointer Function 19(bvec4) + 77(PS_OUTPUT): TypeStruct 7(fvec4) + 78: TypePointer Function 77(PS_OUTPUT) + 80: TypeInt 32 1 + 81: 80(int) Constant 0 + 83: TypePointer Output 7(fvec4) + 84(Color): 83(ptr) Variable Output + 88($Global): TypeStruct 7(fvec4) + 89: TypePointer Uniform 88($Global) + 90: 89(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 79(psout): 78(ptr) Variable Function + 82: 8(ptr) AccessChain 79(psout) 81 + Store 82 15 + 85: 8(ptr) AccessChain 79(psout) 81 + 86: 7(fvec4) Load 85 + Store 84(Color) 86 + Return + FunctionEnd + 11(Bug1(vf4;): 2 Function None 9 + 10(a): 8(ptr) FunctionParameter + 12: Label + 13(v04): 8(ptr) Variable Function + 17(v01): 16(ptr) Variable Function + 21(r00): 20(ptr) Variable Function + 25(r01): 20(ptr) Variable Function + 29(r02): 20(ptr) Variable Function + 33(r03): 20(ptr) Variable Function + 37(r10): 20(ptr) Variable Function + 42(r11): 20(ptr) Variable Function + 47(r12): 20(ptr) Variable Function + 52(r13): 20(ptr) Variable Function + 57(r20): 20(ptr) Variable Function + 62(r21): 20(ptr) Variable Function + 67(r22): 20(ptr) Variable Function + 72(r23): 20(ptr) Variable Function + Store 13(v04) 15 + Store 17(v01) 14 + 22: 7(fvec4) Load 10(a) + 23: 7(fvec4) Load 13(v04) + 24: 19(bvec4) FOrdEqual 22 23 + Store 21(r00) 24 + 26: 7(fvec4) Load 10(a) + 27: 7(fvec4) Load 13(v04) + 28: 19(bvec4) FOrdNotEqual 26 27 + Store 25(r01) 28 + 30: 7(fvec4) Load 10(a) + 31: 7(fvec4) Load 13(v04) + 32: 19(bvec4) FOrdLessThan 30 31 + Store 29(r02) 32 + 34: 7(fvec4) Load 10(a) + 35: 7(fvec4) Load 13(v04) + 36: 19(bvec4) FOrdGreaterThan 34 35 + Store 33(r03) 36 + 38: 7(fvec4) Load 10(a) + 39: 6(float) Load 17(v01) + 40: 7(fvec4) CompositeConstruct 39 39 39 39 + 41: 19(bvec4) FOrdEqual 38 40 + Store 37(r10) 41 + 43: 7(fvec4) Load 10(a) + 44: 6(float) Load 17(v01) + 45: 7(fvec4) CompositeConstruct 44 44 44 44 + 46: 19(bvec4) FOrdNotEqual 43 45 + Store 42(r11) 46 + 48: 7(fvec4) Load 10(a) + 49: 6(float) Load 17(v01) + 50: 7(fvec4) CompositeConstruct 49 49 49 49 + 51: 19(bvec4) FOrdLessThan 48 50 + Store 47(r12) 51 + 53: 7(fvec4) Load 10(a) + 54: 6(float) Load 17(v01) + 55: 7(fvec4) CompositeConstruct 54 54 54 54 + 56: 19(bvec4) FOrdGreaterThan 53 55 + Store 52(r13) 56 + 58: 6(float) Load 17(v01) + 59: 7(fvec4) CompositeConstruct 58 58 58 58 + 60: 7(fvec4) Load 10(a) + 61: 19(bvec4) FOrdEqual 59 60 + Store 57(r20) 61 + 63: 6(float) Load 17(v01) + 64: 7(fvec4) CompositeConstruct 63 63 63 63 + 65: 7(fvec4) Load 10(a) + 66: 19(bvec4) FOrdNotEqual 64 65 + Store 62(r21) 66 + 68: 6(float) Load 17(v01) + 69: 7(fvec4) CompositeConstruct 68 68 68 68 + 70: 7(fvec4) Load 10(a) + 71: 19(bvec4) FOrdLessThan 69 70 + Store 67(r22) 71 + 73: 6(float) Load 17(v01) + 74: 7(fvec4) CompositeConstruct 73 73 73 73 + 75: 7(fvec4) Load 10(a) + 76: 19(bvec4) FOrdGreaterThan 74 75 + Store 72(r23) 76 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out index 2d5a8fbf..0e49caf1 100755 --- a/Test/baseResults/hlsl.doLoop.frag.out +++ b/Test/baseResults/hlsl.doLoop.frag.out @@ -18,9 +18,10 @@ gl_FragCoord origin is upper left 0:4 No loop body 0:5 Loop with condition not tested first 0:5 Loop Condition -0:5 Compare Equal (temp bool) -0:5 'input' (layout(location=0 ) in 4-component vector of float) -0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 all (global bool) +0:5 Equal (temp 4-component vector of bool) +0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 Loop Body 0:5 Sequence 0:5 move second child to first child (temp 4-component vector of float) @@ -54,9 +55,10 @@ gl_FragCoord origin is upper left 0:4 No loop body 0:5 Loop with condition not tested first 0:5 Loop Condition -0:5 Compare Equal (temp bool) -0:5 'input' (layout(location=0 ) in 4-component vector of float) -0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 all (global bool) +0:5 Equal (temp 4-component vector of bool) +0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 Loop Body 0:5 Sequence 0:5 move second child to first child (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out index cc475784..26697725 100755 --- a/Test/baseResults/hlsl.forLoop.frag.out +++ b/Test/baseResults/hlsl.forLoop.frag.out @@ -19,16 +19,18 @@ gl_FragCoord origin is upper left 0:? Sequence 0:5 Loop with condition tested first 0:5 Loop Condition -0:5 Compare Not Equal (temp bool) -0:5 'input' (layout(location=0 ) in 4-component vector of float) -0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 any (global bool) +0:5 NotEqual (temp 4-component vector of bool) +0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 No loop body 0:? Sequence 0:6 Loop with condition tested first 0:6 Loop Condition -0:6 Compare Not Equal (temp bool) -0:6 'input' (layout(location=0 ) in 4-component vector of float) -0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 any (global bool) +0:6 NotEqual (temp 4-component vector of bool) +0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 Loop Body 0:? Sequence 0:6 Sequence @@ -42,9 +44,10 @@ gl_FragCoord origin is upper left 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 Loop with condition tested first 0:7 Loop Condition -0:7 Compare Not Equal (temp bool) -0:7 'input' (layout(location=0 ) in 4-component vector of float) -0:7 'input' (layout(location=0 ) in 4-component vector of float) +0:7 any (global bool) +0:7 NotEqual (temp 4-component vector of bool) +0:7 'input' (layout(location=0 ) in 4-component vector of float) +0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 Loop Body 0:? Sequence 0:7 Sequence @@ -141,16 +144,18 @@ gl_FragCoord origin is upper left 0:? Sequence 0:5 Loop with condition tested first 0:5 Loop Condition -0:5 Compare Not Equal (temp bool) -0:5 'input' (layout(location=0 ) in 4-component vector of float) -0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 any (global bool) +0:5 NotEqual (temp 4-component vector of bool) +0:5 'input' (layout(location=0 ) in 4-component vector of float) +0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 No loop body 0:? Sequence 0:6 Loop with condition tested first 0:6 Loop Condition -0:6 Compare Not Equal (temp bool) -0:6 'input' (layout(location=0 ) in 4-component vector of float) -0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 any (global bool) +0:6 NotEqual (temp 4-component vector of bool) +0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 Loop Body 0:? Sequence 0:6 Sequence @@ -164,9 +169,10 @@ gl_FragCoord origin is upper left 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 Loop with condition tested first 0:7 Loop Condition -0:7 Compare Not Equal (temp bool) -0:7 'input' (layout(location=0 ) in 4-component vector of float) -0:7 'input' (layout(location=0 ) in 4-component vector of float) +0:7 any (global bool) +0:7 NotEqual (temp 4-component vector of bool) +0:7 'input' (layout(location=0 ) in 4-component vector of float) +0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 Loop Body 0:? Sequence 0:7 Sequence diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out index 3b329ae1..ce9b5619 100755 --- a/Test/baseResults/hlsl.if.frag.out +++ b/Test/baseResults/hlsl.if.frag.out @@ -8,9 +8,10 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Test condition and select (temp void) 0:3 Condition -0:3 Compare Equal (temp bool) -0:3 'input' (layout(location=0 ) in 4-component vector of float) -0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 all (global bool) +0:3 Equal (temp 4-component vector of bool) +0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 true case 0:4 Sequence 0:4 move second child to first child (temp 4-component vector of float) @@ -19,9 +20,10 @@ gl_FragCoord origin is upper left 0:4 Branch: Return 0:6 Test condition and select (temp void) 0:6 Condition -0:6 Compare Equal (temp bool) -0:6 'input' (layout(location=0 ) in 4-component vector of float) -0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 all (global bool) +0:6 Equal (temp 4-component vector of bool) +0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 true case 0:7 Sequence 0:7 move second child to first child (temp 4-component vector of float) @@ -37,21 +39,24 @@ gl_FragCoord origin is upper left 0:9 Branch: Return 0:11 Test condition and select (temp void) 0:11 Condition -0:11 Compare Equal (temp bool) -0:11 'input' (layout(location=0 ) in 4-component vector of float) -0:11 'input' (layout(location=0 ) in 4-component vector of float) +0:11 all (global bool) +0:11 Equal (temp 4-component vector of bool) +0:11 'input' (layout(location=0 ) in 4-component vector of float) +0:11 'input' (layout(location=0 ) in 4-component vector of float) 0:11 true case is null 0:14 Test condition and select (temp void) 0:14 Condition -0:14 Compare Equal (temp bool) -0:14 'input' (layout(location=0 ) in 4-component vector of float) -0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:14 all (global bool) +0:14 Equal (temp 4-component vector of bool) +0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:14 'input' (layout(location=0 ) in 4-component vector of float) 0:14 true case is null 0:19 Test condition and select (temp void) 0:19 Condition -0:19 Compare Equal (temp bool) -0:19 'input' (layout(location=0 ) in 4-component vector of float) -0:19 'input' (layout(location=0 ) in 4-component vector of float) +0:19 all (global bool) +0:19 Equal (temp 4-component vector of bool) +0:19 'input' (layout(location=0 ) in 4-component vector of float) +0:19 'input' (layout(location=0 ) in 4-component vector of float) 0:19 true case 0:? Sequence 0:20 Sequence @@ -61,9 +66,10 @@ gl_FragCoord origin is upper left 0:20 Branch: Return 0:23 Test condition and select (temp void) 0:23 Condition -0:23 Compare Equal (temp bool) -0:23 'input' (layout(location=0 ) in 4-component vector of float) -0:23 'input' (layout(location=0 ) in 4-component vector of float) +0:23 all (global bool) +0:23 Equal (temp 4-component vector of bool) +0:23 'input' (layout(location=0 ) in 4-component vector of float) +0:23 'input' (layout(location=0 ) in 4-component vector of float) 0:23 true case 0:? Sequence 0:24 Sequence @@ -109,9 +115,10 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Test condition and select (temp void) 0:3 Condition -0:3 Compare Equal (temp bool) -0:3 'input' (layout(location=0 ) in 4-component vector of float) -0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 all (global bool) +0:3 Equal (temp 4-component vector of bool) +0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 true case 0:4 Sequence 0:4 move second child to first child (temp 4-component vector of float) @@ -120,9 +127,10 @@ gl_FragCoord origin is upper left 0:4 Branch: Return 0:6 Test condition and select (temp void) 0:6 Condition -0:6 Compare Equal (temp bool) -0:6 'input' (layout(location=0 ) in 4-component vector of float) -0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 all (global bool) +0:6 Equal (temp 4-component vector of bool) +0:6 'input' (layout(location=0 ) in 4-component vector of float) +0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 true case 0:7 Sequence 0:7 move second child to first child (temp 4-component vector of float) @@ -138,21 +146,24 @@ gl_FragCoord origin is upper left 0:9 Branch: Return 0:11 Test condition and select (temp void) 0:11 Condition -0:11 Compare Equal (temp bool) -0:11 'input' (layout(location=0 ) in 4-component vector of float) -0:11 'input' (layout(location=0 ) in 4-component vector of float) +0:11 all (global bool) +0:11 Equal (temp 4-component vector of bool) +0:11 'input' (layout(location=0 ) in 4-component vector of float) +0:11 'input' (layout(location=0 ) in 4-component vector of float) 0:11 true case is null 0:14 Test condition and select (temp void) 0:14 Condition -0:14 Compare Equal (temp bool) -0:14 'input' (layout(location=0 ) in 4-component vector of float) -0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:14 all (global bool) +0:14 Equal (temp 4-component vector of bool) +0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:14 'input' (layout(location=0 ) in 4-component vector of float) 0:14 true case is null 0:19 Test condition and select (temp void) 0:19 Condition -0:19 Compare Equal (temp bool) -0:19 'input' (layout(location=0 ) in 4-component vector of float) -0:19 'input' (layout(location=0 ) in 4-component vector of float) +0:19 all (global bool) +0:19 Equal (temp 4-component vector of bool) +0:19 'input' (layout(location=0 ) in 4-component vector of float) +0:19 'input' (layout(location=0 ) in 4-component vector of float) 0:19 true case 0:? Sequence 0:20 Sequence @@ -162,9 +173,10 @@ gl_FragCoord origin is upper left 0:20 Branch: Return 0:23 Test condition and select (temp void) 0:23 Condition -0:23 Compare Equal (temp bool) -0:23 'input' (layout(location=0 ) in 4-component vector of float) -0:23 'input' (layout(location=0 ) in 4-component vector of float) +0:23 all (global bool) +0:23 Equal (temp 4-component vector of bool) +0:23 'input' (layout(location=0 ) in 4-component vector of float) +0:23 'input' (layout(location=0 ) in 4-component vector of float) 0:23 true case 0:? Sequence 0:24 Sequence diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index 9ea4f839..0f2f9448 100755 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -58,41 +58,43 @@ gl_FragCoord origin is upper left 0:13 'MyVal' (temp 3-component vector of float) 0:13 Construct vec3 (temp 3-component vector of float) 0:13 'V' (temp float) -0:16 Compare Greater Than (temp bool) +0:16 Compare Greater Than (temp 3-component vector of bool) 0:16 'foo' (temp 3-component vector of float) 0:16 Constant: 0:16 4.000000 0:16 4.000000 0:16 4.000000 -0:17 Compare Greater Than or Equal (temp bool) +0:17 Compare Greater Than or Equal (temp 3-component vector of bool) 0:17 'foo' (temp 3-component vector of float) 0:17 Constant: 0:17 5.000000 0:17 5.000000 0:17 5.000000 -0:18 Compare Less Than (temp bool) +0:18 Compare Less Than (temp 3-component vector of bool) 0:18 Constant: 0:18 6.000000 0:18 6.000000 0:18 6.000000 0:18 'foo' (temp 3-component vector of float) -0:19 Compare Less Than or Equal (temp bool) +0:19 Compare Less Than or Equal (temp 3-component vector of bool) 0:19 Constant: 0:19 7.000000 0:19 7.000000 0:19 7.000000 0:19 'foo' (temp 3-component vector of float) -0:21 Compare Equal (temp bool) -0:21 Construct vec4 (temp 4-component vector of float) -0:21 direct index (temp float) -0:21 'v' (temp 4-component vector of float) -0:21 Constant: -0:21 0 (const int) -0:21 'v' (temp 4-component vector of float) -0:22 Compare Not Equal (temp bool) -0:22 Construct vec4 (temp 4-component vector of float) -0:22 'f' (in float) -0:22 'v' (temp 4-component vector of float) +0:21 all (global bool) +0:21 Equal (temp 4-component vector of bool) +0:21 Construct vec4 (temp 4-component vector of float) +0:21 direct index (temp float) +0:21 'v' (temp 4-component vector of float) +0:21 Constant: +0:21 0 (const int) +0:21 'v' (temp 4-component vector of float) +0:22 any (global bool) +0:22 NotEqual (temp 4-component vector of bool) +0:22 Construct vec4 (temp 4-component vector of float) +0:22 'f' (in float) +0:22 'v' (temp 4-component vector of float) 0:26 Compare Equal (temp bool) 0:26 'f1' (temp 1-component vector of float) 0:26 Construct float (temp 1-component vector of float) @@ -173,41 +175,43 @@ gl_FragCoord origin is upper left 0:13 'MyVal' (temp 3-component vector of float) 0:13 Construct vec3 (temp 3-component vector of float) 0:13 'V' (temp float) -0:16 Compare Greater Than (temp bool) +0:16 Compare Greater Than (temp 3-component vector of bool) 0:16 'foo' (temp 3-component vector of float) 0:16 Constant: 0:16 4.000000 0:16 4.000000 0:16 4.000000 -0:17 Compare Greater Than or Equal (temp bool) +0:17 Compare Greater Than or Equal (temp 3-component vector of bool) 0:17 'foo' (temp 3-component vector of float) 0:17 Constant: 0:17 5.000000 0:17 5.000000 0:17 5.000000 -0:18 Compare Less Than (temp bool) +0:18 Compare Less Than (temp 3-component vector of bool) 0:18 Constant: 0:18 6.000000 0:18 6.000000 0:18 6.000000 0:18 'foo' (temp 3-component vector of float) -0:19 Compare Less Than or Equal (temp bool) +0:19 Compare Less Than or Equal (temp 3-component vector of bool) 0:19 Constant: 0:19 7.000000 0:19 7.000000 0:19 7.000000 0:19 'foo' (temp 3-component vector of float) -0:21 Compare Equal (temp bool) -0:21 Construct vec4 (temp 4-component vector of float) -0:21 direct index (temp float) -0:21 'v' (temp 4-component vector of float) -0:21 Constant: -0:21 0 (const int) -0:21 'v' (temp 4-component vector of float) -0:22 Compare Not Equal (temp bool) -0:22 Construct vec4 (temp 4-component vector of float) -0:22 'f' (in float) -0:22 'v' (temp 4-component vector of float) +0:21 all (global bool) +0:21 Equal (temp 4-component vector of bool) +0:21 Construct vec4 (temp 4-component vector of float) +0:21 direct index (temp float) +0:21 'v' (temp 4-component vector of float) +0:21 Constant: +0:21 0 (const int) +0:21 'v' (temp 4-component vector of float) +0:22 any (global bool) +0:22 NotEqual (temp 4-component vector of bool) +0:22 Construct vec4 (temp 4-component vector of float) +0:22 'f' (in float) +0:22 'v' (temp 4-component vector of float) 0:26 Compare Equal (temp bool) 0:26 'f1' (temp 1-component vector of float) 0:26 Construct float (temp 1-component vector of float) @@ -227,7 +231,7 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 84 +// Id's are bound by 85 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -244,7 +248,7 @@ gl_FragCoord origin is upper left Name 33 "V" Name 34 "MyVal" Name 37 "foo" - Name 69 "f1" + Name 70 "f1" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -266,15 +270,16 @@ gl_FragCoord origin is upper left 39: 6(float) Constant 1082130432 40: 22(fvec3) ConstantComposite 39 39 39 41: TypeBool - 44: 6(float) Constant 1084227584 - 45: 22(fvec3) ConstantComposite 44 44 44 - 47: 6(float) Constant 1086324736 - 48: 22(fvec3) ConstantComposite 47 47 47 - 51: 6(float) Constant 1088421888 - 52: 22(fvec3) ConstantComposite 51 51 51 - 55: TypeInt 32 0 - 56: 55(int) Constant 0 - 61: TypeVector 41(bool) 4 + 42: TypeVector 41(bool) 3 + 45: 6(float) Constant 1084227584 + 46: 22(fvec3) ConstantComposite 45 45 45 + 48: 6(float) Constant 1086324736 + 49: 22(fvec3) ConstantComposite 48 48 48 + 52: 6(float) Constant 1088421888 + 53: 22(fvec3) ConstantComposite 52 52 52 + 56: TypeInt 32 0 + 57: 56(int) Constant 0 + 62: TypeVector 41(bool) 4 4(main): 2 Function None 3 5: Label FunctionEnd @@ -288,7 +293,7 @@ gl_FragCoord origin is upper left 33(V): 9(ptr) Variable Function 34(MyVal): 23(ptr) Variable Function 37(foo): 23(ptr) Variable Function - 69(f1): 9(ptr) Variable Function + 70(f1): 9(ptr) Variable Function Store 15(v) 17 Store 15(v) 19 20: 6(float) Load 12(f) @@ -305,35 +310,35 @@ gl_FragCoord origin is upper left 36: 22(fvec3) CompositeConstruct 35 35 35 Store 34(MyVal) 36 38: 22(fvec3) Load 37(foo) - 42: 41(bool) FOrdGreaterThan 38 40 - 43: 22(fvec3) Load 37(foo) - 46: 41(bool) FOrdGreaterThanEqual 43 45 - 49: 22(fvec3) Load 37(foo) - 50: 41(bool) FOrdLessThan 48 49 - 53: 22(fvec3) Load 37(foo) - 54: 41(bool) FOrdLessThanEqual 52 53 - 57: 9(ptr) AccessChain 15(v) 56 - 58: 6(float) Load 57 - 59: 7(fvec4) CompositeConstruct 58 58 58 58 - 60: 7(fvec4) Load 15(v) - 62: 61(bvec4) FOrdEqual 59 60 - 63: 41(bool) All 62 - 64: 6(float) Load 12(f) - 65: 7(fvec4) CompositeConstruct 64 64 64 64 - 66: 7(fvec4) Load 15(v) - 67: 61(bvec4) FOrdNotEqual 65 66 - 68: 41(bool) Any 67 - 70: 6(float) Load 69(f1) - 71: 7(fvec4) Load 15(v) - 72: 6(float) CompositeExtract 71 0 - 73: 41(bool) FOrdEqual 70 72 - 74: 7(fvec4) Load 15(v) - 75: 6(float) CompositeExtract 74 0 - 76: 6(float) Load 69(f1) - 77: 41(bool) FOrdLessThan 75 76 - 78: 6(float) Load 69(f1) - 79: 6(float) Load 69(f1) - 80: 22(fvec3) CompositeConstruct 79 79 79 - 81: 7(fvec4) Load 11(input) - ReturnValue 81 + 43: 42(bvec3) FOrdGreaterThan 38 40 + 44: 22(fvec3) Load 37(foo) + 47: 42(bvec3) FOrdGreaterThanEqual 44 46 + 50: 22(fvec3) Load 37(foo) + 51: 42(bvec3) FOrdLessThan 49 50 + 54: 22(fvec3) Load 37(foo) + 55: 42(bvec3) FOrdLessThanEqual 53 54 + 58: 9(ptr) AccessChain 15(v) 57 + 59: 6(float) Load 58 + 60: 7(fvec4) CompositeConstruct 59 59 59 59 + 61: 7(fvec4) Load 15(v) + 63: 62(bvec4) FOrdEqual 60 61 + 64: 41(bool) All 63 + 65: 6(float) Load 12(f) + 66: 7(fvec4) CompositeConstruct 65 65 65 65 + 67: 7(fvec4) Load 15(v) + 68: 62(bvec4) FOrdNotEqual 66 67 + 69: 41(bool) Any 68 + 71: 6(float) Load 70(f1) + 72: 7(fvec4) Load 15(v) + 73: 6(float) CompositeExtract 72 0 + 74: 41(bool) FOrdEqual 71 73 + 75: 7(fvec4) Load 15(v) + 76: 6(float) CompositeExtract 75 0 + 77: 6(float) Load 70(f1) + 78: 41(bool) FOrdLessThan 76 77 + 79: 6(float) Load 70(f1) + 80: 6(float) Load 70(f1) + 81: 22(fvec3) CompositeConstruct 80 80 80 + 82: 7(fvec4) Load 11(input) + ReturnValue 82 FunctionEnd diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out index 28e326d2..eab2ba5c 100755 --- a/Test/baseResults/hlsl.whileLoop.frag.out +++ b/Test/baseResults/hlsl.whileLoop.frag.out @@ -8,9 +8,10 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Loop with condition tested first 0:3 Loop Condition -0:3 Compare Not Equal (temp bool) -0:3 'input' (layout(location=0 ) in 4-component vector of float) -0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 any (global bool) +0:3 NotEqual (temp 4-component vector of bool) +0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 Loop Body 0:? Sequence 0:3 Sequence @@ -50,9 +51,10 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Loop with condition tested first 0:3 Loop Condition -0:3 Compare Not Equal (temp bool) -0:3 'input' (layout(location=0 ) in 4-component vector of float) -0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 any (global bool) +0:3 NotEqual (temp 4-component vector of bool) +0:3 'input' (layout(location=0 ) in 4-component vector of float) +0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 Loop Body 0:? Sequence 0:3 Sequence diff --git a/Test/hlsl.comparison.vec.frag b/Test/hlsl.comparison.vec.frag new file mode 100644 index 00000000..b8f93c9f --- /dev/null +++ b/Test/hlsl.comparison.vec.frag @@ -0,0 +1,34 @@ +uniform float4 uf4; + +void Bug1( float4 a ) +{ + float4 v04 = float4( 0.0, 0.0, 0.0, 0.0 ); + float v01 = 0.0; + + bool4 r00 = a == v04; + bool4 r01 = a != v04; + bool4 r02 = a < v04; + bool4 r03 = a > v04; + + bool4 r10 = a == v01; + bool4 r11 = a != v01; + bool4 r12 = a < v01; + bool4 r13 = a > v01; + + bool4 r20 = v01 == a; + bool4 r21 = v01 != a; + bool4 r22 = v01 < a; + bool4 r23 = v01 > a; +} + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + psout.Color = 0; + return psout; +} diff --git a/Test/hlsl.doLoop.frag b/Test/hlsl.doLoop.frag index 546b2c2c..251a8c12 100644 --- a/Test/hlsl.doLoop.frag +++ b/Test/hlsl.doLoop.frag @@ -2,5 +2,5 @@ float4 PixelShaderFunction(float4 input) : COLOR0 { [unroll] do {} while (false); [unroll] do {;} while (false); - do { return input; } while (input == input); + do { return input; } while (all(input == input)); } diff --git a/Test/hlsl.forLoop.frag b/Test/hlsl.forLoop.frag index 2495e6e1..93789967 100644 --- a/Test/hlsl.forLoop.frag +++ b/Test/hlsl.forLoop.frag @@ -2,9 +2,9 @@ float4 PixelShaderFunction(float4 input) : COLOR0 { for (;;) ; for (++input; ; ) ; - [unroll] for (; input != input; ) {} - for (; input != input; ) { return -input; } - for (--input; input != input; input += 2) { return -input; } + [unroll] for (; any(input != input); ) {} + for (; any(input != input); ) { return -input; } + for (--input; any(input != input); input += 2) { return -input; } for (;;) if (input.x > 2.0) break; for (;;) if (input.x > 2.0) continue; float ii; diff --git a/Test/hlsl.if.frag b/Test/hlsl.if.frag index 1f6dc415..ba659e6d 100644 --- a/Test/hlsl.if.frag +++ b/Test/hlsl.if.frag @@ -1,26 +1,26 @@ float4 PixelShaderFunction(float4 input) : COLOR0 { - if (input == input) + if (all(input == input)) return input; - if (input == input) + if (all(input == input)) return input; else return -input; - if (input == input) + if (all(input == input)) ; - if (input == input) + if (all(input == input)) ; else ; - [flatten] if (input == input) { + [flatten] if (all(input == input)) { return input; } - if (input == input) { + if (all(input == input)) { return input; } else { return -input; diff --git a/Test/hlsl.shapeConv.frag b/Test/hlsl.shapeConv.frag index 0485b4a5..adb170ea 100644 --- a/Test/hlsl.shapeConv.frag +++ b/Test/hlsl.shapeConv.frag @@ -18,8 +18,8 @@ float4 PixelShaderFunction(float4 input, float f) : COLOR0 6.0 < foo; 7.0 <= foo; - v.x == v; - f != v; + all(v.x == v); + any(f != v); float1 f1; diff --git a/Test/hlsl.whileLoop.frag b/Test/hlsl.whileLoop.frag index f282375d..e4084ae7 100644 --- a/Test/hlsl.whileLoop.frag +++ b/Test/hlsl.whileLoop.frag @@ -1,6 +1,6 @@ float4 PixelShaderFunction(float4 input) : COLOR0 { - while (input != input) { return input; } + while (any(input != input)) { return input; } while (false) ; [unroll] while (false) { } while ((false)) { } diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 758ae4f2..a313b54d 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -1892,13 +1892,26 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) // Relational comparisons need numeric types and will promote to scalar Boolean. if (left->getBasicType() == EbtBool) return false; - node.setType(TType(EbtBool)); + + node.setType(TType(EbtBool, EvqTemporary, left->getVectorSize())); break; case EOpEqual: case EOpNotEqual: - // All the above comparisons result in a bool (but not the vector compares) - node.setType(TType(EbtBool)); + if (getSource() == EShSourceHlsl) { + const int resultWidth = std::max(left->getVectorSize(), right->getVectorSize()); + + // In HLSL, == or != on vectors means component-wise comparison. + if (resultWidth > 1) { + op = (op == EOpEqual) ? EOpVectorEqual : EOpVectorNotEqual; + node.setOp(op); + } + + node.setType(TType(EbtBool, EvqTemporary, resultWidth)); + } else { + // All the above comparisons result in a bool (but not the vector compares) + node.setType(TType(EbtBool)); + } break; case EOpLogicalAnd: @@ -1973,6 +1986,8 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) case EOpEqual: case EOpNotEqual: + case EOpVectorEqual: + case EOpVectorNotEqual: case EOpLogicalAnd: case EOpLogicalOr: diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index bd64f199..f8c963b7 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -163,6 +163,8 @@ bool TOutputTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node) case EOpGreaterThan: out.debug << "Compare Greater Than"; break; case EOpLessThanEqual: out.debug << "Compare Less Than or Equal"; break; case EOpGreaterThanEqual: out.debug << "Compare Greater Than or Equal"; break; + case EOpVectorEqual: out.debug << "Equal"; break; + case EOpVectorNotEqual: out.debug << "NotEqual"; break; case EOpVectorTimesScalar: out.debug << "vector-scale"; break; case EOpVectorTimesMatrix: out.debug << "vector-times-matrix"; break; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 0291b040..24ef4813 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -91,6 +91,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.calculatelod.dx10.frag", "main"}, {"hlsl.calculatelodunclamped.dx10.frag", "main"}, {"hlsl.cast.frag", "PixelShaderFunction"}, + {"hlsl.comparison.vec.frag", "main"}, {"hlsl.conditional.frag", "PixelShaderFunction"}, {"hlsl.constructexpr.frag", "main"}, {"hlsl.depthGreater.frag", "PixelShaderFunction"}, From 27939caa86b1191ef87eebc3d952e19479ca23b1 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 26 Oct 2016 12:42:49 -0600 Subject: [PATCH 081/130] HLSL: allow component-wise operations for logical || and &&. HLSL || and && can operate component-wise. --- .../hlsl.logical.binary.vec.frag.out | 412 ++++++++++++++++++ Test/hlsl.logical.binary.vec.frag | 24 + glslang/MachineIndependent/Intermediate.cpp | 12 +- gtests/Hlsl.FromFile.cpp | 1 + 4 files changed, 445 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/hlsl.logical.binary.vec.frag.out create mode 100644 Test/hlsl.logical.binary.vec.frag diff --git a/Test/baseResults/hlsl.logical.binary.vec.frag.out b/Test/baseResults/hlsl.logical.binary.vec.frag.out new file mode 100644 index 00000000..2ada44a3 --- /dev/null +++ b/Test/baseResults/hlsl.logical.binary.vec.frag.out @@ -0,0 +1,412 @@ +hlsl.logical.binary.vec.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:10 Function Parameters: +0:? Sequence +0:11 Sequence +0:11 move second child to first child (temp 4-component vector of bool) +0:11 'r00' (temp 4-component vector of bool) +0:11 Negate conditional (temp 4-component vector of bool) +0:11 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:11 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:11 Constant: +0:11 0 (const uint) +0:12 Sequence +0:12 move second child to first child (temp 4-component vector of bool) +0:12 'r01' (temp 4-component vector of bool) +0:12 logical-and (temp 4-component vector of bool) +0:12 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:12 Constant: +0:12 0 (const uint) +0:12 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:12 Constant: +0:12 1 (const uint) +0:13 Sequence +0:13 move second child to first child (temp 4-component vector of bool) +0:13 'r02' (temp 4-component vector of bool) +0:13 logical-or (temp 4-component vector of bool) +0:13 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:13 Constant: +0:13 0 (const uint) +0:13 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:13 Constant: +0:13 1 (const uint) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of bool) +0:15 'r10' (temp 4-component vector of bool) +0:15 logical-and (temp 4-component vector of bool) +0:15 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool) +0:15 b1a: direct index for structure (layout(offset=32 ) uniform bool) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:15 Constant: +0:15 2 (const uint) +0:15 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:15 Constant: +0:15 1 (const uint) +0:16 Sequence +0:16 move second child to first child (temp 4-component vector of bool) +0:16 'r11' (temp 4-component vector of bool) +0:16 logical-or (temp 4-component vector of bool) +0:16 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool) +0:16 b1a: direct index for structure (layout(offset=32 ) uniform bool) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:16 Constant: +0:16 2 (const uint) +0:16 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:16 Constant: +0:16 1 (const uint) +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of bool) +0:18 'r20' (temp 4-component vector of bool) +0:18 logical-and (temp 4-component vector of bool) +0:18 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:18 Constant: +0:18 0 (const uint) +0:18 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool) +0:18 b1b: direct index for structure (layout(offset=36 ) uniform bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:18 Constant: +0:18 3 (const uint) +0:19 Sequence +0:19 move second child to first child (temp 4-component vector of bool) +0:19 'r21' (temp 4-component vector of bool) +0:19 logical-or (temp 4-component vector of bool) +0:19 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:19 Constant: +0:19 0 (const uint) +0:19 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool) +0:19 b1b: direct index for structure (layout(offset=36 ) uniform bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:19 Constant: +0:19 3 (const uint) +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 'psout' (temp structure{temp 4-component vector of float Color}) +0:22 Constant: +0:22 0 (const int) +0:22 Convert bool to float (temp 4-component vector of float) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 'r00' (temp 4-component vector of bool) +0:22 'r01' (temp 4-component vector of bool) +0:22 'r02' (temp 4-component vector of bool) +0:22 'r10' (temp 4-component vector of bool) +0:22 'r11' (temp 4-component vector of bool) +0:22 'r20' (temp 4-component vector of bool) +0:22 'r21' (temp 4-component vector of bool) +0:23 Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:23 Color: direct index for structure (temp 4-component vector of float) +0:23 'psout' (temp structure{temp 4-component vector of float Color}) +0:23 Constant: +0:23 0 (const int) +0:23 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:10 Function Parameters: +0:? Sequence +0:11 Sequence +0:11 move second child to first child (temp 4-component vector of bool) +0:11 'r00' (temp 4-component vector of bool) +0:11 Negate conditional (temp 4-component vector of bool) +0:11 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:11 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:11 Constant: +0:11 0 (const uint) +0:12 Sequence +0:12 move second child to first child (temp 4-component vector of bool) +0:12 'r01' (temp 4-component vector of bool) +0:12 logical-and (temp 4-component vector of bool) +0:12 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:12 Constant: +0:12 0 (const uint) +0:12 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:12 Constant: +0:12 1 (const uint) +0:13 Sequence +0:13 move second child to first child (temp 4-component vector of bool) +0:13 'r02' (temp 4-component vector of bool) +0:13 logical-or (temp 4-component vector of bool) +0:13 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:13 Constant: +0:13 0 (const uint) +0:13 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:13 Constant: +0:13 1 (const uint) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of bool) +0:15 'r10' (temp 4-component vector of bool) +0:15 logical-and (temp 4-component vector of bool) +0:15 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool) +0:15 b1a: direct index for structure (layout(offset=32 ) uniform bool) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:15 Constant: +0:15 2 (const uint) +0:15 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:15 Constant: +0:15 1 (const uint) +0:16 Sequence +0:16 move second child to first child (temp 4-component vector of bool) +0:16 'r11' (temp 4-component vector of bool) +0:16 logical-or (temp 4-component vector of bool) +0:16 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool) +0:16 b1a: direct index for structure (layout(offset=32 ) uniform bool) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:16 Constant: +0:16 2 (const uint) +0:16 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:16 Constant: +0:16 1 (const uint) +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of bool) +0:18 'r20' (temp 4-component vector of bool) +0:18 logical-and (temp 4-component vector of bool) +0:18 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:18 Constant: +0:18 0 (const uint) +0:18 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool) +0:18 b1b: direct index for structure (layout(offset=36 ) uniform bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:18 Constant: +0:18 3 (const uint) +0:19 Sequence +0:19 move second child to first child (temp 4-component vector of bool) +0:19 'r21' (temp 4-component vector of bool) +0:19 logical-or (temp 4-component vector of bool) +0:19 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:19 Constant: +0:19 0 (const uint) +0:19 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool) +0:19 b1b: direct index for structure (layout(offset=36 ) uniform bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:19 Constant: +0:19 3 (const uint) +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 'psout' (temp structure{temp 4-component vector of float Color}) +0:22 Constant: +0:22 0 (const int) +0:22 Convert bool to float (temp 4-component vector of float) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 logical-or (temp 4-component vector of bool) +0:22 'r00' (temp 4-component vector of bool) +0:22 'r01' (temp 4-component vector of bool) +0:22 'r02' (temp 4-component vector of bool) +0:22 'r10' (temp 4-component vector of bool) +0:22 'r11' (temp 4-component vector of bool) +0:22 'r20' (temp 4-component vector of bool) +0:22 'r21' (temp 4-component vector of bool) +0:23 Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:23 Color: direct index for structure (temp 4-component vector of float) +0:23 'psout' (temp structure{temp 4-component vector of float Color}) +0:23 Constant: +0:23 0 (const int) +0:23 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 115 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 111 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "r00" + Name 12 "$Global" + MemberName 12($Global) 0 "b4a" + MemberName 12($Global) 1 "b4b" + MemberName 12($Global) 2 "b1a" + MemberName 12($Global) 3 "b1b" + Name 14 "" + Name 24 "r01" + Name 33 "r02" + Name 41 "r10" + Name 52 "r11" + Name 61 "r20" + Name 73 "r21" + Name 87 "PS_OUTPUT" + MemberName 87(PS_OUTPUT) 0 "Color" + Name 89 "psout" + Name 111 "Color" + MemberDecorate 12($Global) 0 Offset 0 + MemberDecorate 12($Global) 1 Offset 16 + MemberDecorate 12($Global) 2 Offset 32 + MemberDecorate 12($Global) 3 Offset 36 + Decorate 12($Global) Block + Decorate 14 DescriptorSet 0 + Decorate 111(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeBool + 7: TypeVector 6(bool) 4 + 8: TypePointer Function 7(bvec4) + 10: TypeInt 32 0 + 11: TypeVector 10(int) 4 + 12($Global): TypeStruct 11(ivec4) 11(ivec4) 10(int) 10(int) + 13: TypePointer Uniform 12($Global) + 14: 13(ptr) Variable Uniform + 15: TypeInt 32 1 + 16: 15(int) Constant 0 + 17: TypePointer Uniform 11(ivec4) + 20: 10(int) Constant 0 + 21: 11(ivec4) ConstantComposite 20 20 20 20 + 28: 15(int) Constant 1 + 42: 15(int) Constant 2 + 43: TypePointer Uniform 10(int) + 67: 15(int) Constant 3 + 85: TypeFloat 32 + 86: TypeVector 85(float) 4 + 87(PS_OUTPUT): TypeStruct 86(fvec4) + 88: TypePointer Function 87(PS_OUTPUT) + 103: 85(float) Constant 0 + 104: 85(float) Constant 1065353216 + 105: 86(fvec4) ConstantComposite 103 103 103 103 + 106: 86(fvec4) ConstantComposite 104 104 104 104 + 108: TypePointer Function 86(fvec4) + 110: TypePointer Output 86(fvec4) + 111(Color): 110(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(r00): 8(ptr) Variable Function + 24(r01): 8(ptr) Variable Function + 33(r02): 8(ptr) Variable Function + 41(r10): 8(ptr) Variable Function + 52(r11): 8(ptr) Variable Function + 61(r20): 8(ptr) Variable Function + 73(r21): 8(ptr) Variable Function + 89(psout): 88(ptr) Variable Function + 18: 17(ptr) AccessChain 14 16 + 19: 11(ivec4) Load 18 + 22: 7(bvec4) INotEqual 19 21 + 23: 7(bvec4) LogicalNot 22 + Store 9(r00) 23 + 25: 17(ptr) AccessChain 14 16 + 26: 11(ivec4) Load 25 + 27: 7(bvec4) INotEqual 26 21 + 29: 17(ptr) AccessChain 14 28 + 30: 11(ivec4) Load 29 + 31: 7(bvec4) INotEqual 30 21 + 32: 7(bvec4) LogicalAnd 27 31 + Store 24(r01) 32 + 34: 17(ptr) AccessChain 14 16 + 35: 11(ivec4) Load 34 + 36: 7(bvec4) INotEqual 35 21 + 37: 17(ptr) AccessChain 14 28 + 38: 11(ivec4) Load 37 + 39: 7(bvec4) INotEqual 38 21 + 40: 7(bvec4) LogicalOr 36 39 + Store 33(r02) 40 + 44: 43(ptr) AccessChain 14 42 + 45: 10(int) Load 44 + 46: 6(bool) INotEqual 45 20 + 47: 7(bvec4) CompositeConstruct 46 46 46 46 + 48: 17(ptr) AccessChain 14 28 + 49: 11(ivec4) Load 48 + 50: 7(bvec4) INotEqual 49 21 + 51: 7(bvec4) LogicalAnd 47 50 + Store 41(r10) 51 + 53: 43(ptr) AccessChain 14 42 + 54: 10(int) Load 53 + 55: 6(bool) INotEqual 54 20 + 56: 7(bvec4) CompositeConstruct 55 55 55 55 + 57: 17(ptr) AccessChain 14 28 + 58: 11(ivec4) Load 57 + 59: 7(bvec4) INotEqual 58 21 + 60: 7(bvec4) LogicalOr 56 59 + Store 52(r11) 60 + 62: 17(ptr) AccessChain 14 16 + 63: 11(ivec4) Load 62 + 64: 7(bvec4) INotEqual 63 21 + SelectionMerge 66 None + BranchConditional 64 65 66 + 65: Label + 68: 43(ptr) AccessChain 14 67 + 69: 10(int) Load 68 + 70: 6(bool) INotEqual 69 20 + 71: 7(bvec4) CompositeConstruct 70 70 70 70 + Branch 66 + 66: Label + 72: 6(bool) Phi 64 5 71 65 + Store 61(r20) 72 + 74: 17(ptr) AccessChain 14 16 + 75: 11(ivec4) Load 74 + 76: 7(bvec4) INotEqual 75 21 + 77: 6(bool) LogicalNot 76 + SelectionMerge 79 None + BranchConditional 77 78 79 + 78: Label + 80: 43(ptr) AccessChain 14 67 + 81: 10(int) Load 80 + 82: 6(bool) INotEqual 81 20 + 83: 7(bvec4) CompositeConstruct 82 82 82 82 + Branch 79 + 79: Label + 84: 6(bool) Phi 76 66 83 78 + Store 73(r21) 84 + 90: 7(bvec4) Load 9(r00) + 91: 7(bvec4) Load 24(r01) + 92: 7(bvec4) LogicalOr 90 91 + 93: 7(bvec4) Load 33(r02) + 94: 7(bvec4) LogicalOr 92 93 + 95: 7(bvec4) Load 41(r10) + 96: 7(bvec4) LogicalOr 94 95 + 97: 7(bvec4) Load 52(r11) + 98: 7(bvec4) LogicalOr 96 97 + 99: 7(bvec4) Load 61(r20) + 100: 7(bvec4) LogicalOr 98 99 + 101: 7(bvec4) Load 73(r21) + 102: 7(bvec4) LogicalOr 100 101 + 107: 86(fvec4) Select 102 106 105 + 109: 108(ptr) AccessChain 89(psout) 16 + Store 109 107 + 112: 108(ptr) AccessChain 89(psout) 16 + 113: 86(fvec4) Load 112 + Store 111(Color) 113 + Return + FunctionEnd diff --git a/Test/hlsl.logical.binary.vec.frag b/Test/hlsl.logical.binary.vec.frag new file mode 100644 index 00000000..e94c8f5b --- /dev/null +++ b/Test/hlsl.logical.binary.vec.frag @@ -0,0 +1,24 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform bool4 b4a, b4b; +uniform bool b1a, b1b; + +PS_OUTPUT main() +{ + bool4 r00 = !b4a; + bool4 r01 = b4a && b4b; // vec, vec + bool4 r02 = b4a || b4b; // vec, vec + + bool4 r10 = b1a && b4b; // scalar, vec + bool4 r11 = b1a || b4b; // scalar, vec + + bool4 r20 = b4a && b1b; // vec, scalar + bool4 r21 = b4a || b1b; // vec, scalar + + PS_OUTPUT psout; + psout.Color = r00 || r01 || r02 || r10 || r11 || r20 || r21; + return psout; +} diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 758ae4f2..7ff51edc 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -797,6 +797,9 @@ TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type, case EOpNotEqual: case EOpFunctionCall: case EOpReturn: + case EOpLogicalAnd: + case EOpLogicalOr: + case EOpLogicalXor: break; default: return node; @@ -1911,13 +1914,14 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) return false; node.setLeft(left = convertedL); // also updates stack variable node.setRight(right = convertedR); // also updates stack variable + } else { + // logical ops operate only on scalar Booleans and will promote to scalar Boolean. + if (left->getBasicType() != EbtBool || left->isVector() || left->isMatrix()) + return false; } - // logical ops operate only on scalar Booleans and will promote to scalar Boolean. - if (left->getBasicType() != EbtBool || left->isVector() || left->isMatrix()) - return false; + node.setType(TType(EbtBool, EvqTemporary, left->getVectorSize())); - node.setType(TType(EbtBool)); break; case EOpRightShift: diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 0291b040..72875679 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -144,6 +144,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.load.offsetarray.dx10.frag", "main"}, {"hlsl.logical.unary.frag", "main"}, {"hlsl.logical.binary.frag", "main"}, + {"hlsl.logical.binary.vec.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, {"hlsl.multiReturn.frag", "main"}, {"hlsl.matrixindex.frag", "main"}, From c2016a52d2ece7c775da4d4b58aad8ea701c8817 Mon Sep 17 00:00:00 2001 From: "t.jung" Date: Thu, 27 Oct 2016 15:45:02 +0200 Subject: [PATCH 082/130] New uniform mapping handling - add optional callback to handle mapping of uniform variables in linking phase - if no resolver is provided, it uses the internal default resolver with all shifts and auto bind settings Change-Id: Icfe38a9eabe8bfc8f8bb6d8150c06f7ed38bb762 --- ...spv.register.autoassign.rangetest.frag.out | 4 - glslang/MachineIndependent/ShaderLang.cpp | 4 +- glslang/MachineIndependent/iomapper.cpp | 422 +++++++++++------- glslang/MachineIndependent/iomapper.h | 2 +- glslang/Public/ShaderLang.h | 35 +- 5 files changed, 304 insertions(+), 163 deletions(-) diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out index a521a13b..94933fba 100644 --- a/Test/baseResults/spv.register.autoassign.rangetest.frag.out +++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out @@ -2,10 +2,6 @@ spv.register.autoassign.rangetest.frag Linked fragment stage: -INTERNAL ERROR: mapped binding out of range: g_tScene -INTERNAL ERROR: mapped binding out of range: g_tSamp -INTERNAL ERROR: mapped binding out of range: g_tScene -INTERNAL ERROR: mapped binding out of range: g_tSamp INTERNAL ERROR: mapped binding out of range: g_tSamp INTERNAL ERROR: mapped binding out of range: g_tScene diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 6d044452..eb4a17d4 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1716,7 +1716,7 @@ void TProgram::dumpReflection() { reflection->dump(); } // // I/O mapping implementation. // -bool TProgram::mapIO() +bool TProgram::mapIO(TIoMapResolver* resolver) { if (! linked || ioMapper) return false; @@ -1725,7 +1725,7 @@ bool TProgram::mapIO() for (int s = 0; s < EShLangCount; ++s) { if (intermediate[s]) { - if (! ioMapper->addStage((EShLanguage)s, *intermediate[s], *infoSink)) + if (! ioMapper->addStage((EShLanguage)s, *intermediate[s], *infoSink, resolver)) return false; } } diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 15847ddb..8ea4506f 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -61,177 +61,278 @@ // c. implicit dead bindings are left un-bound. // - + namespace glslang { -// Map of IDs to bindings -typedef std::unordered_map TBindingMap; -typedef std::unordered_set TUsedBindings; +struct TVarEntryInfo +{ + int id; + TIntermSymbol* symbol; + bool live; + int newBinding; + int newSet; - -// This traverses the AST to determine which bindings are used, and which are implicit -// (for subsequent auto-numbering) -class TBindingTraverser : public TLiveTraverser { -public: - TBindingTraverser(const TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings, - bool traverseDeadCode = false) : - TLiveTraverser(i, traverseDeadCode, true, true, false), - bindingMap(bindingMap), - usedBindings(usedBindings) - { } - -protected: - virtual void visitSymbol(TIntermSymbol* base) { - if (base->getQualifier().storage == EvqUniform) - addUniform(*base); - } - - // Return the right binding base given the variable type. - int getBindingBase(const TType& type) { - if (type.getBasicType() == EbtSampler) { - const TSampler& sampler = type.getSampler(); - if (sampler.isPureSampler()) - return intermediate.getShiftSamplerBinding(); - if (sampler.isTexture()) - return intermediate.getShiftTextureBinding(); - } - - if (type.getQualifier().isUniformOrBuffer()) - return intermediate.getShiftUboBinding(); - - return -1; // not a type with a binding - } - - // Mark a given base symbol ID as being bound to 'binding' - void markBinding(const TIntermSymbol& base, int binding) { - bindingMap[base.getId()] = binding; - - if (binding >= 0) { - // const TType& type = base.getType(); - const unsigned int size = 1; // type.isArray() ? type.getCumulativeArraySize() : 1; - - for (unsigned int offset=0; offsetgetQualifier(); + const TQualifier& rq = r.symbol->getQualifier(); - // Return if it's not a type we bind - if (bindingBase == -1) - return; + // 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 (type.getQualifier().hasBinding()) { - // It has a binding: keep that one. - markBinding(base, type.getQualifier().layoutBinding + bindingBase); - } else if (!traverseAll) { - // Mark it as something we need to dynamically create a binding for, - // only if we're walking just the live code. We don't auto-number - // in dead code. - markBinding(base, -1); + if (lPoints == rPoints) + return l.id < r.id; + return lPoints > rPoints; } - } - - TBindingMap& bindingMap; - TUsedBindings& usedBindings; + }; }; -// This traverses the AST and applies binding maps it's given. -class TIoMappingTraverser : public TBindingTraverser { + +typedef std::vector TVarLiveMap; + +class TVarGatherTraverser : public TLiveTraverser +{ public: - TIoMappingTraverser(TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings, - TInfoSink& infoSink, bool traverseDeadCode) : - TBindingTraverser(i, bindingMap, usedBindings, traverseDeadCode), - infoSink(infoSink), - assignError(false) - { } - - bool success() const { return !assignError; } - -protected: - unsigned checkBindingRange(const TIntermSymbol& base, unsigned binding) + TVarGatherTraverser(const TIntermediate& i, TVarLiveMap& vars, bool traverseDeadCode) + : TLiveTraverser(i, traverseDeadCode, true, true, false) + , varLiveList(vars) { - if (binding >= TQualifier::layoutBindingEnd) { - TString err = "mapped binding out of range: "; - err += base.getName(); - - infoSink.info.message(EPrefixInternalError, err.c_str()); - assignError = true; - - return 0; - } - - return binding; } - void addUniform(TIntermSymbol& base) override + + virtual void visitSymbol(TIntermSymbol* base) { - // Skip things we don't intend to bind. - if (bindingMap.find(base.getId()) == bindingMap.end()) + if (base->getQualifier().storage == EvqUniform) { + TVarEntryInfo ent = { base->getId(), base, !traverseAll }; + TVarLiveMap::iterator at = std::lower_bound(varLiveList.begin(), varLiveList.end(), ent, TVarEntryInfo::TOrderById()); + if (at != varLiveList.end() && at->id == ent.id) + at->live = at->live || !traverseAll; // update live state + else + varLiveList.insert(at, ent); + } + } + + private: + TVarLiveMap& varLiveList; +}; + +class TVarSetTraverser : public TLiveTraverser +{ +public: + TVarSetTraverser(const TIntermediate& i, const TVarLiveMap& vars) + : TLiveTraverser(i, true, true, true, false) + , varLiveList(vars) + { + } + + + virtual void visitSymbol(TIntermSymbol* base) + { + TVarEntryInfo ent = { base->getId() }; + TVarLiveMap::const_iterator at = std::lower_bound(varLiveList.begin(), varLiveList.end(), ent, TVarEntryInfo::TOrderById()); + if (at == varLiveList.end()) + return; + if (!(at->id == ent.id)) return; - const int existingBinding = bindingMap[base.getId()]; + if (at->newBinding != -1) + base->getWritableType().getQualifier().layoutBinding = at->newBinding; + if (at->newSet != -1) + base->getWritableType().getQualifier().layoutSet = at->newSet; + } - // Apply existing binding, if we were given one or already made one up. - if (existingBinding != -1) { - base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, existingBinding); - return; - } + private: + const TVarLiveMap& varLiveList; +}; - if (intermediate.getAutoMapBindings()) { - // Otherwise, find a free spot for it. - const int freeBinding = getFreeBinding(base.getType(), getBindingBase(base.getType())); +struct TResolverAdaptor +{ + TResolverAdaptor(EShLanguage s, TIoMapResolver& r, TInfoSink& i, bool& e) + : resolver(r) + , stage(s) + , infoSink(i) + , error(e) + { + } + inline void operator()(TVarEntryInfo& ent) + { + bool isValid = resolver.validateBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); + if (isValid) { + ent.newBinding = resolver.resolveBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); + ent.newSet = resolver.resolveSet(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); - markBinding(base, freeBinding); - base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, freeBinding); + if (ent.newBinding != -1) { + if (ent.newBinding >= TQualifier::layoutBindingEnd) { + TString err = "mapped binding out of range: " + ent.symbol->getName(); + + infoSink.info.message(EPrefixInternalError, err.c_str()); + error = true; + } + } + if (ent.newSet != -1) { + if (ent.newSet >= TQualifier::layoutSetEnd) { + TString err = "mapped set out of range: " + ent.symbol->getName(); + + infoSink.info.message(EPrefixInternalError, err.c_str()); + error = true; + } + } + } else { + TString errorMsg = "Invalid binding: " + ent.symbol->getName(); + infoSink.info.message(EPrefixInternalError, errorMsg.c_str()); + error = true; } } + EShLanguage stage; + TIoMapResolver& resolver; + TInfoSink& infoSink; + bool& error; +}; - // Search for N free consecutive binding slots in [base, base+required). - // E.g, if we want to reserve consecutive bindings for flattened arrays. - bool hasNFreeSlots(int base, int required) { - for (int binding = base; binding < (base + required); ++binding) - if (usedBindings.find(binding) != usedBindings.end()) - return false; - - return true; +/* + * Basic implementation of glslang::TIoMapResolver that replaces the + * previous offset behaviour. + * It does the same, uses the offsets for th corresponding uniform + * types. Also respects the EOptionAutoMapBindings flag and binds + * them if needed. + */ +struct TDefaultIoResolver : public glslang::TIoMapResolver +{ + int baseSamplerBinding; + int baseTextureBinding; + int baseUboBinding; + bool doAutoMapping; + typedef std::vector TSlotSet; + typedef std::unordered_map TSlotSetMap; + TSlotSetMap slots; + TSlotSet::iterator findSlot(int set, int slot) + { + return std::lower_bound(slots[set].begin(), slots[set].end(), slot); + } + bool checkEmpty(int set, int slot) + { + TSlotSet::iterator at = findSlot(set, slot); + return !(at != slots[set].end() && *at == slot); + } + int reserveSlot(int set, int slot) + { + TSlotSet::iterator at = findSlot(set, slot); + slots[set].insert(at, slot); + return slot; + } + int getFreeSlot(int set, int base) + { + TSlotSet::iterator at = findSlot(set, base); + if (at == slots[set].end()) + return reserveSlot(set, base); + + // look in locksteps, if they not match, then there is a free slot + for (; at != slots[set].end(); ++at, ++base) + if (*at != base) + break; + return reserveSlot(set, base); + } + bool validateBinding(EShLanguage stage, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override + { + if (type.getQualifier().hasBinding()) { + int set; + if (type.getQualifier().hasSet()) + set = type.getQualifier().layoutSet; + else + set = 0; + + if (type.getBasicType() == glslang::EbtSampler) { + const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return checkEmpty(set, baseSamplerBinding + type.getQualifier().layoutBinding); + + if (sampler.isTexture()) + return checkEmpty(set, baseTextureBinding + type.getQualifier().layoutBinding); + } + + if (type.getQualifier().isUniformOrBuffer()) + return checkEmpty(set, baseUboBinding + type.getQualifier().layoutBinding); + } + return true; + } + int resolveBinding(EShLanguage stage, const char* /*name*/, const glslang::TType& type, bool is_live) override + { + int set; + if (type.getQualifier().hasSet()) + set = type.getQualifier().layoutSet; + else + set = 0; + + if (type.getQualifier().hasBinding()) { + if (type.getBasicType() == glslang::EbtSampler) { + const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return reserveSlot(set, baseSamplerBinding + type.getQualifier().layoutBinding); + + if (sampler.isTexture()) + return reserveSlot(set, baseTextureBinding + type.getQualifier().layoutBinding); + } + + if (type.getQualifier().isUniformOrBuffer()) + return reserveSlot(set, baseUboBinding + type.getQualifier().layoutBinding); + } else if (is_live && doAutoMapping) { + // find free slot, the caller did make sure it passes all vars with binding + // first and now all are passed that do not have a binding and needs one + if (type.getBasicType() == glslang::EbtSampler) { + const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return getFreeSlot(set, baseSamplerBinding); + + if (sampler.isTexture()) + return getFreeSlot(set, baseTextureBinding); + } + + if (type.getQualifier().isUniformOrBuffer()) + return getFreeSlot(set, baseUboBinding); } - // Find a free binding spot - int getFreeBinding(const TType&, int nextBinding) { - while (!hasNFreeSlots(nextBinding, 1)) - ++nextBinding; - - return nextBinding; - } - -private: - bool assignError; // true if there was an error assigning the bindings - TInfoSink& infoSink; + return -1; + } + int resolveSet(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override + { + if (type.getQualifier().hasSet()) + return type.getQualifier().layoutSet; + return 0; + } }; // Map I/O variables to provided offsets, and make bindings for // unbound but live variables. // // Returns false if the input is too malformed to do this. -bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate, TInfoSink& infoSink) +bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSink &infoSink, TIoMapResolver *resolver) { // Trivial return if there is nothing to do. if (intermediate.getShiftSamplerBinding() == 0 && intermediate.getShiftTextureBinding() == 0 && intermediate.getShiftUboBinding() == 0 && - intermediate.getAutoMapBindings() == false) + intermediate.getAutoMapBindings() == false && + resolver == NULL) return true; if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive()) @@ -241,30 +342,43 @@ bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate, TInfoSink& in if (root == nullptr) return false; - // The lifetime of this data spans several passes. - TBindingMap bindingMap; - TUsedBindings usedBindings; + // if no resolver is provided, use the default resolver with the given shifts and auto map settings + TDefaultIoResolver defaultResolver; + if (resolver == NULL) { + defaultResolver.baseSamplerBinding = intermediate.getShiftSamplerBinding(); + defaultResolver.baseTextureBinding = intermediate.getShiftTextureBinding(); + defaultResolver.baseUboBinding = intermediate.getShiftUboBinding(); + defaultResolver.doAutoMapping = intermediate.getAutoMapBindings(); - TBindingTraverser it_binding_all(intermediate, bindingMap, usedBindings, true); - TBindingTraverser it_binding_live(intermediate, bindingMap, usedBindings, false); - TIoMappingTraverser it_iomap(intermediate, bindingMap, usedBindings, infoSink, true); - - // Traverse all (live+dead) code to find explicit bindings, so we can avoid those. - root->traverse(&it_binding_all); - - // Traverse just live code to find things that need implicit bindings. - it_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); - - while (! it_binding_live.functions.empty()) { - TIntermNode* function = it_binding_live.functions.back(); - it_binding_live.functions.pop_back(); - function->traverse(&it_binding_live); + resolver = &defaultResolver; } - // Bind everything that needs a binding and doesn't have one. - root->traverse(&it_iomap); + TVarLiveMap varMap; + TVarGatherTraverser iter_binding_all(intermediate, varMap, true); + TVarGatherTraverser iter_binding_live(intermediate, varMap, false); - return it_iomap.success(); + root->traverse(&iter_binding_all); + iter_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); + + while (!iter_binding_live.functions.empty()) { + TIntermNode* function = iter_binding_live.functions.back(); + iter_binding_live.functions.pop_back(); + function->traverse(&iter_binding_live); + } + // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info. + std::sort(varMap.begin(), varMap.end(), TVarEntryInfo::TOrderByPriority()); + + bool hadError = false; + TResolverAdaptor doResolve(stage, *resolver, infoSink, hadError); + std::for_each(varMap.begin(), varMap.end(), doResolve); + + if (!hadError) { + // sort by id again, so we can use lower bound to find entries + std::sort(varMap.begin(), varMap.end(), TVarEntryInfo::TOrderById()); + TVarSetTraverser iter_iomap(intermediate, varMap); + root->traverse(&iter_iomap); + } + return !hadError; } } // end namespace glslang diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 68dec776..ff47543d 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -55,7 +55,7 @@ public: virtual ~TIoMapper() {} // grow the reflection stage by stage - bool addStage(EShLanguage, TIntermediate&, TInfoSink&); + bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); }; } // end namespace glslang diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index e5e8b4d7..acde8b01 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -445,7 +445,36 @@ private: class TReflection; class TIoMapper; -// Make one TProgram per set of shaders that will get linked together. Add all +// Allows to customize the binding layout after linking. +// All used uniform variables will invoke at least validateBinding. +// If validateBinding returned true then the other resolveBinding +// and resolveSet are invoked to resolve the binding and descriptor +// set index respectively. +// Invocations happen in a particular order: +// 1) var with binding and set already defined +// 2) var with binding but no set defined +// 3) var with set but no binding defined +// 4) var with no binding and no set defined +// +// NOTE: that still limit checks are applied to bindings and sets +// and may result in an error. +class TIoMapResolver +{ +public: + virtual ~TIoMapResolver() {} + + // Should return true if the resulting/current binding would be ok. + // Basic idea is to do aliasing binding checks with this. + virtual bool validateBinding(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0; + // Should return a value >= 0 if the current binding should be overridden. + // Return -1 if the current binding (including no binding) should be kept. + virtual int resolveBinding(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0; + // Should return a value >= 0 if the current set should be overriden. + // Return -1 if the current set (including no set) should be kept. + virtual int resolveSet(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0; +}; + +// 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(). // @@ -485,7 +514,9 @@ public: void dumpReflection(); // I/O mapping: apply base offsets and map live unbound variables - bool mapIO(); + // If resolver is not provided it uses the previous approach + // and respects auto assignment and offsets. + bool mapIO(TIoMapResolver* resolver = NULL); protected: bool linkStage(EShLanguage, EShMessages); From ca7357044708cdc15b46124d72e86727fee09300 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 28 Oct 2016 17:57:25 +0200 Subject: [PATCH 083/130] Add explicit lambda return types, for compilers without C++14 support --- hlsl/hlslParseHelper.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 4b9f7e38..a9e3a107 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -154,7 +154,7 @@ TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const { const int components = txType.getVectorSize(); - const auto selectFormat = [this,&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) { + const auto selectFormat = [this,&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) -> TLayoutFormat { if (intermediate.getNoStorageFormat()) return ElfNone; @@ -260,7 +260,7 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* }; // Helper to complete sequence by adding trailing variable, so we evaluate to the right value. - const auto finishSequence = [&](TIntermSymbol* rhsTmp, const TType& derefType) { + const auto finishSequence = [&](TIntermSymbol* rhsTmp, const TType& derefType) -> TIntermAggregate* { // Add a trailing use of the temp, so the sequence returns the proper value. sequence = intermediate.growAggregate(sequence, intermediate.addSymbol(*rhsTmp)); sequence->setOperator(EOpSequence); @@ -279,7 +279,7 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* }; // helper to create a temporary variable - const auto addTmpVar = [&](const char* name, const TType& derefType) { + const auto addTmpVar = [&](const char* name, const TType& derefType) -> TIntermSymbol* { TVariable* tmpVar = makeInternalVariable(name, derefType); tmpVar->getWritableType().getQualifier().makeTemporary(); return intermediate.addSymbol(*tmpVar, loc); @@ -1440,7 +1440,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (!node || !node->getAsOperator()) return; - const auto clampReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) { + const auto clampReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) -> TIntermTyped* { // Sampler return must always be a vec4, but we can construct a shorter vector result->setType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize())); @@ -2073,7 +2073,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& }; // Return true if this is an imageLoad, which we will change to an image atomic. - const auto isImageParam = [](TIntermTyped* image) { + const auto isImageParam = [](TIntermTyped* image) -> bool { TIntermAggregate* imageAggregate = image->getAsAggregate(); return imageAggregate != nullptr && imageAggregate->getOp() == EOpImageLoad; }; From 1868b14435fb2ddd997e4913a99b3791ce22db47 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 20 Oct 2016 13:07:10 -0600 Subject: [PATCH 084/130] HLSL: implement numthreads for compute shaders This PR adds handling of the numthreads attribute for compute shaders, as well as a general infrastructure for returning attribute values from acceptAttributes, which may be needed in other cases, e.g, unroll(x), or merely to know if some attribute without params was given. A map of enum values from TAttributeType to TIntermAggregate nodes is built and returned. It can be queried with operator[] on the map. In the future there may be a need to also handle strings (e.g, for patchconstantfunc), and those can be easily added into the class if needed. New test is in hlsl.numthreads.comp. --- Test/baseResults/hlsl.numthreads.comp.out | 60 ++++++++++++ Test/hlsl.numthreads.comp | 14 +++ gtests/Hlsl.FromFile.cpp | 1 + hlsl/CMakeLists.txt | 4 +- hlsl/hlslAttributes.cpp | 108 ++++++++++++++++++++++ hlsl/hlslAttributes.h | 96 +++++++++++++++++++ hlsl/hlslGrammar.cpp | 68 ++++++++++---- hlsl/hlslGrammar.h | 6 +- hlsl/hlslParseHelper.cpp | 13 ++- hlsl/hlslParseHelper.h | 4 +- 10 files changed, 351 insertions(+), 23 deletions(-) create mode 100644 Test/baseResults/hlsl.numthreads.comp.out create mode 100644 Test/hlsl.numthreads.comp create mode 100644 hlsl/hlslAttributes.cpp create mode 100644 hlsl/hlslAttributes.h diff --git a/Test/baseResults/hlsl.numthreads.comp.out b/Test/baseResults/hlsl.numthreads.comp.out new file mode 100644 index 00000000..76e95c8f --- /dev/null +++ b/Test/baseResults/hlsl.numthreads.comp.out @@ -0,0 +1,60 @@ +hlsl.numthreads.comp +Shader version: 450 +local_size = (4, 4, 2) +0:? Sequence +0:4 Function Definition: main(vu3; (temp void) +0:4 Function Parameters: +0:4 'tid' (in 3-component vector of uint) +0:9 Function Definition: main_aux1(vu3; (temp void) +0:9 Function Parameters: +0:9 'tid' (in 3-component vector of uint LocalInvocationID) +0:? Linker Objects +0:? 'tid' (in 3-component vector of uint LocalInvocationID) + + +Linked compute stage: + + +Shader version: 450 +local_size = (4, 4, 2) +0:? Sequence +0:4 Function Definition: main(vu3; (temp void) +0:4 Function Parameters: +0:4 'tid' (in 3-component vector of uint) +0:9 Function Definition: main_aux1(vu3; (temp void) +0:9 Function Parameters: +0:9 'tid' (in 3-component vector of uint LocalInvocationID) +0:? Linker Objects +0:? 'tid' (in 3-component vector of uint LocalInvocationID) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 15 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main_aux1" 14 + ExecutionMode 4 LocalSize 4 4 2 + Name 4 "main_aux1" + Name 11 "main(vu3;" + Name 10 "tid" + Name 14 "tid" + Decorate 14(tid) BuiltIn LocalInvocationId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 3 + 8: TypePointer Function 7(ivec3) + 9: TypeFunction 2 8(ptr) + 13: TypePointer Input 7(ivec3) + 14(tid): 13(ptr) Variable Input + 4(main_aux1): 2 Function None 3 + 5: Label + Return + FunctionEnd + 11(main(vu3;): 2 Function None 9 + 10(tid): 8(ptr) FunctionParameter + 12: Label + Return + FunctionEnd diff --git a/Test/hlsl.numthreads.comp b/Test/hlsl.numthreads.comp new file mode 100644 index 00000000..fcc97f37 --- /dev/null +++ b/Test/hlsl.numthreads.comp @@ -0,0 +1,14 @@ + +[numthreads(8,8,1)] +void main(uint3 tid : SV_DispatchThreadID ) +{ +} + +[numTHreaDs(4,4,2)] // case insensitive +void main_aux1(uint3 tid : SV_DispatchThreadID ) +{ +} + +[numthreads(1,4,8)] +void main_aux2(uint3 tid : SV_DispatchThreadID ); + diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 4d2e792f..a7ef178b 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -150,6 +150,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.multiReturn.frag", "main"}, {"hlsl.matrixindex.frag", "main"}, {"hlsl.numericsuffixes.frag", "main"}, + {"hlsl.numthreads.comp", "main_aux1"}, {"hlsl.overload.frag", "PixelShaderFunction"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index c7537e27..ec5f1a56 100755 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -1,4 +1,5 @@ set(SOURCES + hlslAttributes.cpp hlslParseHelper.cpp hlslScanContext.cpp hlslOpMap.cpp @@ -6,7 +7,8 @@ set(SOURCES hlslGrammar.cpp hlslParseables.cpp) -set(HEADERS + set(HEADERS + hlslAttributes.h hlslParseHelper.h hlslTokens.h hlslScanContext.h diff --git a/hlsl/hlslAttributes.cpp b/hlsl/hlslAttributes.cpp new file mode 100644 index 00000000..957f282e --- /dev/null +++ b/hlsl/hlslAttributes.cpp @@ -0,0 +1,108 @@ +// +//Copyright (C) 2016 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 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. +// + +#include "hlslAttributes.h" +#include +#include + +namespace glslang { + // Map the given string to an attribute enum from TAttributeType, + // or EatNone if invalid. + TAttributeType TAttributeMap::attributeFromName(const TString& name) + { + // These are case insensitive. + TString lowername(name); + std::transform(lowername.begin(), lowername.end(), lowername.begin(), ::tolower); + + if (lowername == "allow_uav_condition") + return EatAllow_uav_condition; + else if (lowername == "branch") + return EatBranch; + else if (lowername == "call") + return EatCall; + else if (lowername == "domain") + return EatDomain; + else if (lowername == "earlydepthstencil") + return EatEarlydepthstencil; + else if (lowername == "fastopt") + return EatFastopt; + else if (lowername == "flatten") + return EatFlatten; + else if (lowername == "forcecase") + return EatForcecase; + else if (lowername == "instance") + return EatInstance; + else if (lowername == "maxtessfactor") + return EatMaxtessfactor; + else if (lowername == "numthreads") + return EatNumthreads; + else if (lowername == "outputcontrolpoints") + return EatOutputcontrolpoints; + else if (lowername == "outputtopology") + return EatOutputtopology; + else if (lowername == "partitioning") + return EatPartitioning; + else if (lowername == "patchconstantfunc") + return EatPatchconstantfunc; + else if (lowername == "unroll") + return EatUnroll; + else + return EatNone; + } + + // Look up entry, inserting if it's not there, and if name is a valid attribute name + // as known by attributeFromName. + TAttributeType TAttributeMap::setAttribute(const TString* name, TIntermAggregate* value) + { + if (name == nullptr) + return EatNone; + + const TAttributeType attr = attributeFromName(*name); + + if (attr != EatNone) + attributes[attr] = value; + + return attr; + } + + // Look up entry (const version), and return aggregate node. This cannot change the map. + const TIntermAggregate* TAttributeMap::operator[](TAttributeType attr) const + { + const auto entry = attributes.find(attr); + + return (entry == attributes.end()) ? nullptr : entry->second; + } + +} // end namespace glslang diff --git a/hlsl/hlslAttributes.h b/hlsl/hlslAttributes.h new file mode 100644 index 00000000..da5ee5ef --- /dev/null +++ b/hlsl/hlslAttributes.h @@ -0,0 +1,96 @@ +// +//Copyright (C) 2016 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 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. +// + +#ifndef HLSLATTRIBUTES_H_ +#define HLSLATTRIBUTES_H_ + +#include +#include +#include "hlslScanContext.h" +#include "../glslang/Include/Common.h" + +namespace glslang { + enum TAttributeType { + EatNone, + EatAllow_uav_condition, + EatBranch, + EatCall, + EatDomain, + EatEarlydepthstencil, + EatFastopt, + EatFlatten, + EatForcecase, + EatInstance, + EatMaxtessfactor, + EatNumthreads, + EatOutputcontrolpoints, + EatOutputtopology, + EatPartitioning, + EatPatchconstantfunc, + EatUnroll, + }; +} + +namespace std { + // Allow use of TAttributeType enum in hash_map without calling code having to cast. + template <> struct hash { + std::size_t operator()(glslang::TAttributeType attr) const { + return std::hash()(int(attr)); + } + }; +} // end namespace std + +namespace glslang { + class TIntermAggregate; + + class TAttributeMap { + public: + // Search for and potentially add the attribute into the map. Return the + // attribute type enum for it, if found, else EatNone. + TAttributeType setAttribute(const TString* name, TIntermAggregate* value); + + // Const lookup: search for (but do not modify) the attribute in the map. + const TIntermAggregate* operator[](TAttributeType) const; + + protected: + // Find an attribute enum given its name. + static TAttributeType attributeFromName(const TString&); + + std::unordered_map attributes; + }; +} // end namespace glslang + + +#endif // HLSLATTRIBUTES_H_ diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 89465bff..a0cd4161 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -53,6 +53,7 @@ #include "hlslTokens.h" #include "hlslGrammar.h" +#include "hlslAttributes.h" namespace glslang { @@ -268,6 +269,10 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) node = nullptr; bool list = false; + // attributes + TAttributeMap attributes; + acceptAttributes(attributes); + // typedef bool typedefDecl = acceptTokenClass(EHTokTypedef); @@ -302,7 +307,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) parseContext.error(idToken.loc, "function body can't be in a declarator list", "{", ""); if (typedefDecl) parseContext.error(idToken.loc, "function body can't be in a typedef", "{", ""); - return acceptFunctionDefinition(function, node); + return acceptFunctionDefinition(function, node, attributes); } else { if (typedefDecl) parseContext.error(idToken.loc, "function typedefs not implemented", "{", ""); @@ -1594,13 +1599,13 @@ bool HlslGrammar::acceptParameterDeclaration(TFunction& function) // Do the work to create the function definition in addition to // parsing the body (compound_statement). -bool HlslGrammar::acceptFunctionDefinition(TFunction& function, TIntermNode*& node) +bool HlslGrammar::acceptFunctionDefinition(TFunction& function, TIntermNode*& node, const TAttributeMap& attributes) { TFunction& functionDeclarator = parseContext.handleFunctionDeclarator(token.loc, function, false /* not prototype */); TSourceLoc loc = token.loc; // This does a pushScope() - node = parseContext.handleFunctionDefinition(loc, functionDeclarator); + node = parseContext.handleFunctionDefinition(loc, functionDeclarator, attributes); // compound_statement TIntermNode* functionBody = nullptr; @@ -2251,7 +2256,8 @@ bool HlslGrammar::acceptStatement(TIntermNode*& statement) statement = nullptr; // attributes - acceptAttributes(); + TAttributeMap attributes; + acceptAttributes(attributes); // attributed_statement switch (peek()) { @@ -2324,42 +2330,68 @@ bool HlslGrammar::acceptStatement(TIntermNode*& statement) // | FLATTEN // | FORCECASE // | CALL +// | DOMAIN +// | EARLYDEPTHSTENCIL +// | INSTANCE +// | MAXTESSFACTOR +// | OUTPUTCONTROLPOINTS +// | OUTPUTTOPOLOGY +// | PARTITIONING +// | PATCHCONSTANTFUNC +// | NUMTHREADS LEFT_PAREN x_size, y_size,z z_size RIGHT_PAREN // -void HlslGrammar::acceptAttributes() +void HlslGrammar::acceptAttributes(TAttributeMap& attributes) { - // For now, accept the [ XXX(X) ] syntax, but drop. + // For now, accept the [ XXX(X) ] syntax, but drop all but + // numthreads, which is used to set the CS local size. // TODO: subset to correct set? Pass on? do { + HlslToken idToken; + // LEFT_BRACKET? if (! acceptTokenClass(EHTokLeftBracket)) return; // attribute - if (peekTokenClass(EHTokIdentifier)) { - // 'token.string' is the attribute - advanceToken(); + if (acceptIdentifier(idToken)) { + // 'idToken.string' is the attribute } else if (! peekTokenClass(EHTokRightBracket)) { expected("identifier"); advanceToken(); } - // (x) + TIntermAggregate* literals = nullptr; + + // (x, ...) if (acceptTokenClass(EHTokLeftParen)) { + literals = new TIntermAggregate; + TIntermTyped* node; - if (! acceptLiteral(node)) - expected("literal"); - // 'node' has the literal in it + bool expectingLiteral = false; + + while (acceptLiteral(node)) { + expectingLiteral = false; + literals->getSequence().push_back(node); + if (acceptTokenClass(EHTokComma)) + expectingLiteral = true; + } + + // 'literals' is an aggregate with the literals in it if (! acceptTokenClass(EHTokRightParen)) expected(")"); + if (expectingLiteral || literals->getSequence().empty()) + expected("literal"); } // RIGHT_BRACKET - if (acceptTokenClass(EHTokRightBracket)) - continue; - - expected("]"); - return; + if (!acceptTokenClass(EHTokRightBracket)) { + expected("]"); + return; + } + // Add any values we found into the attribute map. This accepts + // (and ignores) values not mapping to a known TAttributeType; + attributes.setAttribute(idToken.string, literals); } while (true); } diff --git a/hlsl/hlslGrammar.h b/hlsl/hlslGrammar.h index 992eb5e9..c3e42f67 100755 --- a/hlsl/hlslGrammar.h +++ b/hlsl/hlslGrammar.h @@ -43,6 +43,8 @@ namespace glslang { + class TAttributeMap; // forward declare + // Should just be the grammar aspect of HLSL. // Described in more detail in hlslGrammar.cpp. @@ -80,7 +82,7 @@ namespace glslang { bool acceptStructDeclarationList(TTypeList*&); bool acceptFunctionParameters(TFunction&); bool acceptParameterDeclaration(TFunction&); - bool acceptFunctionDefinition(TFunction&, TIntermNode*&); + bool acceptFunctionDefinition(TFunction&, TIntermNode*&, const TAttributeMap&); bool acceptParenExpression(TIntermTyped*&); bool acceptExpression(TIntermTyped*&); bool acceptInitializer(TIntermTyped*&); @@ -98,7 +100,7 @@ namespace glslang { bool acceptScopedStatement(TIntermNode*&); bool acceptScopedCompoundStatement(TIntermNode*&); bool acceptNestedStatement(TIntermNode*&); - void acceptAttributes(); + void acceptAttributes(TAttributeMap&); bool acceptSelectionStatement(TIntermNode*&); bool acceptSwitchStatement(TIntermNode*&); bool acceptIterationStatement(TIntermNode*&); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index a9e3a107..cf97ec7e 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -37,6 +37,7 @@ #include "hlslParseHelper.h" #include "hlslScanContext.h" #include "hlslGrammar.h" +#include "hlslAttributes.h" #include "../glslang/MachineIndependent/Scan.h" #include "../glslang/MachineIndependent/preprocessor/PpContext.h" @@ -1045,7 +1046,8 @@ TFunction& HlslParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFu // Handle seeing the function prototype in front of a function definition in the grammar. // The body is handled after this function returns. // -TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& loc, TFunction& function) +TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& loc, TFunction& function, + const TAttributeMap& attributes) { currentCaller = function.getMangledName(); TSymbol* symbol = symbolTable.find(function.getMangledName()); @@ -1134,6 +1136,15 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l controlFlowNestingLevel = 0; postMainReturn = false; + // Handle function attributes + const TIntermAggregate* numThreadliterals = attributes[EatNumthreads]; + if (numThreadliterals != nullptr && inEntryPoint) { + const TIntermSequence& sequence = numThreadliterals->getSequence(); + + for (int lid = 0; lid < int(sequence.size()); ++lid) + intermediate.setLocalSize(lid, sequence[lid]->getAsConstantUnion()->getConstArray()[0].getIConst()); + } + return paramNodes; } diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 2eeba5ac..8410c344 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -41,6 +41,8 @@ namespace glslang { +class TAttributeMap; // forward declare + class HlslParseContext : public TParseContextBase { public: HlslParseContext(TSymbolTable&, TIntermediate&, bool parsingBuiltins, @@ -69,7 +71,7 @@ public: TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field); void assignLocations(TVariable& variable); TFunction& handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype); - TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&); + TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&, const TAttributeMap&); void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node); void remapEntryPointIO(TFunction& function); void remapNonEntryPointIO(TFunction& function); From 3226b0835ca34e363fc66939e3a20b8753e07bd7 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 26 Oct 2016 19:18:55 -0600 Subject: [PATCH 085/130] HLSL: Add min*{float,int,uint} types These HLSL types are guaranteed to have at least the given number of bits, but may have more. min{16,10}float is mapped to EbtFloat at medium precision -> SPIRV RelaxedPrecision min{16,12}int and min16uint are mapped to mediump -> SPIR-V RelaxedPrecision --- Test/baseResults/hlsl.mintypes.frag.out | 222 ++++++++++++++++++++++++ Test/hlsl.mintypes.frag | 49 ++++++ gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 95 +++++++++- hlsl/hlslScanContext.cpp | 43 ++++- hlsl/hlslTokens.h | 20 +++ 6 files changed, 428 insertions(+), 2 deletions(-) create mode 100644 Test/baseResults/hlsl.mintypes.frag.out create mode 100644 Test/hlsl.mintypes.frag diff --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out new file mode 100644 index 00000000..34d326e0 --- /dev/null +++ b/Test/baseResults/hlsl.mintypes.frag.out @@ -0,0 +1,222 @@ +hlsl.mintypes.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +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 Sequence +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:48 Color: direct index for structure (temp 4-component vector of float) +0:48 'psout' (temp structure{temp 4-component vector of float Color}) +0:48 Constant: +0:48 0 (const int) +0:48 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform mediump float b1a, layout(offset=4 ) uniform mediump float b1b}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +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 Sequence +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:48 Color: direct index for structure (temp 4-component vector of float) +0:48 'psout' (temp structure{temp 4-component vector of float Color}) +0:48 Constant: +0:48 0 (const int) +0:48 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform mediump float b1a, layout(offset=4 ) uniform mediump float b1b}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 65 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 58 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "mf16_2" + Name 12 "mf16" + Name 16 "mf10_2" + Name 18 "mf10" + Name 25 "mi16_2" + Name 28 "mi16" + Name 32 "mi12_2" + Name 34 "mi12" + Name 41 "mu16_2" + Name 44 "mu16" + Name 49 "PS_OUTPUT" + MemberName 49(PS_OUTPUT) 0 "Color" + Name 51 "psout" + Name 58 "Color" + Name 62 "$Global" + MemberName 62($Global) 0 "b1a" + MemberName 62($Global) 1 "b1b" + Name 64 "" + Decorate 9(mf16_2) RelaxedPrecision + Decorate 10 RelaxedPrecision + Decorate 12(mf16) RelaxedPrecision + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 15 RelaxedPrecision + Decorate 16(mf10_2) RelaxedPrecision + Decorate 17 RelaxedPrecision + Decorate 18(mf10) RelaxedPrecision + Decorate 19 RelaxedPrecision + Decorate 20 RelaxedPrecision + Decorate 21 RelaxedPrecision + Decorate 25(mi16_2) RelaxedPrecision + Decorate 26 RelaxedPrecision + Decorate 28(mi16) RelaxedPrecision + Decorate 29 RelaxedPrecision + Decorate 30 RelaxedPrecision + Decorate 31 RelaxedPrecision + Decorate 32(mi12_2) RelaxedPrecision + Decorate 33 RelaxedPrecision + Decorate 34(mi12) RelaxedPrecision + Decorate 35 RelaxedPrecision + Decorate 36 RelaxedPrecision + Decorate 37 RelaxedPrecision + Decorate 41(mu16_2) RelaxedPrecision + Decorate 42 RelaxedPrecision + Decorate 44(mu16) RelaxedPrecision + Decorate 45 RelaxedPrecision + Decorate 46 RelaxedPrecision + Decorate 47 RelaxedPrecision + Decorate 58(Color) Location 0 + MemberDecorate 62($Global) 0 RelaxedPrecision + MemberDecorate 62($Global) 1 RelaxedPrecision + Decorate 62($Global) Block + Decorate 64 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypePointer Function 7(fvec2) + 11: TypePointer Function 6(float) + 22: TypeInt 32 1 + 23: TypeVector 22(int) 2 + 24: TypePointer Function 23(ivec2) + 27: TypePointer Function 22(int) + 38: TypeInt 32 0 + 39: TypeVector 38(int) 2 + 40: TypePointer Function 39(ivec2) + 43: TypePointer Function 38(int) + 48: TypeVector 6(float) 4 + 49(PS_OUTPUT): TypeStruct 48(fvec4) + 50: TypePointer Function 49(PS_OUTPUT) + 52: 22(int) Constant 0 + 53: 6(float) Constant 0 + 54: 48(fvec4) ConstantComposite 53 53 53 53 + 55: TypePointer Function 48(fvec4) + 57: TypePointer Output 48(fvec4) + 58(Color): 57(ptr) Variable Output + 62($Global): TypeStruct 6(float) 6(float) + 63: TypePointer Uniform 62($Global) + 64: 63(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 9(mf16_2): 8(ptr) Variable Function + 12(mf16): 11(ptr) Variable Function + 16(mf10_2): 8(ptr) Variable Function + 18(mf10): 11(ptr) Variable Function + 25(mi16_2): 24(ptr) Variable Function + 28(mi16): 27(ptr) Variable Function + 32(mi12_2): 24(ptr) Variable Function + 34(mi12): 27(ptr) Variable Function + 41(mu16_2): 40(ptr) Variable Function + 44(mu16): 43(ptr) Variable Function + 51(psout): 50(ptr) Variable Function + 10: 7(fvec2) Load 9(mf16_2) + 13: 6(float) Load 12(mf16) + 14: 7(fvec2) CompositeConstruct 13 13 + 15: 7(fvec2) FAdd 10 14 + 17: 7(fvec2) Load 16(mf10_2) + 19: 6(float) Load 18(mf10) + 20: 7(fvec2) CompositeConstruct 19 19 + 21: 7(fvec2) FAdd 17 20 + 26: 23(ivec2) Load 25(mi16_2) + 29: 22(int) Load 28(mi16) + 30: 23(ivec2) CompositeConstruct 29 29 + 31: 23(ivec2) IAdd 26 30 + 33: 23(ivec2) Load 32(mi12_2) + 35: 22(int) Load 34(mi12) + 36: 23(ivec2) CompositeConstruct 35 35 + 37: 23(ivec2) IAdd 33 36 + 42: 39(ivec2) Load 41(mu16_2) + 45: 38(int) Load 44(mu16) + 46: 39(ivec2) CompositeConstruct 45 45 + 47: 39(ivec2) IAdd 42 46 + 56: 55(ptr) AccessChain 51(psout) 52 + Store 56 54 + 59: 55(ptr) AccessChain 51(psout) 52 + 60: 48(fvec4) Load 59 + Store 58(Color) 60 + Return + FunctionEnd diff --git a/Test/hlsl.mintypes.frag b/Test/hlsl.mintypes.frag new file mode 100644 index 00000000..ad47e68e --- /dev/null +++ b/Test/hlsl.mintypes.frag @@ -0,0 +1,49 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform min16float b1a, b1b; + +PS_OUTPUT main() +{ + min16float mf16; + min16float1 mf16_1; + min16float2 mf16_2; + min16float3 mf16_3; + min16float4 mf16_4; + + min10float mf10; + min10float1 mf10_1; + min10float2 mf10_2; + min10float3 mf10_3; + min10float4 mf12_4; + + min16int mi16; + min16int1 mi16_1; + min16int2 mi16_2; + min16int3 mi16_3; + min16int4 mi16_4; + + min12int mi12; + min12int1 mi12_1; + min12int2 mi12_2; + min12int3 mi12_3; + min12int4 mi12_4; + + min16uint mu16; + min16uint1 mu16_1; + min16uint2 mu16_2; + min16uint3 mu16_3; + min16uint4 mu16_4; + + mf16_2 + mf16; + mf10_2 + mf10; + mi16_2 + mi16; + mi12_2 + mi12; + mu16_2 + mu16; + + PS_OUTPUT psout; + psout.Color = 0; + return psout; +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 4d2e792f..9a6072a3 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -146,6 +146,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.logical.unary.frag", "main"}, {"hlsl.logical.binary.frag", "main"}, {"hlsl.logical.binary.vec.frag", "main"}, + {"hlsl.mintypes.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, {"hlsl.multiReturn.frag", "main"}, {"hlsl.matrixindex.frag", "main"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 89465bff..4b2d6a23 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -465,7 +465,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type) // whatever comes from acceptQualifier. assert(qualifier.layoutFormat == ElfNone); qualifier.layoutFormat = type.getQualifier().layoutFormat; - + qualifier.precision = type.getQualifier().precision; type.getQualifier() = qualifier; } @@ -967,6 +967,14 @@ bool HlslGrammar::acceptTextureType(TType& type) // Otherwise, return false, and don't advance bool HlslGrammar::acceptType(TType& type) { + // Basic types for min* types, broken out here in case of future + // changes, e.g, to use native halfs. + static const TBasicType min16float_bt = EbtFloat; + static const TBasicType min10float_bt = EbtFloat; + static const TBasicType min16int_bt = EbtInt; + static const TBasicType min12int_bt = EbtInt; + static const TBasicType min16uint_bt = EbtUint; + switch (peek()) { case EHTokVector: return acceptVectorTemplateType(type); @@ -1118,6 +1126,91 @@ bool HlslGrammar::acceptType(TType& type) new(&type) TType(EbtBool, EvqTemporary, 4); break; + case EHTokMin16float: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium); + break; + case EHTokMin16float1: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium); + type.makeVector(); + break; + case EHTokMin16float2: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 2); + break; + case EHTokMin16float3: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 3); + break; + case EHTokMin16float4: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 4); + break; + + case EHTokMin10float: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium); + break; + case EHTokMin10float1: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium); + type.makeVector(); + break; + case EHTokMin10float2: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 2); + break; + case EHTokMin10float3: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 3); + break; + case EHTokMin10float4: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 4); + break; + + case EHTokMin16int: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium); + break; + case EHTokMin16int1: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium); + type.makeVector(); + break; + case EHTokMin16int2: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 2); + break; + case EHTokMin16int3: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 3); + break; + case EHTokMin16int4: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 4); + break; + + case EHTokMin12int: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium); + break; + case EHTokMin12int1: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium); + type.makeVector(); + break; + case EHTokMin12int2: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 2); + break; + case EHTokMin12int3: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 3); + break; + case EHTokMin12int4: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 4); + break; + + case EHTokMin16uint: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium); + break; + case EHTokMin16uint1: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium); + type.makeVector(); + break; + case EHTokMin16uint2: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 2); + break; + case EHTokMin16uint3: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 3); + break; + case EHTokMin16uint4: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 4); + break; + case EHTokInt1x1: new(&type) TType(EbtInt, EvqTemporary, 0, 1, 1); break; diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp index f25bdd8c..e7cd1fcf 100755 --- a/hlsl/hlslScanContext.cpp +++ b/hlsl/hlslScanContext.cpp @@ -136,7 +136,7 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["min10float"] = EHTokMin10float; (*KeywordMap)["min16int"] = EHTokMin16int; (*KeywordMap)["min12int"] = EHTokMin12int; - (*KeywordMap)["min16uint"] = EHTokMin16int; + (*KeywordMap)["min16uint"] = EHTokMin16uint; (*KeywordMap)["bool1"] = EHTokBool1; (*KeywordMap)["bool2"] = EHTokBool2; @@ -159,6 +159,27 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["uint3"] = EHTokUint3; (*KeywordMap)["uint4"] = EHTokUint4; + (*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)["int1x1"] = EHTokInt1x1; (*KeywordMap)["int1x2"] = EHTokInt1x2; (*KeywordMap)["int1x3"] = EHTokInt1x3; @@ -518,6 +539,26 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokUint2: case EHTokUint3: case EHTokUint4: + case EHTokMin16float1: + case EHTokMin16float2: + case EHTokMin16float3: + case EHTokMin16float4: + case EHTokMin10float1: + case EHTokMin10float2: + case EHTokMin10float3: + case EHTokMin10float4: + case EHTokMin16int1: + case EHTokMin16int2: + case EHTokMin16int3: + case EHTokMin16int4: + case EHTokMin12int1: + case EHTokMin12int2: + case EHTokMin12int3: + case EHTokMin12int4: + case EHTokMin16uint1: + case EHTokMin16uint2: + case EHTokMin16uint3: + case EHTokMin16uint4: // matrix types case EHTokInt1x1: diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h index 2994001d..d634c8ee 100755 --- a/hlsl/hlslTokens.h +++ b/hlsl/hlslTokens.h @@ -108,6 +108,26 @@ enum EHlslTokenClass { EHTokUint2, EHTokUint3, EHTokUint4, + EHTokMin16float1, + EHTokMin16float2, + EHTokMin16float3, + EHTokMin16float4, + EHTokMin10float1, + EHTokMin10float2, + EHTokMin10float3, + EHTokMin10float4, + EHTokMin16int1, + EHTokMin16int2, + EHTokMin16int3, + EHTokMin16int4, + EHTokMin12int1, + EHTokMin12int2, + EHTokMin12int3, + EHTokMin12int4, + EHTokMin16uint1, + EHTokMin16uint2, + EHTokMin16uint3, + EHTokMin16uint4, // matrix types EHTokInt1x1, From e301f67828efa18b37ee3d2144951ab434402767 Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 31 Oct 2016 17:02:45 -0400 Subject: [PATCH 086/130] Use std::atoi instead of std::stoi Some Android cross cross-compilers don't have std::stoi. E.g. i686-linux-android-g++ from Android NDK r10e don't have std::stoi. --- StandAlone/ResourceLimits.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index 10ede096..e22ec801 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -263,7 +263,7 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) return; } - const int value = std::stoi(valueStr); + const int value = std::atoi(valueStr.c_str()); if (tokenStr == "MaxLights") resources->maxLights = value; From 5b2d667fea549481e534033bc046caf2a13b0d8f Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Tue, 1 Nov 2016 08:51:46 -0600 Subject: [PATCH 087/130] Fix build warnings in remapper, re-indent for glslang standard This has no functional changes. --- glslang/MachineIndependent/iomapper.cpp | 233 +++++++++++++----------- 1 file changed, 122 insertions(+), 111 deletions(-) diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 8ea4506f..2ee6caef 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -132,7 +132,7 @@ public: } } - private: +private: TVarLiveMap& varLiveList; }; @@ -174,15 +174,16 @@ struct TResolverAdaptor , error(e) { } + inline void operator()(TVarEntryInfo& ent) { - bool isValid = resolver.validateBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); + const bool isValid = resolver.validateBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); if (isValid) { ent.newBinding = resolver.resolveBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); ent.newSet = resolver.resolveSet(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); if (ent.newBinding != -1) { - if (ent.newBinding >= TQualifier::layoutBindingEnd) { + if (ent.newBinding >= int(TQualifier::layoutBindingEnd)) { TString err = "mapped binding out of range: " + ent.symbol->getName(); infoSink.info.message(EPrefixInternalError, err.c_str()); @@ -190,7 +191,7 @@ struct TResolverAdaptor } } if (ent.newSet != -1) { - if (ent.newSet >= TQualifier::layoutSetEnd) { + if (ent.newSet >= int(TQualifier::layoutSetEnd)) { TString err = "mapped set out of range: " + ent.symbol->getName(); infoSink.info.message(EPrefixInternalError, err.c_str()); @@ -203,6 +204,7 @@ struct TResolverAdaptor error = true; } } + EShLanguage stage; TIoMapResolver& resolver; TInfoSink& infoSink; @@ -218,107 +220,114 @@ struct TResolverAdaptor */ struct TDefaultIoResolver : public glslang::TIoMapResolver { - int baseSamplerBinding; - int baseTextureBinding; - int baseUboBinding; - bool doAutoMapping; - typedef std::vector TSlotSet; - typedef std::unordered_map TSlotSetMap; - TSlotSetMap slots; - TSlotSet::iterator findSlot(int set, int slot) - { - return std::lower_bound(slots[set].begin(), slots[set].end(), slot); - } - bool checkEmpty(int set, int slot) - { - TSlotSet::iterator at = findSlot(set, slot); - return !(at != slots[set].end() && *at == slot); - } - int reserveSlot(int set, int slot) - { - TSlotSet::iterator at = findSlot(set, slot); - slots[set].insert(at, slot); - return slot; - } - int getFreeSlot(int set, int base) - { - TSlotSet::iterator at = findSlot(set, base); - if (at == slots[set].end()) - return reserveSlot(set, base); + int baseSamplerBinding; + int baseTextureBinding; + int baseUboBinding; + bool doAutoMapping; + typedef std::vector TSlotSet; + typedef std::unordered_map TSlotSetMap; + TSlotSetMap slots; - // look in locksteps, if they not match, then there is a free slot - for (; at != slots[set].end(); ++at, ++base) - if (*at != base) - break; - return reserveSlot(set, base); - } - bool validateBinding(EShLanguage stage, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override - { - if (type.getQualifier().hasBinding()) { - int set; - if (type.getQualifier().hasSet()) - set = type.getQualifier().layoutSet; - else - set = 0; - - if (type.getBasicType() == glslang::EbtSampler) { - const glslang::TSampler& sampler = type.getSampler(); - if (sampler.isPureSampler()) - return checkEmpty(set, baseSamplerBinding + type.getQualifier().layoutBinding); - - if (sampler.isTexture()) - return checkEmpty(set, baseTextureBinding + type.getQualifier().layoutBinding); - } - - if (type.getQualifier().isUniformOrBuffer()) - return checkEmpty(set, baseUboBinding + type.getQualifier().layoutBinding); - } - return true; - } - int resolveBinding(EShLanguage stage, const char* /*name*/, const glslang::TType& type, bool is_live) override - { - int set; - if (type.getQualifier().hasSet()) - set = type.getQualifier().layoutSet; - else - set = 0; - - if (type.getQualifier().hasBinding()) { - if (type.getBasicType() == glslang::EbtSampler) { - const glslang::TSampler& sampler = type.getSampler(); - if (sampler.isPureSampler()) - return reserveSlot(set, baseSamplerBinding + type.getQualifier().layoutBinding); - - if (sampler.isTexture()) - return reserveSlot(set, baseTextureBinding + type.getQualifier().layoutBinding); - } - - if (type.getQualifier().isUniformOrBuffer()) - return reserveSlot(set, baseUboBinding + type.getQualifier().layoutBinding); - } else if (is_live && doAutoMapping) { - // find free slot, the caller did make sure it passes all vars with binding - // first and now all are passed that do not have a binding and needs one - if (type.getBasicType() == glslang::EbtSampler) { - const glslang::TSampler& sampler = type.getSampler(); - if (sampler.isPureSampler()) - return getFreeSlot(set, baseSamplerBinding); - - if (sampler.isTexture()) - return getFreeSlot(set, baseTextureBinding); - } - - if (type.getQualifier().isUniformOrBuffer()) - return getFreeSlot(set, baseUboBinding); + TSlotSet::iterator findSlot(int set, int slot) + { + return std::lower_bound(slots[set].begin(), slots[set].end(), slot); } - return -1; - } - int resolveSet(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override - { - if (type.getQualifier().hasSet()) - return type.getQualifier().layoutSet; - return 0; - } + bool checkEmpty(int set, int slot) + { + TSlotSet::iterator at = findSlot(set, slot); + return !(at != slots[set].end() && *at == slot); + } + + int reserveSlot(int set, int slot) + { + TSlotSet::iterator at = findSlot(set, slot); + slots[set].insert(at, slot); + return slot; + } + + int getFreeSlot(int set, int base) + { + TSlotSet::iterator at = findSlot(set, base); + if (at == slots[set].end()) + return reserveSlot(set, base); + + // look in locksteps, if they not match, then there is a free slot + for (; at != slots[set].end(); ++at, ++base) + if (*at != base) + break; + return reserveSlot(set, base); + } + + bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override + { + if (type.getQualifier().hasBinding()) { + int set; + if (type.getQualifier().hasSet()) + set = type.getQualifier().layoutSet; + else + set = 0; + + if (type.getBasicType() == glslang::EbtSampler) { + const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return checkEmpty(set, baseSamplerBinding + type.getQualifier().layoutBinding); + + if (sampler.isTexture()) + return checkEmpty(set, baseTextureBinding + type.getQualifier().layoutBinding); + } + + if (type.getQualifier().isUniformOrBuffer()) + return checkEmpty(set, baseUboBinding + type.getQualifier().layoutBinding); + } + return true; + } + + int resolveBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool is_live) override + { + int set; + if (type.getQualifier().hasSet()) + set = type.getQualifier().layoutSet; + else + set = 0; + + if (type.getQualifier().hasBinding()) { + if (type.getBasicType() == glslang::EbtSampler) { + const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return reserveSlot(set, baseSamplerBinding + type.getQualifier().layoutBinding); + + if (sampler.isTexture()) + return reserveSlot(set, baseTextureBinding + type.getQualifier().layoutBinding); + } + + if (type.getQualifier().isUniformOrBuffer()) + return reserveSlot(set, baseUboBinding + type.getQualifier().layoutBinding); + } else if (is_live && doAutoMapping) { + // find free slot, the caller did make sure it passes all vars with binding + // first and now all are passed that do not have a binding and needs one + if (type.getBasicType() == glslang::EbtSampler) { + const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return getFreeSlot(set, baseSamplerBinding); + + if (sampler.isTexture()) + return getFreeSlot(set, baseTextureBinding); + } + + if (type.getQualifier().isUniformOrBuffer()) + return getFreeSlot(set, baseUboBinding); + } + + return -1; + } + + int resolveSet(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override + { + if (type.getQualifier().hasSet()) + return type.getQualifier().layoutSet; + return 0; + } }; // Map I/O variables to provided offsets, and make bindings for @@ -345,12 +354,12 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi // if no resolver is provided, use the default resolver with the given shifts and auto map settings TDefaultIoResolver defaultResolver; if (resolver == NULL) { - defaultResolver.baseSamplerBinding = intermediate.getShiftSamplerBinding(); - defaultResolver.baseTextureBinding = intermediate.getShiftTextureBinding(); - defaultResolver.baseUboBinding = intermediate.getShiftUboBinding(); - defaultResolver.doAutoMapping = intermediate.getAutoMapBindings(); + defaultResolver.baseSamplerBinding = intermediate.getShiftSamplerBinding(); + defaultResolver.baseTextureBinding = intermediate.getShiftTextureBinding(); + defaultResolver.baseUboBinding = intermediate.getShiftUboBinding(); + defaultResolver.doAutoMapping = intermediate.getAutoMapBindings(); - resolver = &defaultResolver; + resolver = &defaultResolver; } TVarLiveMap varMap; @@ -365,6 +374,7 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi iter_binding_live.functions.pop_back(); function->traverse(&iter_binding_live); } + // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info. std::sort(varMap.begin(), varMap.end(), TVarEntryInfo::TOrderByPriority()); @@ -373,11 +383,12 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi std::for_each(varMap.begin(), varMap.end(), doResolve); if (!hadError) { - // sort by id again, so we can use lower bound to find entries - std::sort(varMap.begin(), varMap.end(), TVarEntryInfo::TOrderById()); - TVarSetTraverser iter_iomap(intermediate, varMap); - root->traverse(&iter_iomap); + // sort by id again, so we can use lower bound to find entries + std::sort(varMap.begin(), varMap.end(), TVarEntryInfo::TOrderById()); + TVarSetTraverser iter_iomap(intermediate, varMap); + root->traverse(&iter_iomap); } + return !hadError; } From 9088be4c0738b4dd4dd3bc91aac5eeed602f47a5 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Tue, 1 Nov 2016 10:31:42 -0600 Subject: [PATCH 088/130] Add UAV (image) binding offset and HLSL register support This PR adds: 1. The "u" register class for RW* objects. 2. --shift-image-bindings (== --sib), analogous to --shift-texture-bindings etc. 3. Case insensitive reg classes. 4. Tests for above. --- StandAlone/StandAlone.cpp | 10 ++ Test/baseResults/hlsl.rw.register.frag.out | 158 ++++++++++++++++++ Test/baseResults/spv.rw.autoassign.frag.out | 70 ++++++++ Test/hlsl.rw.register.frag | 18 ++ Test/spv.rw.autoassign.frag | 18 ++ glslang/MachineIndependent/ShaderLang.cpp | 1 + glslang/MachineIndependent/iomapper.cpp | 13 +- .../MachineIndependent/localintermediate.h | 4 + glslang/Public/ShaderLang.h | 1 + gtests/Hlsl.FromFile.cpp | 1 + gtests/Spv.FromFile.cpp | 16 +- gtests/TestFixture.h | 5 +- hlsl/hlslParseHelper.cpp | 4 +- 13 files changed, 309 insertions(+), 10 deletions(-) create mode 100644 Test/baseResults/hlsl.rw.register.frag.out create mode 100644 Test/baseResults/spv.rw.autoassign.frag.out create mode 100644 Test/hlsl.rw.register.frag create mode 100644 Test/spv.rw.autoassign.frag diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 0ac72d3b..377e7cb3 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -164,6 +164,7 @@ const char* shaderStageName = nullptr; std::array baseSamplerBinding; std::array baseTextureBinding; +std::array baseImageBinding; std::array baseUboBinding; // @@ -252,6 +253,7 @@ void ProcessArguments(int argc, char* argv[]) { baseSamplerBinding.fill(0); baseTextureBinding.fill(0); + baseImageBinding.fill(0); baseUboBinding.fill(0); ExecutableName = argv[0]; @@ -279,6 +281,10 @@ void ProcessArguments(int argc, char* argv[]) lowerword == "shift-texture-binding" || lowerword == "stb") { ProcessBindingBase(argc, argv, baseTextureBinding); + } else if (lowerword == "shift-image-bindings" || // synonyms + lowerword == "shift-image-binding" || + lowerword == "sib") { + ProcessBindingBase(argc, argv, baseImageBinding); } else if (lowerword == "shift-ubo-bindings" || // synonyms lowerword == "shift-ubo-binding" || lowerword == "sub") { @@ -544,6 +550,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setShiftSamplerBinding(baseSamplerBinding[compUnit.stage]); shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]); + shader->setShiftImageBinding(baseImageBinding[compUnit.stage]); shader->setShiftUboBinding(baseUboBinding[compUnit.stage]); shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); @@ -941,6 +948,9 @@ void usage() " --shift-texture-binding [stage] num set base binding number for textures\n" " --stb [stage] num synonym for --shift-texture-binding\n" "\n" + " --shift-image-binding [stage] num set base binding number for images (uav)\n" + " --sib [stage] num synonym for --shift-image-binding\n" + "\n" " --shift-UBO-binding [stage] num set base binding number for UBOs\n" " --sub [stage] num synonym for --shift-UBO-binding\n" "\n" diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out new file mode 100644 index 00000000..b2d8f299 --- /dev/null +++ b/Test/baseResults/hlsl.rw.register.frag.out @@ -0,0 +1,158 @@ +hlsl.rw.register.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:11 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:11 Function Parameters: +0:? Sequence +0:12 Sequence +0:12 move second child to first child (temp float) +0:12 'r00' (temp float) +0:12 imageLoad (temp float) +0:12 'g_tTex1df1' (layout(binding=2 r32f ) uniform image1D) +0:12 Constant: +0:12 0 (const int) +0:13 Sequence +0:13 move second child to first child (temp uint) +0:13 'r01' (temp uint) +0:13 imageLoad (temp uint) +0:13 'g_tBuf1du1' (layout(binding=3 r32ui ) uniform uimageBuffer) +0:13 Constant: +0:13 0 (const int) +0:16 move second child to first child (temp 4-component vector of float) +0:16 Color: direct index for structure (temp 4-component vector of float) +0:16 'psout' (temp structure{temp 4-component vector of float Color}) +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 Sequence +0:17 Sequence +0:17 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:17 Color: direct index for structure (temp 4-component vector of float) +0:17 'psout' (temp structure{temp 4-component vector of float Color}) +0:17 Constant: +0:17 0 (const int) +0:17 Branch: Return +0:? Linker Objects +0:? 'g_tTex1df1' (layout(binding=2 r32f ) uniform image1D) +0:? 'g_tBuf1du1' (layout(binding=3 r32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:11 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:11 Function Parameters: +0:? Sequence +0:12 Sequence +0:12 move second child to first child (temp float) +0:12 'r00' (temp float) +0:12 imageLoad (temp float) +0:12 'g_tTex1df1' (layout(binding=2 r32f ) uniform image1D) +0:12 Constant: +0:12 0 (const int) +0:13 Sequence +0:13 move second child to first child (temp uint) +0:13 'r01' (temp uint) +0:13 imageLoad (temp uint) +0:13 'g_tBuf1du1' (layout(binding=3 r32ui ) uniform uimageBuffer) +0:13 Constant: +0:13 0 (const int) +0:16 move second child to first child (temp 4-component vector of float) +0:16 Color: direct index for structure (temp 4-component vector of float) +0:16 'psout' (temp structure{temp 4-component vector of float Color}) +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 Sequence +0:17 Sequence +0:17 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:17 Color: direct index for structure (temp 4-component vector of float) +0:17 'psout' (temp structure{temp 4-component vector of float Color}) +0:17 Constant: +0:17 0 (const int) +0:17 Branch: Return +0:? Linker Objects +0:? 'g_tTex1df1' (layout(binding=2 r32f ) uniform image1D) +0:? 'g_tBuf1du1' (layout(binding=3 r32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 37 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 33 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 11 "g_tTex1df1" + Name 18 "r01" + Name 21 "g_tBuf1du1" + Name 25 "PS_OUTPUT" + MemberName 25(PS_OUTPUT) 0 "Color" + Name 27 "psout" + Name 33 "Color" + Decorate 11(g_tTex1df1) DescriptorSet 0 + Decorate 11(g_tTex1df1) Binding 2 + Decorate 21(g_tBuf1du1) DescriptorSet 0 + Decorate 21(g_tBuf1du1) Binding 3 + Decorate 33(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D nonsampled format:R32f + 10: TypePointer UniformConstant 9 + 11(g_tTex1df1): 10(ptr) Variable UniformConstant + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 16: TypeInt 32 0 + 17: TypePointer Function 16(int) + 19: TypeImage 16(int) Buffer nonsampled format:R32ui + 20: TypePointer UniformConstant 19 + 21(g_tBuf1du1): 20(ptr) Variable UniformConstant + 24: TypeVector 6(float) 4 + 25(PS_OUTPUT): TypeStruct 24(fvec4) + 26: TypePointer Function 25(PS_OUTPUT) + 28: 6(float) Constant 1065353216 + 29: 24(fvec4) ConstantComposite 28 28 28 28 + 30: TypePointer Function 24(fvec4) + 32: TypePointer Output 24(fvec4) + 33(Color): 32(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 18(r01): 17(ptr) Variable Function + 27(psout): 26(ptr) Variable Function + 12: 9 Load 11(g_tTex1df1) + 15: 6(float) ImageRead 12 14 + Store 8(r00) 15 + 22: 19 Load 21(g_tBuf1du1) + 23: 16(int) ImageRead 22 14 + Store 18(r01) 23 + 31: 30(ptr) AccessChain 27(psout) 14 + Store 31 29 + 34: 30(ptr) AccessChain 27(psout) 14 + 35: 24(fvec4) Load 34 + Store 33(Color) 35 + Return + FunctionEnd diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out new file mode 100644 index 00000000..851ef463 --- /dev/null +++ b/Test/baseResults/spv.rw.autoassign.frag.out @@ -0,0 +1,70 @@ +spv.rw.autoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 37 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 33 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 11 "g_tTex1df1" + Name 18 "r01" + Name 21 "g_tBuf1du1" + Name 25 "PS_OUTPUT" + MemberName 25(PS_OUTPUT) 0 "Color" + Name 27 "psout" + Name 33 "Color" + Decorate 11(g_tTex1df1) DescriptorSet 0 + Decorate 11(g_tTex1df1) Binding 20 + Decorate 21(g_tBuf1du1) DescriptorSet 0 + Decorate 21(g_tBuf1du1) Binding 21 + Decorate 33(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D nonsampled format:R32f + 10: TypePointer UniformConstant 9 + 11(g_tTex1df1): 10(ptr) Variable UniformConstant + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 16: TypeInt 32 0 + 17: TypePointer Function 16(int) + 19: TypeImage 16(int) Buffer nonsampled format:R32ui + 20: TypePointer UniformConstant 19 + 21(g_tBuf1du1): 20(ptr) Variable UniformConstant + 24: TypeVector 6(float) 4 + 25(PS_OUTPUT): TypeStruct 24(fvec4) + 26: TypePointer Function 25(PS_OUTPUT) + 28: 6(float) Constant 0 + 29: 24(fvec4) ConstantComposite 28 28 28 28 + 30: TypePointer Function 24(fvec4) + 32: TypePointer Output 24(fvec4) + 33(Color): 32(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 18(r01): 17(ptr) Variable Function + 27(psout): 26(ptr) Variable Function + 12: 9 Load 11(g_tTex1df1) + 15: 6(float) ImageRead 12 14 + Store 8(r00) 15 + 22: 19 Load 21(g_tBuf1du1) + 23: 16(int) ImageRead 22 14 + Store 18(r01) 23 + 31: 30(ptr) AccessChain 27(psout) 14 + Store 31 29 + 34: 30(ptr) AccessChain 27(psout) 14 + 35: 24(fvec4) Load 34 + Store 33(Color) 35 + Return + FunctionEnd diff --git a/Test/hlsl.rw.register.frag b/Test/hlsl.rw.register.frag new file mode 100644 index 00000000..e82e419a --- /dev/null +++ b/Test/hlsl.rw.register.frag @@ -0,0 +1,18 @@ + +RWTexture1D g_tTex1df1 : register(u2); +RWBuffer g_tBuf1du1 : register(U3); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + float r00 = g_tTex1df1[0]; + uint r01 = g_tBuf1du1[0]; + + PS_OUTPUT psout; + psout.Color = 1.0; + return psout; +} diff --git a/Test/spv.rw.autoassign.frag b/Test/spv.rw.autoassign.frag new file mode 100644 index 00000000..5c7d0d3f --- /dev/null +++ b/Test/spv.rw.autoassign.frag @@ -0,0 +1,18 @@ + +RWTexture1D g_tTex1df1; +RWBuffer g_tBuf1du1; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + float r00 = g_tTex1df1[0]; + uint r01 = g_tBuf1du1[0]; + + PS_OUTPUT psout; + psout.Color = 0; + return psout; +} diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index eb4a17d4..b7152a65 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1494,6 +1494,7 @@ void TShader::setEntryPoint(const char* entryPoint) void TShader::setShiftSamplerBinding(unsigned int base) { intermediate->setShiftSamplerBinding(base); } void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShiftTextureBinding(base); } +void TShader::setShiftImageBinding(unsigned int base) { intermediate->setShiftImageBinding(base); } void TShader::setShiftUboBinding(unsigned int base) { intermediate->setShiftUboBinding(base); } void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); } void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 2ee6caef..269d6549 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -222,6 +222,7 @@ struct TDefaultIoResolver : public glslang::TIoMapResolver { int baseSamplerBinding; int baseTextureBinding; + int baseImageBinding; int baseUboBinding; bool doAutoMapping; typedef std::vector TSlotSet; @@ -294,6 +295,9 @@ struct TDefaultIoResolver : public glslang::TIoMapResolver if (type.getQualifier().hasBinding()) { if (type.getBasicType() == glslang::EbtSampler) { const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isImage()) + return reserveSlot(set, baseImageBinding + type.getQualifier().layoutBinding); + if (sampler.isPureSampler()) return reserveSlot(set, baseSamplerBinding + type.getQualifier().layoutBinding); @@ -308,6 +312,9 @@ struct TDefaultIoResolver : public glslang::TIoMapResolver // first and now all are passed that do not have a binding and needs one if (type.getBasicType() == glslang::EbtSampler) { const glslang::TSampler& sampler = type.getSampler(); + if (sampler.isImage()) + return getFreeSlot(set, baseImageBinding); + if (sampler.isPureSampler()) return getFreeSlot(set, baseSamplerBinding); @@ -339,9 +346,10 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi // Trivial return if there is nothing to do. if (intermediate.getShiftSamplerBinding() == 0 && intermediate.getShiftTextureBinding() == 0 && + intermediate.getShiftImageBinding() == 0 && intermediate.getShiftUboBinding() == 0 && intermediate.getAutoMapBindings() == false && - resolver == NULL) + resolver == nullptr) return true; if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive()) @@ -353,9 +361,10 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi // if no resolver is provided, use the default resolver with the given shifts and auto map settings TDefaultIoResolver defaultResolver; - if (resolver == NULL) { + if (resolver == nullptr) { defaultResolver.baseSamplerBinding = intermediate.getShiftSamplerBinding(); defaultResolver.baseTextureBinding = intermediate.getShiftTextureBinding(); + defaultResolver.baseImageBinding = intermediate.getShiftImageBinding(); defaultResolver.baseUboBinding = intermediate.getShiftUboBinding(); defaultResolver.doAutoMapping = intermediate.getAutoMapBindings(); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 1dd14403..53c03ac8 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -144,6 +144,7 @@ public: multiStream(false), xfbMode(false), shiftSamplerBinding(0), shiftTextureBinding(0), + shiftImageBinding(0), shiftUboBinding(0), autoMapBindings(false), flattenUniformArrays(false), @@ -174,6 +175,8 @@ public: unsigned int getShiftSamplerBinding() const { return shiftSamplerBinding; } void setShiftTextureBinding(unsigned int shift) { shiftTextureBinding = shift; } unsigned int getShiftTextureBinding() const { return shiftTextureBinding; } + void setShiftImageBinding(unsigned int shift) { shiftImageBinding = shift; } + unsigned int getShiftImageBinding() const { return shiftImageBinding; } void setShiftUboBinding(unsigned int shift) { shiftUboBinding = shift; } unsigned int getShiftUboBinding() const { return shiftUboBinding; } void setAutoMapBindings(bool map) { autoMapBindings = map; } @@ -403,6 +406,7 @@ protected: std::string entryPointMangledName; unsigned int shiftSamplerBinding; unsigned int shiftTextureBinding; + unsigned int shiftImageBinding; unsigned int shiftUboBinding; bool autoMapBindings; bool flattenUniformArrays; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index acde8b01..9a76b40a 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -306,6 +306,7 @@ public: void setEntryPoint(const char* entryPoint); void setShiftSamplerBinding(unsigned int base); void setShiftTextureBinding(unsigned int base); + void setShiftImageBinding(unsigned int base); void setShiftUboBinding(unsigned int base); void setAutoMapBindings(bool map); void setFlattenUniformArrays(bool flatten); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 66fba2e7..918a431b 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -159,6 +159,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.promotions.frag", "main"}, {"hlsl.rw.atomics.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, + {"hlsl.rw.register.frag", "main"}, {"hlsl.rw.scalar.bracket.frag", "main"}, {"hlsl.rw.vec2.bracket.frag", "main"}, {"hlsl.sample.array.dx10.frag", "main"}, diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index a55af518..1e0f7976 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -46,6 +46,7 @@ struct IoMapData { const char* entryPoint; int baseSamplerBinding; int baseTextureBinding; + int baseImageBinding; int baseUboBinding; bool autoMapBindings; bool flattenUniforms; @@ -123,6 +124,7 @@ TEST_P(HlslIoMap, FromFile) Target::Spv, GetParam().entryPoint, GetParam().baseSamplerBinding, GetParam().baseTextureBinding, + GetParam().baseImageBinding, GetParam().baseUboBinding, GetParam().autoMapBindings, GetParam().flattenUniforms); @@ -136,6 +138,7 @@ TEST_P(GlslIoMap, FromFile) Target::Spv, GetParam().entryPoint, GetParam().baseSamplerBinding, GetParam().baseTextureBinding, + GetParam().baseImageBinding, GetParam().baseUboBinding, GetParam().autoMapBindings, GetParam().flattenUniforms); @@ -283,10 +286,11 @@ INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P( Hlsl, HlslIoMap, ::testing::ValuesIn(std::vector{ - { "spv.register.autoassign.frag", "main_ep", 5, 10, 20, true, false }, - { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, - { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true }, - { "spv.buffer.autoassign.frag", "main", 5, 10, 15, true, true }, + { "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, true, false }, + { "spv.register.noautoassign.frag", "main_ep", 5, 10, 0, 15, false, false }, + { "spv.register.autoassign-2.frag", "main", 5, 10, 0, 15, true, true }, + { "spv.buffer.autoassign.frag", "main", 5, 10, 0, 15, true, true }, + { "spv.rw.autoassign.frag", "main", 5, 10, 20, 15, true, true }, { "spv.register.autoassign.rangetest.frag", "main", glslang::TQualifier::layoutBindingEnd-2, glslang::TQualifier::layoutBindingEnd+5, @@ -299,8 +303,8 @@ INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P( Hlsl, GlslIoMap, ::testing::ValuesIn(std::vector{ - { "spv.glsl.register.autoassign.frag", "main", 5, 10, 20, true, false }, - { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 15, false, false }, + { "spv.glsl.register.autoassign.frag", "main", 5, 10, 0, 20, true, false }, + { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 0, 15, false, false }, }), FileNameAsCustomTestSuffixIoMap ); diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index c08c6cc5..e795e8dc 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -239,6 +239,7 @@ public: const std::string& entryPointName, EShMessages controls, int baseSamplerBinding, int baseTextureBinding, + int baseImageBinding, int baseUboBinding, bool autoMapBindings, bool flattenUniformArrays) @@ -248,6 +249,7 @@ public: glslang::TShader shader(kind); shader.setShiftSamplerBinding(baseSamplerBinding); shader.setShiftTextureBinding(baseTextureBinding); + shader.setShiftImageBinding(baseImageBinding); shader.setShiftUboBinding(baseUboBinding); shader.setAutoMapBindings(autoMapBindings); shader.setFlattenUniformArrays(flattenUniformArrays); @@ -426,6 +428,7 @@ public: const std::string& entryPointName, int baseSamplerBinding, int baseTextureBinding, + int baseImageBinding, int baseUboBinding, bool autoMapBindings, bool flattenUniformArrays) @@ -440,7 +443,7 @@ public: const EShMessages controls = DeriveOptions(source, semantics, target); GlslangResult result = compileLinkIoMap(testName, input, entryPointName, controls, - baseSamplerBinding, baseTextureBinding, baseUboBinding, + baseSamplerBinding, baseTextureBinding, baseImageBinding, baseUboBinding, autoMapBindings, flattenUniformArrays); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index cf97ec7e..5bca3ec9 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -45,6 +45,7 @@ #include "../glslang/OSDependent/osinclude.h" #include +#include namespace glslang { @@ -3085,11 +3086,12 @@ void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifi } // TODO: learn what all these really mean and how they interact with regNumber and subComponent - switch (desc[0]) { + switch (std::tolower(desc[0])) { case 'b': case 't': case 'c': case 's': + case 'u': qualifier.layoutBinding = regNumber + subComponent; break; default: From d3f1122a4430563cd47f60060956e88dc559ba22 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 5 Nov 2016 10:15:53 -0600 Subject: [PATCH 089/130] Whole stack: Fix stale types in the AST linker object nodes, fixing #557. Rationalizes the entire tracking of the linker object nodes, effecting GLSL, HLSL, and SPIR-V, to allow tracked objects to be fully edited before their type snapshot for linker objects. Should only effect things when the rest of the AST contained no reference to the symbol, because normal AST nodes were not stale. Also will only effect such objects when their types were edited. --- Test/baseResults/100.frag.out | 16 +-- Test/baseResults/120.vert.out | 2 - Test/baseResults/130.frag.out | 6 +- Test/baseResults/140.frag.out | 2 - Test/baseResults/140.vert.out | 6 - Test/baseResults/150.frag.out | 2 - Test/baseResults/300.vert.out | 12 +- Test/baseResults/310.frag.out | 2 - Test/baseResults/400.frag.out | 4 - Test/baseResults/420.frag.out | 2 - Test/baseResults/hlsl.amend.frag.out | 4 +- Test/baseResults/hlsl.array.flatten.frag.out | 8 +- Test/baseResults/hlsl.array.frag.out | 4 +- Test/baseResults/hlsl.array.multidim.frag.out | 4 +- Test/baseResults/hlsl.basic.comp.out | 4 +- Test/baseResults/hlsl.buffer.frag.out | 8 +- .../hlsl.calculatelod.dx10.frag.out | 8 +- .../hlsl.calculatelodunclamped.dx10.frag.out | 8 +- Test/baseResults/hlsl.comparison.vec.frag.out | 5 +- Test/baseResults/hlsl.float4.frag.out | 4 +- .../hlsl.gather.array.dx10.frag.out | 8 +- .../hlsl.gather.basic.dx10.frag.out | 8 +- .../hlsl.gather.basic.dx10.vert.out | 4 +- .../hlsl.gather.offset.dx10.frag.out | 8 +- .../hlsl.gather.offsetarray.dx10.frag.out | 8 +- .../hlsl.gatherRGBA.array.dx10.frag.out | 12 +- .../hlsl.gatherRGBA.basic.dx10.frag.out | 12 +- .../hlsl.gatherRGBA.offset.dx10.frag.out | 12 +- .../hlsl.gatherRGBA.offsetarray.dx10.frag.out | 12 +- .../hlsl.getdimensions.dx10.frag.out | 8 +- .../hlsl.getdimensions.dx10.vert.out | 4 +- .../hlsl.getdimensions.rw.dx10.frag.out | 20 ++- .../hlsl.getsampleposition.dx10.frag.out | 8 +- Test/baseResults/hlsl.init.frag.out | 8 +- Test/baseResults/hlsl.intrinsics.comp.out | 24 ++-- Test/baseResults/hlsl.intrinsics.frag.out | 4 +- .../hlsl.intrinsics.negative.vert.out | 116 +++++++++--------- Test/baseResults/hlsl.load.2dms.dx10.frag.out | 12 +- .../baseResults/hlsl.load.array.dx10.frag.out | 12 +- .../baseResults/hlsl.load.basic.dx10.frag.out | 12 +- .../baseResults/hlsl.load.basic.dx10.vert.out | 8 +- .../hlsl.load.buffer.dx10.frag.out | 12 +- .../hlsl.load.buffer.float.dx10.frag.out | 12 +- .../hlsl.load.offset.dx10.frag.out | 12 +- .../hlsl.load.offsetarray.dx10.frag.out | 12 +- .../hlsl.load.rwbuffer.dx10.frag.out | 8 +- .../hlsl.load.rwtexture.array.dx10.frag.out | 12 +- .../hlsl.load.rwtexture.dx10.frag.out | 12 +- 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 | 20 ++- Test/baseResults/hlsl.matrixindex.frag.out | 4 +- Test/baseResults/hlsl.mintypes.frag.out | 6 +- Test/baseResults/hlsl.multiEntry.vert.out | 4 +- Test/baseResults/hlsl.precise.frag.out | 4 +- Test/baseResults/hlsl.promote.binary.frag.out | 4 +- Test/baseResults/hlsl.promotions.frag.out | 4 +- Test/baseResults/hlsl.rw.atomics.frag.out | 8 +- Test/baseResults/hlsl.rw.bracket.frag.out | 8 +- .../hlsl.rw.scalar.bracket.frag.out | 8 +- .../baseResults/hlsl.rw.vec2.bracket.frag.out | 8 +- .../hlsl.sample.array.dx10.frag.out | 8 +- .../hlsl.sample.basic.dx10.frag.out | 8 +- .../hlsl.sample.offset.dx10.frag.out | 8 +- .../hlsl.sample.offsetarray.dx10.frag.out | 8 +- .../hlsl.sample.sub-vec4.dx10.frag.out | 4 +- .../hlsl.samplebias.array.dx10.frag.out | 8 +- .../hlsl.samplebias.basic.dx10.frag.out | 8 +- .../hlsl.samplebias.offset.dx10.frag.out | 8 +- .../hlsl.samplebias.offsetarray.dx10.frag.out | 8 +- .../hlsl.samplecmp.array.dx10.frag.out | 8 +- .../hlsl.samplecmp.basic.dx10.frag.out | 8 +- .../hlsl.samplecmp.offset.dx10.frag.out | 8 +- .../hlsl.samplecmp.offsetarray.dx10.frag.out | 8 +- ...lsl.samplecmplevelzero.array.dx10.frag.out | 8 +- ...lsl.samplecmplevelzero.basic.dx10.frag.out | 8 +- ...sl.samplecmplevelzero.offset.dx10.frag.out | 8 +- ...mplecmplevelzero.offsetarray.dx10.frag.out | 8 +- .../hlsl.samplegrad.array.dx10.frag.out | 8 +- .../hlsl.samplegrad.basic.dx10.frag.out | 8 +- .../hlsl.samplegrad.basic.dx10.vert.out | 4 +- .../hlsl.samplegrad.offset.dx10.frag.out | 8 +- .../hlsl.samplegrad.offsetarray.dx10.frag.out | 8 +- .../hlsl.samplelevel.array.dx10.frag.out | 8 +- .../hlsl.samplelevel.basic.dx10.frag.out | 8 +- .../hlsl.samplelevel.basic.dx10.vert.out | 4 +- .../hlsl.samplelevel.offset.dx10.frag.out | 8 +- ...hlsl.samplelevel.offsetarray.dx10.frag.out | 8 +- Test/baseResults/hlsl.stringtoken.frag.out | 9 +- Test/baseResults/hlsl.struct.frag.out | 116 ++++++++++-------- Test/baseResults/hlsl.tx.bracket.frag.out | 8 +- Test/baseResults/maxClipDistances.vert.out | 2 - Test/baseResults/specExamples.frag.out | 6 - Test/baseResults/specExamples.vert.out | 6 +- Test/baseResults/spv.noWorkgroup.comp.out | 34 +++++ Test/baseResults/varyingArray.frag.out | 2 - .../baseResults/varyingArrayIndirect.frag.out | 2 - Test/spv.noWorkgroup.comp | 7 ++ .../MachineIndependent/ParseContextBase.cpp | 41 ++++++- glslang/MachineIndependent/ParseHelper.cpp | 60 +++++---- glslang/MachineIndependent/ParseHelper.h | 28 +++-- glslang/MachineIndependent/ShaderLang.cpp | 1 - .../MachineIndependent/localintermediate.h | 2 +- gtests/Spv.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 54 ++++---- hlsl/hlslParseHelper.h | 6 +- 107 files changed, 630 insertions(+), 560 deletions(-) create mode 100755 Test/baseResults/spv.noWorkgroup.comp.out create mode 100644 Test/spv.noWorkgroup.comp diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out index edd65ab2..74a597ff 100644 --- a/Test/baseResults/100.frag.out +++ b/Test/baseResults/100.frag.out @@ -393,13 +393,13 @@ ERROR: node is still EOpNull! 0:? 'a' (global 3-element array of mediump int) 0:? 'uint' (global mediump int) 0:? 'v' (smooth in 3-element array of mediump 4-component vector of float) -0:? 'f' (global mediump float) +0:? 'f' (invariant global mediump float) 0:? 'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int x}) 0:? 'fa' (global implicitly-sized array of mediump float) -0:? 'f13' (global mediump float) +0:? 'f13' (invariant global mediump float) 0:? 'fi' (invariant temp mediump float) -0:? 'av' (smooth in mediump 4-component vector of float) -0:? 'uv2' (uniform mediump 2-component vector of float) +0:? 'av' (invariant smooth in mediump 4-component vector of float) +0:? 'uv2' (invariant uniform mediump 2-component vector of float) 0:? 'uv3' (invariant uniform mediump 3-component vector of float) 0:? 'glob2D' (global lowp sampler2D) 0:? 'vary2D' (smooth in lowp sampler2D) @@ -731,13 +731,13 @@ ERROR: node is still EOpNull! 0:? 'a' (global 3-element array of mediump int) 0:? 'uint' (global mediump int) 0:? 'v' (smooth in 3-element array of mediump 4-component vector of float) -0:? 'f' (global mediump float) +0:? 'f' (invariant global mediump float) 0:? 'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int x}) 0:? 'fa' (global 1-element array of mediump float) -0:? 'f13' (global mediump float) +0:? 'f13' (invariant global mediump float) 0:? 'fi' (invariant temp mediump float) -0:? 'av' (smooth in mediump 4-component vector of float) -0:? 'uv2' (uniform mediump 2-component vector of float) +0:? 'av' (invariant smooth in mediump 4-component vector of float) +0:? 'uv2' (invariant uniform mediump 2-component vector of float) 0:? 'uv3' (invariant uniform mediump 3-component vector of float) 0:? 'glob2D' (global lowp sampler2D) 0:? 'vary2D' (smooth in lowp sampler2D) diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out index 73ced6a1..18fb221d 100644 --- a/Test/baseResults/120.vert.out +++ b/Test/baseResults/120.vert.out @@ -420,7 +420,6 @@ ERROR: node is still EOpNull! 0:? 'concall' (const float) 0:? 0.295520 0:? 'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord) -0:? 'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord) 0:? 'c' (uniform int) 0:? 'x' (in 2-component vector of int) 0:? 'v2a' (in 2-component vector of float) @@ -772,7 +771,6 @@ ERROR: node is still EOpNull! 0:? 'concall' (const float) 0:? 0.295520 0:? 'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord) -0:? 'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord) 0:? 'c' (uniform int) 0:? 'x' (in 2-component vector of int) 0:? 'v2a' (in 2-component vector of float) diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out index b2b4dd06..a28908ea 100644 --- a/Test/baseResults/130.frag.out +++ b/Test/baseResults/130.frag.out @@ -383,8 +383,7 @@ ERROR: node is still EOpNull! 0:? 'fnop' (noperspective in float) 0:? 'gl_ClipDistance' (smooth in implicitly-sized array of float ClipDistance) 0:? 'sampC' (uniform samplerCube) -0:? 'gl_Color' (smooth in 4-component vector of float Color) -0:? 'gl_Color' (flat in 4-component vector of float Color) +0:? 'gl_Color' (in 4-component vector of float Color) 0:? 'samp2D' (uniform sampler2D) 0:? 'samp2DS' (uniform sampler2DShadow) 0:? 'samp2DR' (uniform sampler2DRect) @@ -759,8 +758,7 @@ ERROR: node is still EOpNull! 0:? 'fnop' (noperspective in float) 0:? 'gl_ClipDistance' (smooth in 4-element array of float ClipDistance) 0:? 'sampC' (uniform samplerCube) -0:? 'gl_Color' (smooth in 4-component vector of float Color) -0:? 'gl_Color' (flat in 4-component vector of float Color) +0:? 'gl_Color' (in 4-component vector of float Color) 0:? 'samp2D' (uniform sampler2D) 0:? 'samp2DS' (uniform sampler2DShadow) 0:? 'samp2DR' (uniform sampler2DRect) diff --git a/Test/baseResults/140.frag.out b/Test/baseResults/140.frag.out index fbeee83a..38c3b9f4 100644 --- a/Test/baseResults/140.frag.out +++ b/Test/baseResults/140.frag.out @@ -104,7 +104,6 @@ ERROR: node is still EOpNull! 0:? 'i' (smooth in 4-component vector of float) 0:? 'o' (out 4-component vector of float) 0:? 'gl_ClipDistance' (smooth in 5-element array of float ClipDistance) -0:? 'gl_ClipDistance' (smooth in 5-element array of float ClipDistance) 0:? 's' (smooth in structure{global float f}) 0:? 'patch' (global float) 0:? 'vl' (layout(location=3 ) smooth in 4-component vector of float) @@ -211,7 +210,6 @@ ERROR: node is still EOpNull! 0:? 'i' (smooth in 4-component vector of float) 0:? 'o' (out 4-component vector of float) 0:? 'gl_ClipDistance' (smooth in 5-element array of float ClipDistance) -0:? 'gl_ClipDistance' (smooth in 5-element array of float ClipDistance) 0:? 's' (smooth in structure{global float f}) 0:? 'patch' (global float) 0:? 'vl' (layout(location=3 ) smooth in 4-component vector of float) diff --git a/Test/baseResults/140.vert.out b/Test/baseResults/140.vert.out index 634458cd..365a0aae 100644 --- a/Test/baseResults/140.vert.out +++ b/Test/baseResults/140.vert.out @@ -124,10 +124,7 @@ ERROR: node is still EOpNull! 0:? 'locBad' (layout(location=9 ) in 4-component vector of float) 0:? 'loc' (layout(location=9 ) in 4-component vector of float) 0:? 'gl_PointSize' (gl_PointSize float PointSize) -0:? 'gl_PointSize' (gl_PointSize float PointSize) 0:? 'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex) -0:? 'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex) -0:? 'gl_FogFragCoord' (smooth out float FogFragCoord) 0:? 'gl_FogFragCoord' (smooth out float FogFragCoord) 0:? 's2dr' (uniform sampler2DRect) 0:? 's2drs' (uniform sampler2DRectShadow) @@ -254,10 +251,7 @@ ERROR: node is still EOpNull! 0:? 'locBad' (layout(location=9 ) in 4-component vector of float) 0:? 'loc' (layout(location=9 ) in 4-component vector of float) 0:? 'gl_PointSize' (gl_PointSize float PointSize) -0:? 'gl_PointSize' (gl_PointSize float PointSize) 0:? 'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex) -0:? 'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex) -0:? 'gl_FogFragCoord' (smooth out float FogFragCoord) 0:? 'gl_FogFragCoord' (smooth out float FogFragCoord) 0:? 's2dr' (uniform sampler2DRect) 0:? 's2drs' (uniform sampler2DRectShadow) diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out index 082a8274..0972fdcd 100644 --- a/Test/baseResults/150.frag.out +++ b/Test/baseResults/150.frag.out @@ -108,7 +108,6 @@ ERROR: node is still EOpNull! 0:49 'gl_PrimitiveID' (flat in int PrimitiveID) 0:? Linker Objects 0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) -0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'foo' (smooth in 4-component vector of float) 0:? 's' (smooth in structure{global float f}) 0:? 'patch' (global float) @@ -228,7 +227,6 @@ ERROR: node is still EOpNull! 0:49 'gl_PrimitiveID' (flat in int PrimitiveID) 0:? Linker Objects 0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) -0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'foo' (smooth in 4-component vector of float) 0:? 's' (smooth in structure{global float f}) 0:? 'patch' (global float) diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out index ecfa3d50..d35929f7 100644 --- a/Test/baseResults/300.vert.out +++ b/Test/baseResults/300.vert.out @@ -308,9 +308,9 @@ ERROR: node is still EOpNull! 0:? 'badsize2' (global implicitly-sized array of highp float) 0:? 'ubInst' (layout(column_major shared ) uniform implicitly-sized array of block{layout(column_major shared ) uniform implicitly-sized array of highp int a}) 0:? 'okayA' (global 2-element array of highp float) -0:? 'newV' (smooth out highp 3-component vector of float) -0:? 'invIn' (in highp 4-component vector of float) -0:? 's2' (smooth out structure{global highp 3-component vector of float c, global highp float f}) +0:? 'newV' (invariant smooth out highp 3-component vector of float) +0:? 'invIn' (invariant in highp 4-component vector of float) +0:? 's2' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f}) 0:? 's3' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f}) 0:? 'a' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp float f}) 0:? 'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b23}) @@ -592,9 +592,9 @@ ERROR: node is still EOpNull! 0:? 'badsize2' (global 1-element array of highp float) 0:? 'ubInst' (layout(column_major shared ) uniform 1-element array of block{layout(column_major shared ) uniform 1-element array of highp int a}) 0:? 'okayA' (global 2-element array of highp float) -0:? 'newV' (smooth out highp 3-component vector of float) -0:? 'invIn' (in highp 4-component vector of float) -0:? 's2' (smooth out structure{global highp 3-component vector of float c, global highp float f}) +0:? 'newV' (invariant smooth out highp 3-component vector of float) +0:? 'invIn' (invariant in highp 4-component vector of float) +0:? 's2' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f}) 0:? 's3' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f}) 0:? 'a' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp float f}) 0:? 'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b23}) diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out index 6cfd3f44..66d6ae00 100644 --- a/Test/baseResults/310.frag.out +++ b/Test/baseResults/310.frag.out @@ -963,7 +963,6 @@ ERROR: node is still EOpNull! 0:? 'aliased' (layout(location=13 ) smooth in mediump 4-component vector of float) 0:? 'arrayedInst' (in 4-element array of block{in mediump float f}) 0:? 'gl_FragDepth' (gl_FragDepth highp float FragDepth) -0:? 'gl_FragDepth' (gl_FragDepth highp float FragDepth) 0:? 'inf' (smooth in mediump 2-component vector of float) 0:? 'ing' (smooth in mediump 2-component vector of float) 0:? 'offsets' (uniform 4-element array of mediump 2-component vector of int) @@ -1844,7 +1843,6 @@ ERROR: node is still EOpNull! 0:? 'aliased' (layout(location=13 ) smooth in mediump 4-component vector of float) 0:? 'arrayedInst' (in 4-element array of block{in mediump float f}) 0:? 'gl_FragDepth' (gl_FragDepth highp float FragDepth) -0:? 'gl_FragDepth' (gl_FragDepth highp float FragDepth) 0:? 'inf' (smooth in mediump 2-component vector of float) 0:? 'ing' (smooth in mediump 2-component vector of float) 0:? 'offsets' (uniform 4-element array of mediump 2-component vector of int) diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out index 33a8c9ab..90904140 100644 --- a/Test/baseResults/400.frag.out +++ b/Test/baseResults/400.frag.out @@ -481,8 +481,6 @@ ERROR: node is still EOpNull! 0:? 'vl2' (layout(location=6 ) smooth in 4-component vector of float) 0:? 'uv3' (layout(location=3 ) uniform 3-component vector of float) 0:? 'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) -0:? 'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) -0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'u2drs' (uniform sampler2DRectShadow) 0:? 'patchIn' (smooth patch in 4-component vector of float) @@ -962,8 +960,6 @@ ERROR: node is still EOpNull! 0:? 'vl2' (layout(location=6 ) smooth in 4-component vector of float) 0:? 'uv3' (layout(location=3 ) uniform 3-component vector of float) 0:? 'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in 1-element array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) -0:? 'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in 1-element array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) -0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'u2drs' (uniform sampler2DRectShadow) 0:? 'patchIn' (smooth patch in 4-component vector of float) diff --git a/Test/baseResults/420.frag.out b/Test/baseResults/420.frag.out index 784cdb4b..3b4c9be3 100644 --- a/Test/baseResults/420.frag.out +++ b/Test/baseResults/420.frag.out @@ -19,7 +19,6 @@ ERROR: node is still EOpNull! 0:8 0.300000 0:? Linker Objects 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) -0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) 0:? 'depth' (smooth in float) 0:? 'a' (layout(binding=0 offset=0 ) uniform implicitly-sized array of atomic_uint) @@ -39,7 +38,6 @@ ERROR: node is still EOpNull! 0:8 0.300000 0:? Linker Objects 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) -0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) 0:? 'depth' (smooth in float) 0:? 'a' (layout(binding=0 offset=0 ) uniform 1-element array of atomic_uint) diff --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out index 1be59064..44d76552 100755 --- a/Test/baseResults/hlsl.amend.frag.out +++ b/Test/baseResults/hlsl.amend.frag.out @@ -58,7 +58,7 @@ gl_FragCoord origin is upper left 0:25 Constant: 0:25 0 (const uint) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) Linked fragment stage: @@ -123,7 +123,7 @@ gl_FragCoord origin is upper left 0:25 Constant: 0:25 0 (const uint) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index cbfb0ef9..74a348a2 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -138,6 +138,7 @@ gl_FragCoord origin is upper left 0:? 'g_samp[2]' (uniform sampler) 0:37 'aggShadow' (temp 3-element array of sampler) 0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_tex[0]' (uniform texture1D) 0:? 'g_tex[1]' (uniform texture1D) 0:? 'g_tex[2]' (uniform texture1D) @@ -150,9 +151,8 @@ gl_FragCoord origin is upper left 0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) 0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) 0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) 0:? 'not_flattened_a' (global 5-element array of int) -0:? 'color' (layout(location=0 ) out 4-component vector of float) Linked fragment stage: @@ -297,6 +297,7 @@ gl_FragCoord origin is upper left 0:? 'g_samp[2]' (uniform sampler) 0:37 'aggShadow' (temp 3-element array of sampler) 0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_tex[0]' (uniform texture1D) 0:? 'g_tex[1]' (uniform texture1D) 0:? 'g_tex[2]' (uniform texture1D) @@ -309,9 +310,8 @@ gl_FragCoord origin is upper left 0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) 0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) 0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) 0:? 'not_flattened_a' (global 5-element array of int) -0:? 'color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out index 00aedb3d..e04a5e81 100755 --- a/Test/baseResults/hlsl.array.frag.out +++ b/Test/baseResults/hlsl.array.frag.out @@ -57,9 +57,9 @@ gl_FragCoord origin is upper left 0:10 Branch: Return 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) 0:? 'i' (layout(location=0 ) in int) 0:? 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) Linked fragment stage: @@ -123,9 +123,9 @@ gl_FragCoord origin is upper left 0:10 Branch: Return 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) 0:? 'i' (layout(location=0 ) in int) 0:? 'input' (layout(location=1 ) in 3-element array of 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out index a2df1a8d..66890b52 100644 --- a/Test/baseResults/hlsl.array.multidim.frag.out +++ b/Test/baseResults/hlsl.array.multidim.frag.out @@ -59,7 +59,7 @@ gl_FragCoord origin is upper left 0:19 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) Linked fragment stage: @@ -125,7 +125,7 @@ gl_FragCoord origin is upper left 0:19 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out index c6dc3e5c..9101e22f 100755 --- a/Test/baseResults/hlsl.basic.comp.out +++ b/Test/baseResults/hlsl.basic.comp.out @@ -8,8 +8,8 @@ local_size = (1, 1, 1) 0:? Sequence 0:5 'dti' (in int LocalInvocationID) 0:? Linker Objects -0:? 'a' (shared 100-element array of 4-component vector of float) 0:? 'dti' (in int LocalInvocationID) +0:? 'a' (shared 100-element array of 4-component vector of float) Linked compute stage: @@ -24,8 +24,8 @@ local_size = (1, 1, 1) 0:? Sequence 0:5 'dti' (in int LocalInvocationID) 0:? Linker Objects -0:? 'a' (shared 100-element array of 4-component vector of float) 0:? 'dti' (in int LocalInvocationID) +0:? 'a' (shared 100-element array of 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 2eb1f9ce..dbb2b5e1 100755 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -32,12 +32,12 @@ gl_FragCoord origin is upper left 0:31 0 (const uint) 0:31 Branch: Return 0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) 0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) 0:? 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) 0:? 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) -0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'input' (layout(location=0 ) in 4-component vector of float) Linked fragment stage: @@ -76,12 +76,12 @@ gl_FragCoord origin is upper left 0:31 0 (const uint) 0:31 Branch: Return 0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) 0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) 0:? 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) 0:? 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) -0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'input' (layout(location=0 ) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index ff18441c..56a2ce86 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -155,6 +155,8 @@ gl_FragCoord origin is upper left 0:43 1 (const int) 0:43 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -166,8 +168,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -329,6 +329,8 @@ gl_FragCoord origin is upper left 0:43 1 (const int) 0:43 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -340,8 +342,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out index ecd1f0d1..799dcc37 100644 --- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out @@ -167,6 +167,8 @@ ERROR: node is still EOpNull! 0:43 1 (const int) 0:43 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -178,8 +180,6 @@ ERROR: node is still EOpNull! 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -341,6 +341,8 @@ ERROR: node is still EOpNull! 0:43 1 (const int) 0:43 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -352,7 +354,5 @@ ERROR: node is still EOpNull! 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out index 8a31f63f..1bf63ec8 100644 --- a/Test/baseResults/hlsl.comparison.vec.frag.out +++ b/Test/baseResults/hlsl.comparison.vec.frag.out @@ -122,8 +122,8 @@ gl_FragCoord origin is upper left 0:33 0 (const int) 0:33 Branch: Return 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float uf4}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float uf4}) Linked fragment stage: @@ -252,8 +252,8 @@ gl_FragCoord origin is upper left 0:33 0 (const int) 0:33 Branch: Return 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float uf4}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float uf4}) // Module Version 10000 // Generated by (magic number): 80001 @@ -289,6 +289,7 @@ gl_FragCoord origin is upper left MemberName 88($Global) 0 "uf4" Name 90 "" Decorate 84(Color) Location 0 + MemberDecorate 88($Global) 0 Offset 0 Decorate 88($Global) Block Decorate 90 DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out index 6caac247..8d45d6eb 100755 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -17,7 +17,7 @@ gl_FragCoord origin is upper left 0:10 Constant: 0:10 0 (const uint) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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}) Linked fragment stage: @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:10 Constant: 0:10 0 (const uint) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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): 80001 diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out index a09b87ce..15727d92 100644 --- a/Test/baseResults/hlsl.gather.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -107,6 +107,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -118,8 +120,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -233,6 +233,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -244,8 +246,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out index 467ccf4c..26a5f38d 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -101,6 +101,8 @@ gl_FragCoord origin is upper left 0:47 1 (const int) 0:47 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -116,8 +118,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -225,6 +225,8 @@ gl_FragCoord origin is upper left 0:47 1 (const int) 0:47 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -240,8 +242,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index d08a57e7..b7a4d6e4 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -87,6 +87,7 @@ Shader version: 450 0:45 0 (const int) 0:45 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -102,7 +103,6 @@ Shader version: 450 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Pos' (out 4-component vector of float Position) Linked vertex stage: @@ -196,6 +196,7 @@ Shader version: 450 0:45 0 (const int) 0:45 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -211,7 +212,6 @@ Shader version: 450 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Pos' (out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out index ff7eb398..2feb0ee2 100644 --- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -77,6 +77,8 @@ gl_FragCoord origin is upper left 0:43 1 (const int) 0:43 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -91,8 +93,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -176,6 +176,8 @@ gl_FragCoord origin is upper left 0:43 1 (const int) 0:43 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -190,8 +192,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out index dc64a807..2dede7bb 100644 --- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -80,6 +80,8 @@ gl_FragCoord origin is upper left 0:35 1 (const int) 0:35 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -88,8 +90,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -176,6 +176,8 @@ gl_FragCoord origin is upper left 0:35 1 (const int) 0:35 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -184,8 +186,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out index 4e78cdaf..eb7cf836 100644 --- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -350,6 +350,8 @@ gl_FragCoord origin is upper left 0:70 1 (const int) 0:70 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) @@ -361,9 +363,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) Linked fragment stage: @@ -720,6 +720,8 @@ gl_FragCoord origin is upper left 0:70 1 (const int) 0:70 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) @@ -731,9 +733,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out index ef1e7e05..b92874e8 100644 --- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -350,6 +350,8 @@ gl_FragCoord origin is upper left 0:76 1 (const int) 0:76 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -365,9 +367,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) Linked fragment stage: @@ -724,6 +724,8 @@ gl_FragCoord origin is upper left 0:76 1 (const int) 0:76 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -739,9 +741,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out index f178c3b3..5da611cf 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -602,6 +602,8 @@ gl_FragCoord origin is upper left 0:115 1 (const int) 0:115 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -617,9 +619,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -1228,6 +1228,8 @@ gl_FragCoord origin is upper left 0:115 1 (const int) 0:115 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -1243,9 +1245,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out index f565379f..f472ee2d 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -602,6 +602,8 @@ gl_FragCoord origin is upper left 0:109 1 (const int) 0:109 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) @@ -613,9 +615,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -1224,6 +1224,8 @@ gl_FragCoord origin is upper left 0:109 1 (const int) 0:109 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) @@ -1235,9 +1237,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out index 3a55d682..0c488cfb 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out @@ -1076,6 +1076,8 @@ gl_FragCoord origin is upper left 0:279 1 (const int) 0:279 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -1104,8 +1106,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -2188,6 +2188,8 @@ gl_FragCoord origin is upper left 0:279 1 (const int) 0:279 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -2216,8 +2218,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out index 3a05bca8..c1c90f4b 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -46,9 +46,9 @@ Shader version: 450 0:26 0 (const int) 0:26 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) -0:? 'Pos' (out 4-component vector of float Position) Linked vertex stage: @@ -101,9 +101,9 @@ Shader version: 450 0:26 0 (const int) 0:26 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) -0:? 'Pos' (out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out index 717c376a..918246b6 100644 --- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out @@ -326,6 +326,8 @@ gl_FragCoord origin is upper left 0:95 1 (const int) 0:95 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -345,9 +347,7 @@ gl_FragCoord origin is upper left 0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) 0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) 0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -680,6 +680,8 @@ gl_FragCoord origin is upper left 0:95 1 (const int) 0:95 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -699,9 +701,7 @@ gl_FragCoord origin is upper left 0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) 0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) 0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 @@ -796,6 +796,14 @@ gl_FragCoord origin is upper left Decorate 214(Depth) BuiltIn FragDepth Decorate 220(g_sSamp) DescriptorSet 0 Decorate 220(g_sSamp) Binding 0 + MemberDecorate 222($Global) 0 Offset 0 + MemberDecorate 222($Global) 1 Offset 8 + MemberDecorate 222($Global) 2 Offset 16 + MemberDecorate 222($Global) 3 Offset 32 + MemberDecorate 222($Global) 4 Offset 48 + MemberDecorate 222($Global) 5 Offset 56 + MemberDecorate 222($Global) 6 Offset 64 + MemberDecorate 222($Global) 7 Offset 80 Decorate 222($Global) Block Decorate 224 DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out index 9465c62b..7d8d9be6 100644 --- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -59,11 +59,11 @@ ERROR: node is still EOpNull! 0:22 1 (const int) 0:22 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex2dmsf4' (uniform texture2DMS) 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -124,10 +124,10 @@ ERROR: node is still EOpNull! 0:22 1 (const int) 0:22 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex2dmsf4' (uniform texture2DMS) 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out index b31921b4..42f94cae 100755 --- a/Test/baseResults/hlsl.init.frag.out +++ b/Test/baseResults/hlsl.init.frag.out @@ -132,6 +132,8 @@ gl_FragCoord origin is upper left 0:35 'a1' (global 4-component vector of float) 0:35 Branch: Return 0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a1' (global 4-component vector of float) 0:? 'b1' (global 4-component vector of float) 0:? 'a1i' (global 4-component vector of float) @@ -150,8 +152,6 @@ gl_FragCoord origin is upper left 0:? 'single2' (global structure{temp 2-component vector of uint v}) 0:? 'single3' (global structure{temp structure{temp int f} s1}) 0:? 'single4' (global structure{temp structure{temp 2-component vector of uint v} s1}) -0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'input' (layout(location=0 ) in 4-component vector of float) Linked fragment stage: @@ -290,6 +290,8 @@ gl_FragCoord origin is upper left 0:35 'a1' (global 4-component vector of float) 0:35 Branch: Return 0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a1' (global 4-component vector of float) 0:? 'b1' (global 4-component vector of float) 0:? 'a1i' (global 4-component vector of float) @@ -308,8 +310,6 @@ gl_FragCoord origin is upper left 0:? 'single2' (global structure{temp 2-component vector of uint v}) 0:? 'single3' (global structure{temp structure{temp int f} s1}) 0:? 'single4' (global structure{temp structure{temp 2-component vector of uint v} s1}) -0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'input' (layout(location=0 ) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out index cd366fcb..732e2544 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -309,6 +309,12 @@ local_size = (1, 1, 1) 0:? 4.000000 0:128 Branch: Return 0:? Linker Objects +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) +0:? 'inF2' (layout(location=2 ) in 4-component vector of float) +0:? 'inU0' (layout(location=3 ) in 4-component vector of uint) +0:? 'inU1' (layout(location=4 ) in 4-component vector of uint) 0:? 'gs_ua' (shared uint) 0:? 'gs_ub' (shared uint) 0:? 'gs_uc' (shared uint) @@ -321,12 +327,6 @@ 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:? '@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) -0:? 'inF2' (layout(location=2 ) in 4-component vector of float) -0:? 'inU0' (layout(location=3 ) in 4-component vector of uint) -0:? 'inU1' (layout(location=4 ) in 4-component vector of uint) Linked compute stage: @@ -642,6 +642,12 @@ local_size = (1, 1, 1) 0:? 4.000000 0:128 Branch: Return 0:? Linker Objects +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) +0:? 'inF2' (layout(location=2 ) in 4-component vector of float) +0:? 'inU0' (layout(location=3 ) in 4-component vector of uint) +0:? 'inU1' (layout(location=4 ) in 4-component vector of uint) 0:? 'gs_ua' (shared uint) 0:? 'gs_ub' (shared uint) 0:? 'gs_uc' (shared uint) @@ -654,12 +660,6 @@ 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:? '@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) -0:? 'inF2' (layout(location=2 ) in 4-component vector of float) -0:? 'inU0' (layout(location=3 ) in 4-component vector of uint) -0:? 'inU1' (layout(location=4 ) in 4-component vector of uint) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index d5a0f998..a5a119a8 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -2782,6 +2782,7 @@ gl_FragCoord origin is upper left 0:492 0 (const int) 0:492 Branch: Return 0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:? 'gs_ua' (shared uint) 0:? 'gs_ub' (shared uint) 0:? 'gs_uc' (shared uint) @@ -2794,7 +2795,6 @@ gl_FragCoord origin is upper left 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:? 'color' (layout(location=0 ) out 4-component vector of float) Linked fragment stage: @@ -5583,6 +5583,7 @@ gl_FragCoord origin is upper left 0:492 0 (const int) 0:492 Branch: Return 0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) 0:? 'gs_ua' (shared uint) 0:? 'gs_ub' (shared uint) 0:? 'gs_uc' (shared uint) @@ -5595,7 +5596,6 @@ gl_FragCoord origin is upper left 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:? 'color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out index 72b6fbcc..b57a5a9a 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.vert.out +++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out @@ -114,6 +114,11 @@ Shader version: 450 0:? 4.000000 0:? 4.000000 0:? Linker Objects +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) +0:? 'inF2' (layout(location=2 ) in 4-component vector of float) +0:? 'inI0' (layout(location=3 ) in 4-component vector of int) 0:? 'gs_ua' (global uint) 0:? 'gs_ub' (global uint) 0:? 'gs_uc' (global uint) @@ -126,11 +131,6 @@ Shader version: 450 0:? 'gs_ua4' (global 4-component vector of uint) 0:? 'gs_ub4' (global 4-component vector of uint) 0:? 'gs_uc4' (global 4-component vector of uint) -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) -0:? 'inF2' (layout(location=2 ) in 4-component vector of float) -0:? 'inI0' (layout(location=3 ) in 4-component vector of int) Linked vertex stage: @@ -251,6 +251,11 @@ Shader version: 450 0:? 4.000000 0:? 4.000000 0:? Linker Objects +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) +0:? 'inF2' (layout(location=2 ) in 4-component vector of float) +0:? 'inI0' (layout(location=3 ) in 4-component vector of int) 0:? 'gs_ua' (global uint) 0:? 'gs_ub' (global uint) 0:? 'gs_uc' (global uint) @@ -263,11 +268,6 @@ Shader version: 450 0:? 'gs_ua4' (global 4-component vector of uint) 0:? 'gs_ub4' (global 4-component vector of uint) 0:? 'gs_uc4' (global 4-component vector of uint) -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) -0:? 'inF2' (layout(location=2 ) in 4-component vector of float) -0:? 'inI0' (layout(location=3 ) in 4-component vector of int) // Module Version 10000 // Generated by (magic number): 80001 @@ -276,7 +276,7 @@ Shader version: 450 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "VertexShaderFunction" 85 122 123 124 127 + EntryPoint Vertex 4 "VertexShaderFunction" 85 102 103 104 107 Name 4 "VertexShaderFunction" Name 15 "VertexShaderFunctionS(f1;f1;f1;i1;" Name 11 "inF0" @@ -311,27 +311,27 @@ Shader version: 450 Name 66 "inF1" Name 67 "inF2" Name 85 "@entryPointOutput" - Name 103 "gs_ua" - Name 104 "gs_ub" - Name 105 "gs_uc" - Name 108 "gs_ua2" - Name 109 "gs_ub2" - Name 110 "gs_uc2" - Name 113 "gs_ua3" - Name 114 "gs_ub3" - Name 115 "gs_uc3" - Name 118 "gs_ua4" - Name 119 "gs_ub4" - Name 120 "gs_uc4" - Name 122 "inF0" - Name 123 "inF1" - Name 124 "inF2" - Name 127 "inI0" + Name 102 "inF0" + Name 103 "inF1" + Name 104 "inF2" + Name 107 "inI0" + Name 110 "gs_ua" + Name 111 "gs_ub" + Name 112 "gs_uc" + Name 115 "gs_ua2" + Name 116 "gs_ub2" + Name 117 "gs_uc2" + Name 120 "gs_ua3" + Name 121 "gs_ub3" + Name 122 "gs_uc3" + Name 125 "gs_ua4" + Name 126 "gs_ub4" + Name 127 "gs_uc4" Decorate 85(@entryPointOutput) Location 0 - Decorate 122(inF0) Location 0 - Decorate 123(inF1) Location 1 - Decorate 124(inF2) Location 2 - Decorate 127(inI0) Location 3 + Decorate 102(inF0) Location 0 + Decorate 103(inF1) Location 1 + Decorate 104(inF2) Location 2 + Decorate 107(inI0) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -375,33 +375,33 @@ Shader version: 450 94: 53 ConstantComposite 93 93 93 97: 61(fvec4) ConstantComposite 86 86 86 86 98: 62 ConstantComposite 97 97 97 97 - 101: TypeInt 32 0 - 102: TypePointer Private 101(int) - 103(gs_ua): 102(ptr) Variable Private - 104(gs_ub): 102(ptr) Variable Private - 105(gs_uc): 102(ptr) Variable Private - 106: TypeVector 101(int) 2 - 107: TypePointer Private 106(ivec2) - 108(gs_ua2): 107(ptr) Variable Private - 109(gs_ub2): 107(ptr) Variable Private - 110(gs_uc2): 107(ptr) Variable Private - 111: TypeVector 101(int) 3 - 112: TypePointer Private 111(ivec3) - 113(gs_ua3): 112(ptr) Variable Private - 114(gs_ub3): 112(ptr) Variable Private - 115(gs_uc3): 112(ptr) Variable Private - 116: TypeVector 101(int) 4 - 117: TypePointer Private 116(ivec4) - 118(gs_ua4): 117(ptr) Variable Private - 119(gs_ub4): 117(ptr) Variable Private - 120(gs_uc4): 117(ptr) Variable Private - 121: TypePointer Input 61(fvec4) - 122(inF0): 121(ptr) Variable Input - 123(inF1): 121(ptr) Variable Input - 124(inF2): 121(ptr) Variable Input - 125: TypeVector 8(int) 4 - 126: TypePointer Input 125(ivec4) - 127(inI0): 126(ptr) Variable Input + 101: TypePointer Input 61(fvec4) + 102(inF0): 101(ptr) Variable Input + 103(inF1): 101(ptr) Variable Input + 104(inF2): 101(ptr) Variable Input + 105: TypeVector 8(int) 4 + 106: TypePointer Input 105(ivec4) + 107(inI0): 106(ptr) Variable Input + 108: TypeInt 32 0 + 109: TypePointer Private 108(int) + 110(gs_ua): 109(ptr) Variable Private + 111(gs_ub): 109(ptr) Variable Private + 112(gs_uc): 109(ptr) Variable Private + 113: TypeVector 108(int) 2 + 114: TypePointer Private 113(ivec2) + 115(gs_ua2): 114(ptr) Variable Private + 116(gs_ub2): 114(ptr) Variable Private + 117(gs_uc2): 114(ptr) Variable Private + 118: TypeVector 108(int) 3 + 119: TypePointer Private 118(ivec3) + 120(gs_ua3): 119(ptr) Variable Private + 121(gs_ub3): 119(ptr) Variable Private + 122(gs_uc3): 119(ptr) Variable Private + 123: TypeVector 108(int) 4 + 124: TypePointer Private 123(ivec4) + 125(gs_ua4): 124(ptr) Variable Private + 126(gs_ub4): 124(ptr) Variable Private + 127(gs_uc4): 124(ptr) Variable Private 4(VertexShaderFunction): 2 Function None 3 5: Label Store 85(@entryPointOutput) 87 diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index 9c1b4ad9..288a0f3f 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -158,6 +158,8 @@ gl_FragCoord origin is upper left 0:54 1 (const int) 0:54 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex2dmsf4' (uniform texture2DMS) 0:? 'g_tTex2dmsi4' (uniform itexture2DMS) @@ -165,9 +167,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -332,6 +332,8 @@ gl_FragCoord origin is upper left 0:54 1 (const int) 0:54 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex2dmsf4' (uniform texture2DMS) 0:? 'g_tTex2dmsi4' (uniform itexture2DMS) @@ -339,9 +341,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray) 0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out index ed2951f7..8c4f7c8d 100644 --- a/Test/baseResults/hlsl.load.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -158,6 +158,8 @@ gl_FragCoord origin is upper left 0:70 1 (const int) 0:70 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -180,9 +182,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -347,6 +347,8 @@ gl_FragCoord origin is upper left 0:70 1 (const int) 0:70 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -369,9 +371,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out index 3a4b3fca..c8e8eb63 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -209,6 +209,8 @@ gl_FragCoord origin is upper left 0:75 1 (const int) 0:75 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -231,9 +233,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -449,6 +449,8 @@ gl_FragCoord origin is upper left 0:75 1 (const int) 0:75 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -471,9 +473,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index 9495c602..a86f0aea 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -195,6 +195,7 @@ Shader version: 450 0:69 0 (const int) 0:69 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -217,8 +218,7 @@ Shader version: 450 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Pos' (out 4-component vector of float Position) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked vertex stage: @@ -420,6 +420,7 @@ Shader version: 450 0:69 0 (const int) 0:69 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -442,8 +443,7 @@ Shader version: 450 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Pos' (out 4-component vector of float Position) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index 560d8f5d..c80ddcfe 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -65,13 +65,13 @@ gl_FragCoord origin is upper left 0:37 1 (const int) 0:37 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_tTexbf4_test' (layout(binding=0 rgba32f ) uniform samplerBuffer) 0:? 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) 0:? 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) 0:? 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -143,13 +143,13 @@ gl_FragCoord origin is upper left 0:37 1 (const int) 0:37 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_tTexbf4_test' (layout(binding=0 rgba32f ) uniform samplerBuffer) 0:? 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) 0:? 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) 0:? 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out index 6d64b94c..c0cd1528 100644 --- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -68,13 +68,13 @@ gl_FragCoord origin is upper left 0:37 1 (const int) 0:37 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer) 0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) 0:? 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) 0:? 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -149,13 +149,13 @@ gl_FragCoord origin is upper left 0:37 1 (const int) 0:37 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer) 0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) 0:? 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) 0:? 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index 069e05d0..9a14b658 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -245,6 +245,8 @@ gl_FragCoord origin is upper left 0:75 1 (const int) 0:75 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -267,9 +269,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -521,6 +521,8 @@ gl_FragCoord origin is upper left 0:75 1 (const int) 0:75 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -543,9 +545,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index ed89ee8d..fb58eff3 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -182,6 +182,8 @@ gl_FragCoord origin is upper left 0:68 1 (const int) 0:68 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -204,9 +206,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -395,6 +395,8 @@ gl_FragCoord origin is upper left 0:68 1 (const int) 0:68 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -417,9 +419,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out index 7b263727..e9cc3940 100644 --- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out @@ -43,11 +43,11 @@ gl_FragCoord origin is upper left 0:31 0 (const int) 0:31 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) 0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) 0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -97,11 +97,11 @@ gl_FragCoord origin is upper left 0:31 0 (const int) 0:31 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) 0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) 0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out index 8ac94d08..a81ddf57 100644 --- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out @@ -74,6 +74,8 @@ gl_FragCoord origin is upper left 0:56 1 (const int) 0:56 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -90,9 +92,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -173,6 +173,8 @@ gl_FragCoord origin is upper left 0:56 1 (const int) 0:56 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -189,9 +191,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out index ca590157..b5435bac 100644 --- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out @@ -92,6 +92,8 @@ gl_FragCoord origin is upper left 0:61 1 (const int) 0:61 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -108,9 +110,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -209,6 +209,8 @@ gl_FragCoord origin is upper left 0:61 1 (const int) 0:61 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -225,9 +227,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out index 9e6593ee..d9ae7d5b 100644 --- a/Test/baseResults/hlsl.logical.binary.frag.out +++ b/Test/baseResults/hlsl.logical.binary.frag.out @@ -56,7 +56,7 @@ gl_FragCoord origin is upper left 0:18 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) Linked fragment stage: @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left 0:18 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.logical.binary.vec.frag.out b/Test/baseResults/hlsl.logical.binary.vec.frag.out index 2ada44a3..32b5a385 100644 --- a/Test/baseResults/hlsl.logical.binary.vec.frag.out +++ b/Test/baseResults/hlsl.logical.binary.vec.frag.out @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left 0:23 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) Linked fragment stage: @@ -245,7 +245,7 @@ gl_FragCoord origin is upper left 0:23 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out index e3def3c0..1aaa69a2 100644 --- a/Test/baseResults/hlsl.logical.unary.frag.out +++ b/Test/baseResults/hlsl.logical.unary.frag.out @@ -82,7 +82,7 @@ gl_FragCoord origin is upper left 0:26 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) Linked fragment stage: @@ -171,7 +171,7 @@ gl_FragCoord origin is upper left 0:26 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index 0066a1de..9b8e4567 100755 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -10,7 +10,7 @@ gl_FragCoord origin is upper left 0:10 Branch: Return with expression 0:10 'inFloat1' (in 1-component vector of float) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) Linked fragment stage: @@ -27,7 +27,7 @@ gl_FragCoord origin is upper left 0:10 Branch: Return with expression 0:10 'inFloat1' (in 1-component vector of float) 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) // Module Version 10000 // Generated by (magic number): 80001 @@ -51,6 +51,22 @@ gl_FragCoord origin is upper left MemberName 27($Global) 4 "dmat23" MemberName 27($Global) 5 "int44" Name 29 "" + 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) 2 RowMajor + MemberDecorate 27($Global) 2 Offset 32 + MemberDecorate 27($Global) 2 MatrixStride 16 + MemberDecorate 27($Global) 3 RowMajor + MemberDecorate 27($Global) 3 Offset 48 + MemberDecorate 27($Global) 3 MatrixStride 16 + MemberDecorate 27($Global) 4 RowMajor + MemberDecorate 27($Global) 4 Offset 80 + MemberDecorate 27($Global) 4 MatrixStride 16 + 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 2: TypeVoid diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out index 8c637c14..420ba9f5 100644 --- a/Test/baseResults/hlsl.matrixindex.frag.out +++ b/Test/baseResults/hlsl.matrixindex.frag.out @@ -128,7 +128,7 @@ gl_FragCoord origin is upper left 0:48 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) Linked fragment stage: @@ -263,7 +263,7 @@ gl_FragCoord origin is upper left 0:48 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out index 34d326e0..84c7a8c8 100644 --- a/Test/baseResults/hlsl.mintypes.frag.out +++ b/Test/baseResults/hlsl.mintypes.frag.out @@ -41,7 +41,7 @@ gl_FragCoord origin is upper left 0:48 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform mediump float b1a, layout(offset=4 ) uniform mediump float b1b}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform mediump float b1a, layout(offset=4 ) uniform mediump float b1b}) Linked fragment stage: @@ -89,7 +89,7 @@ gl_FragCoord origin is upper left 0:48 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform mediump float b1a, layout(offset=4 ) uniform mediump float b1b}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform mediump float b1a, layout(offset=4 ) uniform mediump float b1b}) // Module Version 10000 // Generated by (magic number): 80001 @@ -151,7 +151,9 @@ gl_FragCoord origin is upper left Decorate 47 RelaxedPrecision Decorate 58(Color) Location 0 MemberDecorate 62($Global) 0 RelaxedPrecision + MemberDecorate 62($Global) 0 Offset 0 MemberDecorate 62($Global) 1 RelaxedPrecision + MemberDecorate 62($Global) 1 Offset 4 Decorate 62($Global) Block Decorate 64 DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index 8f8c42ae..f0d05abd 100755 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -21,9 +21,9 @@ Shader version: 450 0:10 'Index' (in uint VertexIndex) 0:10 Branch: Return 0:? Linker Objects -0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:? '@entryPointOutput' (out 4-component vector of float Position) 0:? 'Index' (in uint VertexIndex) +0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) Linked vertex stage: @@ -51,9 +51,9 @@ Shader version: 450 0:10 'Index' (in uint VertexIndex) 0:10 Branch: Return 0:? Linker Objects -0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:? '@entryPointOutput' (out 4-component vector of float Position) 0:? 'Index' (in uint VertexIndex) +0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out index e9205cfe..cd2af746 100644 --- a/Test/baseResults/hlsl.precise.frag.out +++ b/Test/baseResults/hlsl.precise.frag.out @@ -29,8 +29,8 @@ gl_FragCoord origin is upper left 0:12 0 (const int) 0:12 Branch: Return 0:? Linker Objects -0:? 'precisefloat' (noContraction global float) 0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float) +0:? 'precisefloat' (noContraction global float) Linked fragment stage: @@ -66,8 +66,8 @@ gl_FragCoord origin is upper left 0:12 0 (const int) 0:12 Branch: Return 0:? Linker Objects -0:? 'precisefloat' (noContraction global float) 0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float) +0:? 'precisefloat' (noContraction global float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out index a2e7176c..2c7425e1 100644 --- a/Test/baseResults/hlsl.promote.binary.frag.out +++ b/Test/baseResults/hlsl.promote.binary.frag.out @@ -78,7 +78,7 @@ gl_FragCoord origin is upper left 0:26 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) Linked fragment stage: @@ -163,7 +163,7 @@ gl_FragCoord origin is upper left 0:26 Branch: Return 0:? Linker Objects 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out index e3df54ff..01ced169 100644 --- a/Test/baseResults/hlsl.promotions.frag.out +++ b/Test/baseResults/hlsl.promotions.frag.out @@ -782,8 +782,8 @@ gl_FragCoord origin is upper left 0:200 0 (const int) 0:200 Branch: Return 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) Linked fragment stage: @@ -1572,8 +1572,8 @@ gl_FragCoord origin is upper left 0:200 0 (const int) 0:200 Branch: Return 0:? Linker Objects -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out index 22716ef1..123bd4cb 100644 --- a/Test/baseResults/hlsl.rw.atomics.frag.out +++ b/Test/baseResults/hlsl.rw.atomics.frag.out @@ -1945,6 +1945,7 @@ gl_FragCoord origin is upper left 0:243 0 (const int) 0:243 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (uniform sampler) 0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) 0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) @@ -1964,8 +1965,7 @@ gl_FragCoord origin is upper left 0:? 'g_tBuffF' (layout(r32f ) uniform imageBuffer) 0:? 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) 0:? 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) Linked fragment stage: @@ -3917,6 +3917,7 @@ gl_FragCoord origin is upper left 0:243 0 (const int) 0:243 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (uniform sampler) 0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) 0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) @@ -3936,8 +3937,7 @@ gl_FragCoord origin is upper left 0:? 'g_tBuffF' (layout(r32f ) uniform imageBuffer) 0:? 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) 0:? 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out index c6e3c89e..31ed4a98 100644 --- a/Test/baseResults/hlsl.rw.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -847,6 +847,7 @@ gl_FragCoord origin is upper left 0:139 0 (const int) 0:139 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -863,8 +864,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) Linked fragment stage: @@ -1718,6 +1718,7 @@ gl_FragCoord origin is upper left 0:139 0 (const int) 0:139 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) 0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) @@ -1734,8 +1735,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) 0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out index 904c2dab..8e40fd2e 100644 --- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out @@ -820,6 +820,7 @@ gl_FragCoord origin is upper left 0:139 0 (const int) 0:139 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) 0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) @@ -836,8 +837,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) 0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) 0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) Linked fragment stage: @@ -1664,6 +1664,7 @@ gl_FragCoord origin is upper left 0:139 0 (const int) 0:139 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) 0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) @@ -1680,8 +1681,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) 0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) 0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out index b8452c36..7ca7e3e4 100644 --- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out @@ -829,6 +829,7 @@ gl_FragCoord origin is upper left 0:139 0 (const int) 0:139 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df2' (layout(rg32f ) uniform image1D) 0:? 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) @@ -845,8 +846,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df2a' (layout(rg32f ) uniform image2DArray) 0:? 'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray) 0:? 'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) Linked fragment stage: @@ -1682,6 +1682,7 @@ gl_FragCoord origin is upper left 0:139 0 (const int) 0:139 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df2' (layout(rg32f ) uniform image1D) 0:? 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) @@ -1698,8 +1699,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df2a' (layout(rg32f ) uniform image2DArray) 0:? 'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray) 0:? 'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out index 6c6f187b..f223e4bf 100644 --- a/Test/baseResults/hlsl.sample.array.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -137,6 +137,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -148,8 +150,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -293,6 +293,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -304,8 +306,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out index de9a4f4b..a222125a 100644 --- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -247,6 +247,8 @@ gl_FragCoord origin is upper left 0:89 1 (const int) 0:89 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_sSamp2D_b' (uniform sampler) @@ -263,8 +265,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -516,6 +516,8 @@ gl_FragCoord origin is upper left 0:89 1 (const int) 0:89 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_sSamp2D_b' (uniform sampler) @@ -532,8 +534,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out index 67bf043f..a148a86e 100644 --- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -155,6 +155,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -169,8 +171,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -332,6 +332,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -346,8 +348,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out index 83a0e8b7..abdf0327 100644 --- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -116,6 +116,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -124,8 +126,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -248,6 +248,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -256,8 +258,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out index 5a97ed96..bfbad5c2 100644 --- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out @@ -64,12 +64,12 @@ gl_FragCoord origin is upper left 0:23 0 (const int) 0:23 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df1' (uniform texture1D) 0:? 'g_tTex1df2' (uniform texture1D) 0:? 'g_tTex1df3' (uniform texture1D) 0:? 'g_tTex1df4' (uniform texture1D) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) Linked fragment stage: @@ -140,12 +140,12 @@ gl_FragCoord origin is upper left 0:23 0 (const int) 0:23 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df1' (uniform texture1D) 0:? 'g_tTex1df2' (uniform texture1D) 0:? 'g_tTex1df3' (uniform texture1D) 0:? 'g_tTex1df4' (uniform texture1D) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out index b2b38b65..05ac32a5 100644 --- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -155,6 +155,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -166,8 +168,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -329,6 +329,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -340,8 +342,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out index c7949146..1442fc3c 100644 --- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -185,6 +185,8 @@ gl_FragCoord origin is upper left 0:50 1 (const int) 0:50 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -199,8 +201,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -392,6 +392,8 @@ gl_FragCoord origin is upper left 0:50 1 (const int) 0:50 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -406,8 +408,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index 900eb4b0..01facb65 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -173,6 +173,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -187,8 +189,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -368,6 +368,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -382,8 +384,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index bd216222..17aef7ae 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -128,6 +128,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -136,8 +138,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -272,6 +272,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -280,8 +282,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index b05595d5..a1acd797 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -164,6 +164,8 @@ gl_FragCoord origin is upper left 0:59 1 (const int) 0:59 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -186,8 +188,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -358,6 +358,8 @@ gl_FragCoord origin is upper left 0:59 1 (const int) 0:59 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -380,8 +382,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index aa9b3795..08f3b400 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -155,6 +155,8 @@ gl_FragCoord origin is upper left 0:60 1 (const int) 0:60 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -177,8 +179,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -340,6 +340,8 @@ gl_FragCoord origin is upper left 0:60 1 (const int) 0:60 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -362,8 +364,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index fd3250f5..70670a0f 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -128,6 +128,8 @@ gl_FragCoord origin is upper left 0:65 1 (const int) 0:65 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -150,8 +152,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -286,6 +286,8 @@ gl_FragCoord origin is upper left 0:65 1 (const int) 0:65 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -308,8 +310,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index 05695ed4..d4a86361 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -134,6 +134,8 @@ gl_FragCoord origin is upper left 0:66 1 (const int) 0:66 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -156,8 +158,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -298,6 +298,8 @@ gl_FragCoord origin is upper left 0:66 1 (const int) 0:66 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -320,8 +322,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index 40546103..2746fa77 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -182,6 +182,8 @@ gl_FragCoord origin is upper left 0:59 1 (const int) 0:59 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -204,8 +206,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -394,6 +394,8 @@ gl_FragCoord origin is upper left 0:59 1 (const int) 0:59 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -416,8 +418,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index a5923367..e6c43725 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -173,6 +173,8 @@ gl_FragCoord origin is upper left 0:60 1 (const int) 0:60 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -195,8 +197,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -376,6 +376,8 @@ gl_FragCoord origin is upper left 0:60 1 (const int) 0:60 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -398,8 +400,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index bfbfbb29..f66055df 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -140,6 +140,8 @@ gl_FragCoord origin is upper left 0:65 1 (const int) 0:65 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -162,8 +164,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -310,6 +310,8 @@ gl_FragCoord origin is upper left 0:65 1 (const int) 0:65 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -332,8 +334,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index 0e38a7d6..3b2b9126 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -146,6 +146,8 @@ gl_FragCoord origin is upper left 0:66 1 (const int) 0:66 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -168,8 +170,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -322,6 +322,8 @@ gl_FragCoord origin is upper left 0:66 1 (const int) 0:66 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -344,8 +346,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out index 46a6bbc1..2a0d77a0 100644 --- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -191,6 +191,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -202,8 +204,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -401,6 +401,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -412,8 +414,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out index 395efc26..feaba770 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -239,6 +239,8 @@ gl_FragCoord origin is upper left 0:50 1 (const int) 0:50 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -253,8 +255,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -500,6 +500,8 @@ gl_FragCoord origin is upper left 0:50 1 (const int) 0:50 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -514,8 +516,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index 2e79be32..f6d37c3b 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -225,6 +225,7 @@ Shader version: 450 0:48 0 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -239,7 +240,6 @@ Shader version: 450 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Pos' (out 4-component vector of float Position) Linked vertex stage: @@ -471,6 +471,7 @@ Shader version: 450 0:48 0 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -485,7 +486,6 @@ Shader version: 450 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Pos' (out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out index 7ef5e077..7938e527 100644 --- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -209,6 +209,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -223,8 +225,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -440,6 +440,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -454,8 +456,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out index 2043f38a..dee78bc4 100644 --- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -146,6 +146,8 @@ gl_FragCoord origin is upper left 0:38 1 (const int) 0:38 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -157,8 +159,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -311,6 +311,8 @@ gl_FragCoord origin is upper left 0:38 1 (const int) 0:38 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -322,8 +324,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCubeArray) 0:? 'g_tTexcdi4' (uniform itextureCubeArray) 0:? 'g_tTexcdu4' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out index 351e2ed1..afdedb7d 100644 --- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -155,6 +155,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -166,8 +168,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -329,6 +329,8 @@ gl_FragCoord origin is upper left 0:42 1 (const int) 0:42 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -340,8 +342,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4a' (uniform textureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out index d37090fa..34a65978 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -185,6 +185,8 @@ gl_FragCoord origin is upper left 0:51 1 (const int) 0:51 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -200,8 +202,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -393,6 +393,8 @@ gl_FragCoord origin is upper left 0:51 1 (const int) 0:51 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp2d' (uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) @@ -408,8 +410,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index 04382997..04d0870e 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -171,6 +171,7 @@ Shader version: 450 0:48 0 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -185,7 +186,6 @@ Shader version: 450 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Pos' (out 4-component vector of float Position) Linked vertex stage: @@ -363,6 +363,7 @@ Shader version: 450 0:48 0 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Pos' (out 4-component vector of float Position) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -377,7 +378,6 @@ Shader version: 450 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Pos' (out 4-component vector of float Position) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out index 0f0f9681..aa779610 100644 --- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -173,6 +173,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -187,8 +189,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -368,6 +368,8 @@ gl_FragCoord origin is upper left 0:48 1 (const int) 0:48 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) @@ -382,8 +384,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out index 8eb74cd0..056a4f13 100644 --- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -128,6 +128,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -136,8 +138,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) Linked fragment stage: @@ -272,6 +272,8 @@ gl_FragCoord origin is upper left 0:36 1 (const int) 0:36 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) @@ -280,8 +282,6 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4' (uniform texture2DArray) 0:? 'g_tTex2di4' (uniform itexture2DArray) 0:? 'g_tTex2du4' (uniform utexture2DArray) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'Depth' (out float FragDepth) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out index 8593db62..94c1b2ad 100644 --- a/Test/baseResults/hlsl.stringtoken.frag.out +++ b/Test/baseResults/hlsl.stringtoken.frag.out @@ -25,9 +25,9 @@ gl_FragCoord origin is upper left 0:19 0 (const int) 0:19 Branch: Return 0:? Linker Objects -0:? 'TestTexture' (uniform texture2D) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) +0:? 'TestTexture' (uniform texture2D) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) Linked fragment stage: @@ -59,9 +59,9 @@ gl_FragCoord origin is upper left 0:19 0 (const int) 0:19 Branch: Return 0:? Linker Objects -0:? 'TestTexture' (uniform texture2D) 0:? 'Color' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) +0:? 'TestTexture' (uniform texture2D) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) // Module Version 10000 // Generated by (magic number): 80001 @@ -83,6 +83,7 @@ gl_FragCoord origin is upper left Name 28 "" Decorate 19(Color) Location 0 Decorate 25(TestTexture) DescriptorSet 0 + MemberDecorate 26($Global) 0 Offset 0 Decorate 26($Global) Block Decorate 28 DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index 5fef9599..c14018ea 100755 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -26,9 +26,7 @@ gl_FragCoord origin is upper left 0:42 'input' (layout(location=0 ) in 4-component vector of float) 0:42 Branch: Return 0:? Linker Objects -0:? 's2' (global structure{temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a' (layout(location=1 ) smooth in 4-component vector of float) 0:? 'b' (layout(location=2 ) flat in bool) @@ -38,6 +36,8 @@ gl_FragCoord origin is upper left 0:? 'ff2' (layout(location=5 offset=4 ) in bool) 0:? 'ff3' (layout(location=6 binding=0 offset=4 ) in bool) 0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) +0:? 's2' (global structure{temp 4-component vector of float i}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) Linked fragment stage: @@ -66,9 +66,7 @@ gl_FragCoord origin is upper left 0:42 'input' (layout(location=0 ) in 4-component vector of float) 0:42 Branch: Return 0:? Linker Objects -0:? 's2' (global structure{temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:? 'a' (layout(location=1 ) smooth in 4-component vector of float) 0:? 'b' (layout(location=2 ) flat in bool) @@ -78,15 +76,17 @@ gl_FragCoord origin is upper left 0:? 'ff2' (layout(location=5 offset=4 ) in bool) 0:? 'ff3' (layout(location=6 binding=0 offset=4 ) in bool) 0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) +0:? 's2' (global structure{temp 4-component vector of float i}) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 49 +// Id's are bound by 50 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 25 30 31 38 40 42 45 46 47 48 + EntryPoint Fragment 4 "PixelShaderFunction" 25 30 31 34 36 38 41 42 43 44 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 8 "FS" @@ -98,44 +98,51 @@ gl_FragCoord origin is upper left Name 25 "ff4" Name 30 "@entryPointOutput" Name 31 "input" - Name 34 "myS" - MemberName 34(myS) 0 "b" - MemberName 34(myS) 1 "c" - MemberName 34(myS) 2 "a" - MemberName 34(myS) 3 "d" - Name 35 "$Global" - MemberName 35($Global) 0 "s1" - MemberName 35($Global) 1 "ff5" - MemberName 35($Global) 2 "ff6" - Name 37 "" - Name 38 "a" - Name 40 "b" - Name 42 "c" - Name 45 "d" - Name 46 "ff1" - Name 47 "ff2" - Name 48 "ff3" + Name 34 "a" + Name 36 "b" + Name 38 "c" + Name 41 "d" + Name 42 "ff1" + Name 43 "ff2" + Name 44 "ff3" + Name 46 "myS" + MemberName 46(myS) 0 "b" + MemberName 46(myS) 1 "c" + MemberName 46(myS) 2 "a" + MemberName 46(myS) 3 "d" + Name 47 "$Global" + MemberName 47($Global) 0 "s1" + MemberName 47($Global) 1 "ff5" + MemberName 47($Global) 2 "ff6" + Name 49 "" Decorate 25(ff4) Offset 4 Decorate 25(ff4) Location 7 Decorate 25(ff4) Binding 0 Decorate 30(@entryPointOutput) Location 0 Decorate 31(input) Location 0 - Decorate 35($Global) Block - Decorate 37 DescriptorSet 0 - Decorate 38(a) Location 1 - Decorate 40(b) Flat - Decorate 40(b) Location 2 - Decorate 42(c) NoPerspective - Decorate 42(c) Centroid - Decorate 42(c) Location 3 - Decorate 45(d) Centroid - Decorate 45(d) Location 4 - Decorate 46(ff1) BuiltIn FrontFacing - Decorate 47(ff2) Offset 4 - Decorate 47(ff2) Location 5 - Decorate 48(ff3) Offset 4 - Decorate 48(ff3) Location 6 - Decorate 48(ff3) Binding 0 + Decorate 34(a) Location 1 + Decorate 36(b) Flat + Decorate 36(b) Location 2 + Decorate 38(c) NoPerspective + Decorate 38(c) Centroid + Decorate 38(c) Location 3 + Decorate 41(d) Centroid + Decorate 41(d) Location 4 + Decorate 42(ff1) BuiltIn FrontFacing + Decorate 43(ff2) Offset 4 + Decorate 43(ff2) Location 5 + Decorate 44(ff3) Offset 4 + Decorate 44(ff3) Location 6 + Decorate 44(ff3) Binding 0 + MemberDecorate 46(myS) 0 Offset 0 + MemberDecorate 46(myS) 1 Offset 4 + MemberDecorate 46(myS) 2 Offset 16 + MemberDecorate 46(myS) 3 Offset 32 + MemberDecorate 47($Global) 0 Offset 0 + MemberDecorate 47($Global) 1 Offset 1620 + MemberDecorate 47($Global) 2 Offset 1636 + Decorate 47($Global) Block + Decorate 49 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool @@ -155,21 +162,22 @@ gl_FragCoord origin is upper left 29: TypePointer Output 18(fvec4) 30(@entryPointOutput): 29(ptr) Variable Output 31(input): 24(ptr) Variable Input - 34(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4) - 35($Global): TypeStruct 34(myS) 17(float) 17(float) - 36: TypePointer Uniform 35($Global) - 37: 36(ptr) Variable Uniform - 38(a): 24(ptr) Variable Input - 39: TypePointer Input 6(bool) - 40(b): 39(ptr) Variable Input - 41: TypePointer Input 17(float) - 42(c): 41(ptr) Variable Input - 43: TypeVector 17(float) 2 - 44: TypePointer Input 43(fvec2) - 45(d): 44(ptr) Variable Input - 46(ff1): 39(ptr) Variable Input - 47(ff2): 39(ptr) Variable Input - 48(ff3): 39(ptr) Variable Input + 34(a): 24(ptr) Variable Input + 35: TypePointer Input 6(bool) + 36(b): 35(ptr) Variable Input + 37: TypePointer Input 17(float) + 38(c): 37(ptr) Variable Input + 39: TypeVector 17(float) 2 + 40: TypePointer Input 39(fvec2) + 41(d): 40(ptr) Variable Input + 42(ff1): 35(ptr) Variable Input + 43(ff2): 35(ptr) Variable Input + 44(ff3): 35(ptr) Variable Input + 45: TypeInt 32 0 + 46(myS): TypeStruct 45(int) 45(int) 18(fvec4) 18(fvec4) + 47($Global): TypeStruct 46(myS) 17(float) 17(float) + 48: TypePointer Uniform 47($Global) + 49: 48(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label 10(s3): 9(ptr) Variable Function diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out index 0769cde4..d000257e 100644 --- a/Test/baseResults/hlsl.tx.bracket.frag.out +++ b/Test/baseResults/hlsl.tx.bracket.frag.out @@ -186,6 +186,7 @@ gl_FragCoord origin is upper left 0:72 0 (const int) 0:72 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -202,8 +203,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (uniform texture2DArray) 0:? 'g_tTex2di4a' (uniform itexture2DArray) 0:? 'g_tTex2du4a' (uniform utexture2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) Linked fragment stage: @@ -396,6 +396,7 @@ gl_FragCoord origin is upper left 0:72 0 (const int) 0:72 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1di4' (uniform itexture1D) @@ -412,8 +413,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex2df4a' (uniform texture2DArray) 0:? 'g_tTex2di4a' (uniform itexture2DArray) 0:? 'g_tTex2du4a' (uniform utexture2DArray) -0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/Test/baseResults/maxClipDistances.vert.out b/Test/baseResults/maxClipDistances.vert.out index 5d44a663..4ad4ef15 100644 --- a/Test/baseResults/maxClipDistances.vert.out +++ b/Test/baseResults/maxClipDistances.vert.out @@ -5,7 +5,6 @@ Shader version: 130 0:5 Function Parameters: 0:? Linker Objects 0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance) -0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance) 0:? 'gl_VertexID' (gl_VertexId int VertexId) @@ -18,6 +17,5 @@ Shader version: 130 0:5 Function Parameters: 0:? Linker Objects 0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance) -0:? 'gl_ClipDistance' (smooth out 8-element array of float ClipDistance) 0:? 'gl_VertexID' (gl_VertexId int VertexId) diff --git a/Test/baseResults/specExamples.frag.out b/Test/baseResults/specExamples.frag.out index 848839c6..711c529d 100644 --- a/Test/baseResults/specExamples.frag.out +++ b/Test/baseResults/specExamples.frag.out @@ -318,12 +318,9 @@ ERROR: node is still EOpNull! 0:? 'anon@1' (in block{in 4-component vector of float LightPos, in 3-component vector of float LightColor}) 0:? 'Materiala' (in block{in 4-component vector of float Color, in 2-component vector of float TexCoord}) 0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) -0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'factor' (layout(location=3 index=1 ) out 4-component vector of float) 0:? 'colors' (layout(location=2 ) out 3-element array of 4-component vector of float) 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) -0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) -0:? 'anon@2' (in block{in float FogFragCoord gl_FogFragCoord, in implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, flat in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) 0:? 'anon@2' (in block{in float FogFragCoord gl_FogFragCoord, in implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, flat in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) @@ -607,11 +604,8 @@ ERROR: node is still EOpNull! 0:? 'anon@1' (in block{in 4-component vector of float LightPos, in 3-component vector of float LightColor}) 0:? 'Materiala' (in block{in 4-component vector of float Color, in 2-component vector of float TexCoord}) 0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) -0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'factor' (layout(location=3 index=1 ) out 4-component vector of float) 0:? 'colors' (layout(location=2 ) out 3-element array of 4-component vector of float) 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) -0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) -0:? 'anon@2' (in block{in float FogFragCoord gl_FogFragCoord, in 1-element array of 4-component vector of float TexCoord gl_TexCoord, flat in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) 0:? 'anon@2' (in block{in float FogFragCoord gl_FogFragCoord, in 1-element array of 4-component vector of float TexCoord gl_TexCoord, flat in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) diff --git a/Test/baseResults/specExamples.vert.out b/Test/baseResults/specExamples.vert.out index ef9a1225..d7de758c 100644 --- a/Test/baseResults/specExamples.vert.out +++ b/Test/baseResults/specExamples.vert.out @@ -298,11 +298,10 @@ ERROR: node is still EOpNull! 0:? 'c2' (layout(binding=3 ) uniform atomic_uint) 0:? 'd2' (layout(binding=2 ) uniform atomic_uint) 0:? 'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, ...}) -0:? 'anon@5' (out block{invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, ...}) 0:? 'ColorInv' (smooth out 3-component vector of float) 0:? 'Color4' (invariant centroid smooth out 3-component vector of float) 0:? 'position' (noContraction smooth out 4-component vector of float) -0:? 'Color5' (smooth out 3-component vector of float) +0:? 'Color5' (noContraction smooth out 3-component vector of float) 0:? 'a' (in 4-component vector of float) 0:? 'b' (in 4-component vector of float) 0:? 'c' (in 4-component vector of float) @@ -582,11 +581,10 @@ ERROR: node is still EOpNull! 0:? 'c2' (layout(binding=3 ) uniform atomic_uint) 0:? 'd2' (layout(binding=2 ) uniform atomic_uint) 0:? 'anon@5' (out block{invariant 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, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) -0:? 'anon@5' (out block{invariant 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, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, flat out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) 0:? 'ColorInv' (smooth out 3-component vector of float) 0:? 'Color4' (invariant centroid smooth out 3-component vector of float) 0:? 'position' (noContraction smooth out 4-component vector of float) -0:? 'Color5' (smooth out 3-component vector of float) +0:? 'Color5' (noContraction smooth out 3-component vector of float) 0:? 'a' (in 4-component vector of float) 0:? 'b' (in 4-component vector of float) 0:? 'c' (in 4-component vector of float) diff --git a/Test/baseResults/spv.noWorkgroup.comp.out b/Test/baseResults/spv.noWorkgroup.comp.out new file mode 100755 index 00000000..f12e6202 --- /dev/null +++ b/Test/baseResults/spv.noWorkgroup.comp.out @@ -0,0 +1,34 @@ +spv.noWorkgroup.comp +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked compute stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 12 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + Name 4 "main" + Decorate 7 SpecId 18 + Decorate 8 SpecId 10 + Decorate 9 SpecId 19 + 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) SpecConstant 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/varyingArray.frag.out b/Test/baseResults/varyingArray.frag.out index c6cf6bae..1fd59b46 100644 --- a/Test/baseResults/varyingArray.frag.out +++ b/Test/baseResults/varyingArray.frag.out @@ -56,7 +56,6 @@ Shader version: 130 0:? 'color' (smooth in 4-component vector of float) 0:? 'alpha' (smooth in float) 0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) -0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'foo' (smooth in 3-element array of 4-component vector of float) @@ -115,6 +114,5 @@ Shader version: 130 0:? 'color' (smooth in 4-component vector of float) 0:? 'alpha' (smooth in float) 0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) -0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'foo' (smooth in 3-element array of 4-component vector of float) diff --git a/Test/baseResults/varyingArrayIndirect.frag.out b/Test/baseResults/varyingArrayIndirect.frag.out index 02a41f3f..73498129 100644 --- a/Test/baseResults/varyingArrayIndirect.frag.out +++ b/Test/baseResults/varyingArrayIndirect.frag.out @@ -57,7 +57,6 @@ Shader version: 130 0:? 'color' (smooth in 4-component vector of float) 0:? 'alpha' (smooth in float) 0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) -0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'userIn' (smooth in 2-element array of 4-component vector of float) 0:? 'a' (uniform int) 0:? 'b' (uniform int) @@ -119,7 +118,6 @@ Shader version: 130 0:? 'color' (smooth in 4-component vector of float) 0:? 'alpha' (smooth in float) 0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) -0:? 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) 0:? 'userIn' (smooth in 2-element array of 4-component vector of float) 0:? 'a' (uniform int) 0:? 'b' (uniform int) diff --git a/Test/spv.noWorkgroup.comp b/Test/spv.noWorkgroup.comp new file mode 100644 index 00000000..0c77f278 --- /dev/null +++ b/Test/spv.noWorkgroup.comp @@ -0,0 +1,7 @@ +#version 450 + +layout(local_size_x_id = 18, local_size_y_id=10,local_size_z_id = 19) in; + +void main() +{ +} diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 5949cd8e..dc8c61db 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -221,16 +221,37 @@ void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); } +// Add a linkage symbol node for 'symbol', which +// must have its type fully edited, as this will snapshot the type. +// It is okay if symbol becomes invalid before finish(). +void TParseContextBase::trackLinkage(TSymbol& symbol) +{ + if (!parsingBuiltins) + intermediate.addSymbolLinkageNode(linkage, symbol); +} + +// Add 'symbol' to the list of deferred linkage symbols, which +// are later processed in finish(), at which point the symbol +// must still be valid. +// It is okay if the symbol's type will be subsequently edited. +void TParseContextBase::trackLinkageDeferred(TSymbol& symbol) +{ + if (!parsingBuiltins) + linkageSymbols.push_back(&symbol); +} + // Make a shared symbol have a non-shared version that can be edited by the current // compile, such that editing its type will not change the shared version and will -// effect all nodes sharing it. +// effect all nodes already sharing it (non-shallow type), +// or adopting its full type after being edited (shallow type). void TParseContextBase::makeEditable(TSymbol*& symbol) { // copyUp() does a deep copy of the type. symbol = symbolTable.copyUp(symbol); - // Save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, *symbol); + // Save it (deferred, so it can be edited first) in the AST for linker use. + if (symbol) + trackLinkageDeferred(*symbol); } // Return a writable version of the variable 'name'. @@ -242,7 +263,7 @@ TVariable* TParseContextBase::getEditableVariable(const char* name) { bool builtIn; TSymbol* symbol = symbolTable.find(name, &builtIn); - + assert(symbol != nullptr); if (symbol == nullptr) return nullptr; @@ -434,7 +455,7 @@ bool TParseContextBase::insertGlobalUniformBlock() // This is the first request; we need a normal symbol table insert inserted = symbolTable.insert(*globalUniformBlock); if (inserted) - intermediate.addSymbolLinkageNode(linkage, *globalUniformBlock); + trackLinkageDeferred(*globalUniformBlock); } else if (firstNewMember <= numMembers) { // This is a follow-on request; we need to amend the first insert inserted = symbolTable.amend(*globalUniformBlock, firstNewMember); @@ -448,4 +469,14 @@ bool TParseContextBase::insertGlobalUniformBlock() return inserted; } +void TParseContextBase::finish() +{ + if (!parsingBuiltins) { + // Transfer te linkage symbols to AST nodes + for (auto i = linkageSymbols.begin(); i != linkageSymbols.end(); ++i) + intermediate.addSymbolLinkageNode(linkage, **i); + intermediate.addSymbolLinkageNodes(linkage, getLanguage(), symbolTable); + } +} + } // end namespace glslang diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 965cb07c..016f07a2 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -50,15 +50,12 @@ namespace glslang { TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : - TParseContextBase(symbolTable, interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), + TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), statementNestingLevel(0), inMain(false), postMainReturn(false), currentFunctionType(nullptr), blockName(nullptr), - limits(resources.limits), parsingBuiltins(parsingBuiltins), + limits(resources.limits), atomicUintOffsets(nullptr), anyIndexLimits(false) { - // ensure we always have a linkage node, even if empty, to simplify tree topology algorithms - linkage = new TIntermAggregate; - // decide whether precision qualifiers should be ignored or respected if (profile == EEsProfile || spvVersion.vulkan > 0) { precisionManager.respectPrecisionQualifiers(); @@ -184,8 +181,8 @@ bool TParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& inp currentScanner = &input; ppContext.setInput(input, versionWillBeError); yyparse(this); - if (! parsingBuiltins) - finalErrorCheck(); + + finish(); return numErrors == 0; } @@ -3093,7 +3090,7 @@ void TParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes) // Do all the semantic checking for declaring or redeclaring an array, with and // without a size, and make the right changes to the symbol table. // -void TParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol, bool& newDeclaration) +void TParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol) { if (symbol == nullptr) { bool currentScope; @@ -3111,7 +3108,8 @@ void TParseContext::declareArray(const TSourceLoc& loc, TString& identifier, con // symbol = new TVariable(&identifier, type); symbolTable.insert(*symbol); - newDeclaration = true; + if (symbolTable.atGlobalLevel()) + trackLinkageDeferred(*symbol); if (! symbolTable.atBuiltInLevel()) { if (isIoResizeArray(type)) { @@ -3271,7 +3269,8 @@ void TParseContext::nonInitConstCheck(const TSourceLoc& loc, TString& identifier // // Returns a redeclared and type-modified variable if a redeclarated occurred. // -TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TString& identifier, const TQualifier& qualifier, const TShaderQualifiers& publicType, bool& newDeclaration) +TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TString& identifier, + const TQualifier& qualifier, const TShaderQualifiers& publicType) { if (! builtInName(identifier) || symbolTable.atBuiltInLevel() || ! symbolTable.atGlobalLevel()) return nullptr; @@ -3318,11 +3317,8 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS // If it wasn't at a built-in level, then it's already been redeclared; // that is, this is a redeclaration of a redeclaration; reuse that initial // redeclaration. Otherwise, make the new one. - if (builtIn) { - // Copy the symbol up to make a writable version + if (builtIn) makeEditable(symbol); - newDeclaration = true; - } // Now, modify the type of the copy, as per the type of the current redeclaration. @@ -3540,7 +3536,7 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT fixIoArraySize(loc, block->getWritableType()); // Save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, *block); + trackLinkageDeferred(*block); } void TParseContext::paramCheckFix(const TSourceLoc& loc, const TStorageQualifier& qualifier, TType& type) @@ -3794,8 +3790,13 @@ void TParseContext::limitCheck(const TSourceLoc& loc, int value, const char* lim // // Do any additional error checking, etc., once we know the parsing is done. // -void TParseContext::finalErrorCheck() +void TParseContext::finish() { + TParseContextBase::finish(); + + if (parsingBuiltins) + return; + // Check on array indexes for ES 2.0 (version 100) limitations. for (size_t i = 0; i < needsIndexLimitationChecking.size(); ++i) constantIndexExpressionCheck(needsIndexLimitationChecking[i]); @@ -4971,8 +4972,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden error(loc, "can only apply depth layout to gl_FragDepth", "layout qualifier", ""); // Check for redeclaration of built-ins and/or attempting to declare a reserved name - bool newDeclaration = false; // true if a new entry gets added to the symbol table - TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, type.getQualifier(), publicType.shaderQualifiers, newDeclaration); + TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, type.getQualifier(), publicType.shaderQualifiers); if (symbol == nullptr) reservedErrorCheck(loc, identifier); @@ -4990,7 +4990,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden arrayUnsizedCheck(loc, type.getQualifier(), &type.getArraySizes(), initializer != nullptr, false); if (! arrayQualifierError(loc, type.getQualifier()) && ! arrayError(loc, type)) - declareArray(loc, identifier, type, symbol, newDeclaration); + declareArray(loc, identifier, type, symbol); if (initializer) { profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, "initializer"); @@ -4999,7 +4999,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden } else { // non-array case if (symbol == nullptr) - symbol = declareNonArray(loc, identifier, type, newDeclaration); + symbol = declareNonArray(loc, identifier, type); else if (type != symbol->getType()) error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str()); } @@ -5022,10 +5022,6 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden layoutObjectCheck(loc, *symbol); fixOffset(loc, *symbol); - // see if it's a linker-level object to track - if (newDeclaration && symbolTable.atGlobalLevel()) - intermediate.addSymbolLinkageNode(linkage, *symbol); - return initNode; } @@ -5061,20 +5057,22 @@ TVariable* TParseContext::makeInternalVariable(const char* name, const TType& ty // // Return the successfully declared variable. // -TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type, bool& newDeclaration) +TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type) { // make a new variable TVariable* variable = new TVariable(&identifier, type); ioArrayCheck(loc, type, identifier); + // add variable to symbol table - if (! symbolTable.insert(*variable)) { - error(loc, "redefinition", variable->getName().c_str(), ""); - return nullptr; - } else { - newDeclaration = true; + if (symbolTable.insert(*variable)) { + if (symbolTable.atGlobalLevel()) + trackLinkageDeferred(*variable); return variable; } + + error(loc, "redefinition", variable->getName().c_str(), ""); + return nullptr; } // @@ -5731,7 +5729,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con fixIoArraySize(loc, variable.getWritableType()); // Save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, variable); + trackLinkageDeferred(variable); } // Do all block-declaration checking regarding the combination of in/out/uniform/buffer diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 0f60ff7f..165601d2 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -73,13 +73,16 @@ typedef std::set TIdSetType; // class TParseContextBase : public TParseVersions { public: - TParseContextBase(TSymbolTable& symbolTable, TIntermediate& interm, int version, + TParseContextBase(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), symbolTable(symbolTable), - linkage(nullptr), scanContext(nullptr), ppContext(nullptr), - globalUniformBlock(nullptr) { } + parsingBuiltins(parsingBuiltins), scanContext(nullptr), ppContext(nullptr), + globalUniformBlock(nullptr) + { + linkage = new TIntermAggregate; + } virtual ~TParseContextBase() { } virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, @@ -94,7 +97,6 @@ public: virtual void setLimits(const TBuiltInResource&) = 0; EShLanguage getLanguage() const { return language; } - TIntermAggregate*& getLinkage() { return linkage; } void setScanContext(TScanContext* c) { scanContext = c; } TScanContext* getScanContext() const { return scanContext; } void setPpContext(TPpContext* c) { ppContext = c; } @@ -150,7 +152,8 @@ protected: TParseContextBase(TParseContextBase&); TParseContextBase& operator=(TParseContextBase&); - TIntermAggregate* linkage; // aggregate node of objects the linker may need, if not referenced by the rest of the AST + const bool parsingBuiltins; // true if parsing built-in symbols/functions + TVector linkageSymbols; // these need to be transferred to 'linkage', after all editing is done TScanContext* scanContext; TPpContext* ppContext; @@ -177,8 +180,14 @@ protected: virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, TPrefixType prefix, va_list args); + virtual void trackLinkage(TSymbol& symbol); + virtual void trackLinkageDeferred(TSymbol& symbol); virtual void makeEditable(TSymbol*&); virtual TVariable* getEditableVariable(const char* name); + virtual void finish(); + +private: + TIntermAggregate* linkage; }; // @@ -314,7 +323,7 @@ public: void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&); 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&, bool& newDeclaration); + TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&); void redeclareBuiltinBlock(const TSourceLoc&, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes); void paramCheckFix(const TSourceLoc&, const TStorageQualifier&, TType& type); void paramCheckFix(const TSourceLoc&, const TQualifier&, TType& type); @@ -368,11 +377,11 @@ protected: void nonInitConstCheck(const TSourceLoc&, TString& identifier, TType& type); void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; - TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&, bool& newDeclaration); - void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool& newDeclaration); + TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&); + void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); - void finalErrorCheck(); + void finish() override; public: // @@ -401,7 +410,6 @@ protected: TParseContext(TParseContext&); TParseContext& operator=(TParseContext&); - const bool parsingBuiltins; // true if parsing built-in symbols/functions static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2 * 2 * 2)); // see computeSamplerTypeIndex() TPrecisionQualifier defaultSamplerPrecision[maxSamplerIndex]; TPrecisionManager precisionManager; diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index eb4a17d4..4d78a70f 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -947,7 +947,6 @@ struct DoFullParse{ // Parse the full shader. if (! parseContext.parseShaderStrings(ppContext, fullInput, versionWillBeError)) success = false; - intermediate.addSymbolLinkageNodes(parseContext.getLinkage(), parseContext.getLanguage(), symbolTable); if (success && intermediate.getTreeRoot()) { if (optLevel == EShOptNoGeneration) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 1dd14403..13e1b147 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -260,7 +260,6 @@ public: // Linkage related void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&); - void addSymbolLinkageNode(TIntermAggregate*& linkage, TSymbolTable&, const TString&); void addSymbolLinkageNode(TIntermAggregate*& linkage, const TSymbol&); bool setInvocations(int i) @@ -396,6 +395,7 @@ protected: bool promote(TIntermOperator*); bool promoteUnary(TIntermUnary&); bool promoteBinary(TIntermBinary&); + void addSymbolLinkageNode(TIntermAggregate*& linkage, TSymbolTable&, const TString&); const EShLanguage language; // stage, known at construction time EShSource source; // source language, known a bit later diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index a55af518..9911e0e0 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -233,6 +233,7 @@ INSTANTIATE_TEST_CASE_P( "spv.offsets.frag", "spv.Operations.frag", "spv.intOps.vert", + "spv.noWorkgroup.comp", "spv.precision.frag", "spv.prepost.frag", "spv.qualifiers.vert", diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index cf97ec7e..abe027ec 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -48,10 +48,10 @@ namespace glslang { -HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool /*parsingBuiltins*/, +HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : - TParseContextBase(symbolTable, interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), + TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), contextPragma(true, false), loopNestingLevel(0), annotationNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), postMainReturn(false), @@ -59,9 +59,6 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int entryPointOutput(nullptr), nextInLocation(0), nextOutLocation(0) { - // ensure we always have a linkage node, even if empty, to simplify tree topology algorithms - linkage = new TIntermAggregate; - globalUniformDefaults.clear(); globalUniformDefaults.layoutMatrix = ElmRowMajor; globalUniformDefaults.layoutPacking = ElpStd140; @@ -128,6 +125,8 @@ bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& return false; } + finish(); + return numErrors == 0; } @@ -950,9 +949,9 @@ void HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& vari ++binding; memberVariables.push_back(memberVariable); - intermediate.addSymbolLinkageNode(linkage, *memberVariable); + trackLinkageDeferred(*memberVariable); } - + flattenMap[variable.getUniqueId()] = memberVariables; } @@ -989,7 +988,7 @@ void HlslParseContext::assignLocations(TVariable& variable) nextOutLocation += intermediate.computeTypeLocationSize(variable.getType()); } } - intermediate.addSymbolLinkageNode(linkage, variable); + trackLinkage(variable); } }; @@ -3588,7 +3587,7 @@ void HlslParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes) // Do all the semantic checking for declaring or redeclaring an array, with and // without a size, and make the right changes to the symbol table. // -void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol, bool& newDeclaration) +void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol, bool track) { if (! symbol) { bool currentScope; @@ -3605,7 +3604,8 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, // symbol = new TVariable(&identifier, type); symbolTable.insert(*symbol); - newDeclaration = true; + if (track && symbolTable.atGlobalLevel()) + trackLinkageDeferred(*symbol); return; } @@ -3628,7 +3628,6 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, // redeclareBuiltinVariable() should have already done the copyUp() TType& existingType = symbol->getWritableType(); - if (existingType.isExplicitlySizedArray()) { // be more lenient for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size return; @@ -3695,7 +3694,7 @@ void HlslParseContext::updateImplicitArraySize(const TSourceLoc& loc, TIntermNod // TSymbol* HlslParseContext::redeclareBuiltinVariable(const TSourceLoc& /*loc*/, const TString& identifier, const TQualifier& /*qualifier*/, - const TShaderQualifiers& /*publicType*/, bool& /*newDeclaration*/) + const TShaderQualifiers& /*publicType*/) { if (! builtInName(identifier) || symbolTable.atBuiltInLevel() || ! symbolTable.atGlobalLevel()) return nullptr; @@ -3820,7 +3819,7 @@ void HlslParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& n symbolTable.insert(*block); // Save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, *block); + trackLinkageDeferred(*block); } void HlslParseContext::paramFix(TType& type) @@ -4413,8 +4412,7 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i return nullptr; // Check for redeclaration of built-ins and/or attempting to declare a reserved name - bool newDeclaration = false; // true if a new entry gets added to the symbol table - TSymbol* symbol = nullptr; // = redeclareBuiltinVariable(loc, identifier, type.getQualifier(), parseType.shaderQualifiers, newDeclaration); + TSymbol* symbol = nullptr; inheritGlobalDefaults(type.getQualifier()); @@ -4423,14 +4421,14 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i // Declare the variable if (type.isArray()) { // array case - declareArray(loc, identifier, type, symbol, newDeclaration); flattenVar = shouldFlatten(type); + declareArray(loc, identifier, type, symbol, !flattenVar); if (flattenVar) flatten(loc, *symbol->getAsVariable()); } else { // non-array case if (! symbol) - symbol = declareNonArray(loc, identifier, type, newDeclaration); + symbol = declareNonArray(loc, identifier, type); else if (type != symbol->getType()) error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str()); } @@ -4452,13 +4450,6 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i initNode = executeInitializer(loc, initializer, variable); } - // see if it's a linker-level object to track. if it's flattened above, - // that process added linkage objects for the flattened symbols, we don't - // add the aggregate here. - if (!flattenVar) - if (newDeclaration && symbolTable.atGlobalLevel()) - intermediate.addSymbolLinkageNode(linkage, *symbol); - return initNode; } @@ -4494,19 +4485,20 @@ TVariable* HlslParseContext::makeInternalVariable(const char* name, const TType& // // Return the successfully declared variable. // -TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type, bool& newDeclaration) +TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type) { // make a new variable TVariable* variable = new TVariable(&identifier, type); // add variable to symbol table - if (! symbolTable.insert(*variable)) { - error(loc, "redefinition", variable->getName().c_str(), ""); - return nullptr; - } else { - newDeclaration = true; + if (symbolTable.insert(*variable)) { + if (symbolTable.atGlobalLevel()) + trackLinkageDeferred(*variable); return variable; } + + error(loc, "redefinition", variable->getName().c_str(), ""); + return nullptr; } // @@ -5019,7 +5011,7 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS } // Save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, variable); + trackLinkageDeferred(variable); } void HlslParseContext::finalizeGlobalUniformBlockLayout(TVariable& block) diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 8410c344..9a7285f9 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -114,7 +114,7 @@ public: bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); void mergeQualifiers(TQualifier& dst, const TQualifier& src); int computeSamplerTypeIndex(TSampler&); - TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&, bool& newDeclaration); + TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&); void redeclareBuiltinBlock(const TSourceLoc&, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes); void paramFix(TType& type); void specializationCheck(const TSourceLoc&, const TType&, const char* op); @@ -163,8 +163,8 @@ public: protected: void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; - TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&, bool& newDeclaration); - void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool& newDeclaration); + TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&); + void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool track); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); From 57cb69a3f13705c8cf4b84bd4551a30f165bddce Mon Sep 17 00:00:00 2001 From: Jamie Madill Date: Wed, 9 Nov 2016 13:49:24 -0500 Subject: [PATCH 090/130] Fix unrefenced variable warning with AMD_EXTENSIONS disabled. --- SPIRV/GlslangToSpv.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 3e0ad4f1..ebf8c5d8 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4118,11 +4118,9 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv // Create group invocation operations. spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { - bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; #ifdef AMD_EXTENSIONS + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; -#else - bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; #endif spv::Op opCode = spv::OpNop; From a22f7dbb713dd4aad223a816563adf362491181f Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 11 Nov 2016 08:17:44 -0700 Subject: [PATCH 091/130] HLSL: Allow expressions in attributes For example: [numthreads(2+2, 2*3, (1+FOO)*BAR)] This will result in a thread count (4, 6, 8). --- .../hlsl.attribute.expression.comp.out | 138 ++++++++++++++++++ Test/hlsl.attribute.expression.comp | 15 ++ gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 24 +-- 4 files changed, 167 insertions(+), 11 deletions(-) create mode 100644 Test/baseResults/hlsl.attribute.expression.comp.out create mode 100644 Test/hlsl.attribute.expression.comp diff --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out new file mode 100644 index 00000000..2316cd9b --- /dev/null +++ b/Test/baseResults/hlsl.attribute.expression.comp.out @@ -0,0 +1,138 @@ +hlsl.attribute.expression.comp +Shader version: 450 +local_size = (4, 6, 8) +0:? Sequence +0:9 Function Definition: main( (temp 4-component vector of float) +0:9 Function Parameters: +0:? Sequence +0:11 Sequence +0:11 move second child to first child (temp int) +0:11 'x' (temp int) +0:11 Constant: +0:11 0 (const int) +0:11 Loop with condition tested first +0:11 Loop Condition +0:11 Compare Less Than (temp bool) +0:11 'x' (temp int) +0:11 bound: direct index for structure (layout(offset=0 ) uniform int) +0:11 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound}) +0:11 Constant: +0:11 0 (const uint) +0:11 No loop body +0:11 Loop Terminal Expression +0:11 Pre-Increment (temp int) +0:11 'x' (temp int) +0:14 Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:14 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound}) + + +Linked compute stage: + + +Shader version: 450 +local_size = (4, 6, 8) +0:? Sequence +0:9 Function Definition: main( (temp 4-component vector of float) +0:9 Function Parameters: +0:? Sequence +0:11 Sequence +0:11 move second child to first child (temp int) +0:11 'x' (temp int) +0:11 Constant: +0:11 0 (const int) +0:11 Loop with condition tested first +0:11 Loop Condition +0:11 Compare Less Than (temp bool) +0:11 'x' (temp int) +0:11 bound: direct index for structure (layout(offset=0 ) uniform int) +0:11 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound}) +0:11 Constant: +0:11 0 (const uint) +0:11 No loop body +0:11 Loop Terminal Expression +0:11 Pre-Increment (temp int) +0:11 'x' (temp int) +0:14 Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:14 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 34 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 30 + ExecutionMode 4 LocalSize 4 6 8 + Name 4 "main" + Name 8 "x" + Name 16 "$Global" + MemberName 16($Global) 0 "bound" + Name 18 "" + Name 30 "@entryPointOutput" + MemberDecorate 16($Global) 0 Offset 0 + Decorate 16($Global) Block + Decorate 18 DescriptorSet 0 + Decorate 30(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 16($Global): TypeStruct 6(int) + 17: TypePointer Uniform 16($Global) + 18: 17(ptr) Variable Uniform + 19: TypePointer Uniform 6(int) + 22: TypeBool + 25: 6(int) Constant 1 + 27: TypeFloat 32 + 28: TypeVector 27(float) 4 + 29: TypePointer Output 28(fvec4) +30(@entryPointOutput): 29(ptr) Variable Output + 31: 27(float) Constant 0 + 32: 28(fvec4) ConstantComposite 31 31 31 31 + 4(main): 2 Function None 3 + 5: Label + 8(x): 7(ptr) Variable Function + Store 8(x) 9 + Branch 10 + 10: Label + LoopMerge 12 13 None + Branch 14 + 14: Label + 15: 6(int) Load 8(x) + 20: 19(ptr) AccessChain 18 9 + 21: 6(int) Load 20 + 23: 22(bool) SLessThan 15 21 + BranchConditional 23 11 12 + 11: Label + Branch 13 + 13: Label + 24: 6(int) Load 8(x) + 26: 6(int) IAdd 24 25 + Store 8(x) 26 + Branch 10 + 12: Label + Store 30(@entryPointOutput) 32 + Return + FunctionEnd diff --git a/Test/hlsl.attribute.expression.comp b/Test/hlsl.attribute.expression.comp new file mode 100644 index 00000000..535fbad4 --- /dev/null +++ b/Test/hlsl.attribute.expression.comp @@ -0,0 +1,15 @@ + +uniform int bound; + +#define FOO 3 +#define BAR 2 + +[numthreads(2+2, 2*3, (1+FOO)*BAR)] +float4 main() : SV_TARGET +{ + [unroll(5*2 + 1) ] + for (int x=0; xgetSequence().push_back(node); + while (acceptAssignmentExpression(node)) { + expectingExpression = false; + expressions->getSequence().push_back(node); if (acceptTokenClass(EHTokComma)) - expectingLiteral = true; + expectingExpression = true; } - // 'literals' is an aggregate with the literals in it + // 'expressions' is an aggregate with the expressions in it if (! acceptTokenClass(EHTokRightParen)) expected(")"); - if (expectingLiteral || literals->getSequence().empty()) - expected("literal"); + + // Error for partial or missing expression + if (expectingExpression || expressions->getSequence().empty()) + expected("expression"); } // RIGHT_BRACKET @@ -2484,7 +2486,7 @@ void HlslGrammar::acceptAttributes(TAttributeMap& attributes) // Add any values we found into the attribute map. This accepts // (and ignores) values not mapping to a known TAttributeType; - attributes.setAttribute(idToken.string, literals); + attributes.setAttribute(idToken.string, expressions); } while (true); } From d9cb832f9cce8440336758169c6e7d90ff2a54db Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 11 Nov 2016 15:37:10 -0700 Subject: [PATCH 092/130] HLSL: allow promotion from 1-vector types to scalars, e.g, float<-float1 Previously, an error was thrown when assigning a float1 to a scalar float, or similar for other basic types. This allows that. Also, this allows calling functions accepting scalars with float1 params, so for example sin(float1) will work. This is a minor change in HlslParseContext::findFunction(). --- Test/baseResults/hlsl.promote.vec1.frag.out | 118 ++++++++++++++++++++ Test/hlsl.promote.vec1.frag | 16 +++ glslang/Include/Types.h | 1 + glslang/MachineIndependent/Intermediate.cpp | 2 + gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 4 +- 6 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 Test/baseResults/hlsl.promote.vec1.frag.out create mode 100644 Test/hlsl.promote.vec1.frag diff --git a/Test/baseResults/hlsl.promote.vec1.frag.out b/Test/baseResults/hlsl.promote.vec1.frag.out new file mode 100644 index 00000000..3b684504 --- /dev/null +++ b/Test/baseResults/hlsl.promote.vec1.frag.out @@ -0,0 +1,118 @@ +hlsl.promote.vec1.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: main( (temp 4-component vector of float) +0:3 Function Parameters: +0:? Sequence +0:7 move second child to first child (temp float) +0:7 'f1a' (temp float) +0:7 Construct float (temp float) +0:7 'f1b' (temp 1-component vector of float) +0:8 move second child to first child (temp 1-component vector of float) +0:8 'f1b' (temp 1-component vector of float) +0:8 Construct float (temp 1-component vector of float) +0:8 'f1a' (temp float) +0:11 step (global 3-component vector of float) +0:11 Constant: +0:11 0.000000 +0:11 0.000000 +0:11 0.000000 +0:11 'f3' (temp 3-component vector of float) +0:13 sine (global float) +0:13 Construct float (in float) +0:13 'f1b' (temp 1-component vector of float) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:15 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: main( (temp 4-component vector of float) +0:3 Function Parameters: +0:? Sequence +0:7 move second child to first child (temp float) +0:7 'f1a' (temp float) +0:7 Construct float (temp float) +0:7 'f1b' (temp 1-component vector of float) +0:8 move second child to first child (temp 1-component vector of float) +0:8 'f1b' (temp 1-component vector of float) +0:8 Construct float (temp 1-component vector of float) +0:8 'f1a' (temp float) +0:11 step (global 3-component vector of float) +0:11 Constant: +0:11 0.000000 +0:11 0.000000 +0:11 0.000000 +0:11 'f3' (temp 3-component vector of float) +0:13 sine (global float) +0:13 Construct float (in float) +0:13 'f1b' (temp 1-component vector of float) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:15 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 26 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 23 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "f1a" + Name 9 "f1b" + Name 16 "f3" + Name 23 "@entryPointOutput" + Decorate 23(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 12: TypeVector 6(float) 3 + 13: 6(float) Constant 0 + 14: 12(fvec3) ConstantComposite 13 13 13 + 15: TypePointer Function 12(fvec3) + 21: TypeVector 6(float) 4 + 22: TypePointer Output 21(fvec4) +23(@entryPointOutput): 22(ptr) Variable Output + 24: 21(fvec4) ConstantComposite 13 13 13 13 + 4(main): 2 Function None 3 + 5: Label + 8(f1a): 7(ptr) Variable Function + 9(f1b): 7(ptr) Variable Function + 16(f3): 15(ptr) Variable Function + 10: 6(float) Load 9(f1b) + Store 8(f1a) 10 + 11: 6(float) Load 8(f1a) + Store 9(f1b) 11 + 17: 12(fvec3) Load 16(f3) + 18: 12(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 14 17 + 19: 6(float) Load 9(f1b) + 20: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 19 + Store 23(@entryPointOutput) 24 + Return + FunctionEnd diff --git a/Test/hlsl.promote.vec1.frag b/Test/hlsl.promote.vec1.frag new file mode 100644 index 00000000..a674ccba --- /dev/null +++ b/Test/hlsl.promote.vec1.frag @@ -0,0 +1,16 @@ + +float4 main() : SV_Target +{ + float f1a; + float1 f1b; + + f1a = f1b; // convert float1 to float + f1b = f1a; // convert float to float1 + + float3 f3; + step(0.0, f3); + + sin(f1b); // test 1-vectors in intrinsics + + return float4(0,0,0,0); +} diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 6c8cb825..8745c7a9 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1271,6 +1271,7 @@ public: virtual TArraySizes& getArraySizes() { assert(arraySizes != nullptr); return *arraySizes; } virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray(); } + virtual bool isScalarOrVec1() const { return isScalar() || vector1; } virtual bool isVector() const { return vectorSize > 1 || vector1; } virtual bool isMatrix() const { return matrixCols ? true : false; } virtual bool isArray() const { return arraySizes != nullptr; } diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index ee102fa0..9c2590fd 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -814,8 +814,10 @@ TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type, TOperator constructorOp = mapTypeToConstructorOp(type); // scalar -> smeared -> vector, or + // vec1 -> scalar, or // bigger vector -> smaller vector or scalar if ((type.isVector() && node->getType().isScalar()) || + (node->getType().isVector() && node->getVectorSize() == 1 && type.isScalar()) || (node->getVectorSize() > type.getVectorSize() && type.isVector())) return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc()); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 17e2133c..edd7e4d3 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -157,6 +157,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, {"hlsl.promote.binary.frag", "main"}, + {"hlsl.promote.vec1.frag", "main"}, {"hlsl.promotions.frag", "main"}, {"hlsl.rw.atomics.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index abe027ec..31fb0d41 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4308,8 +4308,8 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu return false; // shapes have to be convertible - if ((from.isScalar() && to.isScalar()) || - (from.isScalar() && to.isVector()) || + if ((from.isScalarOrVec1() && to.isScalarOrVec1()) || + (from.isScalarOrVec1() && to.isVector()) || (from.isVector() && to.isVector() && from.getVectorSize() >= to.getVectorSize())) return true; From c3f1cdfa57715cf834b51d5081f4b06969ccae3a Mon Sep 17 00:00:00 2001 From: "chrgau01@arm.com" Date: Mon, 14 Nov 2016 10:10:05 +0100 Subject: [PATCH 093/130] GLSL: The execution scope for barriers should be Workgroup. --- SPIRV/GlslangToSpv.cpp | 2 +- Test/baseResults/spv.310.comp.out | 209 +++++++++++++++--------------- Test/baseResults/spv.400.tesc.out | 192 +++++++++++++-------------- 3 files changed, 202 insertions(+), 201 deletions(-) mode change 100755 => 100644 Test/baseResults/spv.310.comp.out mode change 100755 => 100644 Test/baseResults/spv.400.tesc.out diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ebf8c5d8..37aac177 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4597,7 +4597,7 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createNoResultOp(spv::OpEndPrimitive); return 0; case glslang::EOpBarrier: - builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone); + builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice, spv::MemorySemanticsMaskNone); return 0; case glslang::EOpMemoryBarrier: builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory); diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out old mode 100755 new mode 100644 index 3eafc2b5..bd1f3466 --- a/Test/baseResults/spv.310.comp.out +++ b/Test/baseResults/spv.310.comp.out @@ -7,121 +7,122 @@ Linked compute stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 66 +// Id's are bound by 67 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 "main" 52 + EntryPoint GLCompute 4 "main" 53 ExecutionMode 4 LocalSize 16 32 4 Source ESSL 310 Name 4 "main" - Name 12 "outb" - MemberName 12(outb) 0 "f" - MemberName 12(outb) 1 "g" - MemberName 12(outb) 2 "h" - MemberName 12(outb) 3 "uns" - Name 14 "outbname" - Name 18 "s" - Name 23 "outbna" - MemberName 23(outbna) 0 "k" - MemberName 23(outbna) 1 "na" - Name 25 "outbnamena" - Name 41 "i" - Name 47 "outs" - MemberName 47(outs) 0 "s" - MemberName 47(outs) 1 "va" - Name 49 "outnames" - Name 52 "gl_LocalInvocationID" - Decorate 11 ArrayStride 16 - 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 - MemberDecorate 23(outbna) 0 Offset 0 - MemberDecorate 23(outbna) 1 Offset 16 - Decorate 23(outbna) BufferBlock - Decorate 25(outbnamena) DescriptorSet 0 - Decorate 46 ArrayStride 16 - MemberDecorate 47(outs) 0 Offset 0 - MemberDecorate 47(outs) 1 Offset 16 - Decorate 47(outs) BufferBlock - Decorate 49(outnames) DescriptorSet 0 - Decorate 52(gl_LocalInvocationID) BuiltIn LocalInvocationId - Decorate 65 BuiltIn WorkgroupSize + Name 13 "outb" + MemberName 13(outb) 0 "f" + MemberName 13(outb) 1 "g" + MemberName 13(outb) 2 "h" + MemberName 13(outb) 3 "uns" + Name 15 "outbname" + Name 19 "s" + Name 24 "outbna" + MemberName 24(outbna) 0 "k" + MemberName 24(outbna) 1 "na" + Name 26 "outbnamena" + Name 42 "i" + Name 48 "outs" + MemberName 48(outs) 0 "s" + MemberName 48(outs) 1 "va" + Name 50 "outnames" + Name 53 "gl_LocalInvocationID" + Decorate 12 ArrayStride 16 + MemberDecorate 13(outb) 0 Offset 0 + MemberDecorate 13(outb) 1 Offset 4 + MemberDecorate 13(outb) 2 Offset 8 + MemberDecorate 13(outb) 3 Offset 16 + Decorate 13(outb) BufferBlock + Decorate 15(outbname) DescriptorSet 0 + MemberDecorate 24(outbna) 0 Offset 0 + MemberDecorate 24(outbna) 1 Offset 16 + Decorate 24(outbna) BufferBlock + Decorate 26(outbnamena) DescriptorSet 0 + Decorate 47 ArrayStride 16 + MemberDecorate 48(outs) 0 Offset 0 + MemberDecorate 48(outs) 1 Offset 16 + Decorate 48(outs) BufferBlock + Decorate 50(outnames) DescriptorSet 0 + Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 66 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 - 7: 6(int) Constant 1 - 8: 6(int) Constant 0 - 9: TypeFloat 32 - 10: TypeVector 9(float) 3 - 11: TypeRuntimeArray 10(fvec3) - 12(outb): TypeStruct 9(float) 9(float) 9(float) 11 - 13: TypePointer Uniform 12(outb) - 14(outbname): 13(ptr) Variable Uniform - 15: TypeInt 32 1 - 16: 15(int) Constant 0 - 17: TypePointer Workgroup 9(float) - 18(s): 17(ptr) Variable Workgroup - 20: TypePointer Uniform 9(float) - 22: TypeVector 9(float) 4 - 23(outbna): TypeStruct 15(int) 22(fvec4) - 24: TypePointer Uniform 23(outbna) - 25(outbnamena): 24(ptr) Variable Uniform - 26: 15(int) Constant 1 - 29: TypePointer Uniform 22(fvec4) - 31: 15(int) Constant 3 - 32: 15(int) Constant 18 - 35: 15(int) Constant 17 - 36: 9(float) Constant 1077936128 - 37: 10(fvec3) ConstantComposite 36 36 36 - 38: TypePointer Uniform 10(fvec3) - 40: TypePointer Workgroup 15(int) - 41(i): 40(ptr) Variable Workgroup - 46: TypeRuntimeArray 22(fvec4) - 47(outs): TypeStruct 15(int) 46 - 48: TypePointer Uniform 47(outs) - 49(outnames): 48(ptr) Variable Uniform - 50: TypeVector 6(int) 3 - 51: TypePointer Input 50(ivec3) -52(gl_LocalInvocationID): 51(ptr) Variable Input - 53: TypePointer Input 6(int) - 60: TypePointer Uniform 15(int) - 62: 6(int) Constant 16 - 63: 6(int) Constant 32 - 64: 6(int) Constant 4 - 65: 50(ivec3) ConstantComposite 62 63 64 + 7: 6(int) Constant 2 + 8: 6(int) Constant 1 + 9: 6(int) Constant 0 + 10: TypeFloat 32 + 11: TypeVector 10(float) 3 + 12: TypeRuntimeArray 11(fvec3) + 13(outb): TypeStruct 10(float) 10(float) 10(float) 12 + 14: TypePointer Uniform 13(outb) + 15(outbname): 14(ptr) Variable Uniform + 16: TypeInt 32 1 + 17: 16(int) Constant 0 + 18: TypePointer Workgroup 10(float) + 19(s): 18(ptr) Variable Workgroup + 21: TypePointer Uniform 10(float) + 23: TypeVector 10(float) 4 + 24(outbna): TypeStruct 16(int) 23(fvec4) + 25: TypePointer Uniform 24(outbna) + 26(outbnamena): 25(ptr) Variable Uniform + 27: 16(int) Constant 1 + 30: TypePointer Uniform 23(fvec4) + 32: 16(int) Constant 3 + 33: 16(int) Constant 18 + 36: 16(int) Constant 17 + 37: 10(float) Constant 1077936128 + 38: 11(fvec3) ConstantComposite 37 37 37 + 39: TypePointer Uniform 11(fvec3) + 41: TypePointer Workgroup 16(int) + 42(i): 41(ptr) Variable Workgroup + 47: TypeRuntimeArray 23(fvec4) + 48(outs): TypeStruct 16(int) 47 + 49: TypePointer Uniform 48(outs) + 50(outnames): 49(ptr) Variable Uniform + 51: TypeVector 6(int) 3 + 52: TypePointer Input 51(ivec3) +53(gl_LocalInvocationID): 52(ptr) Variable Input + 54: TypePointer Input 6(int) + 61: TypePointer Uniform 16(int) + 63: 6(int) Constant 16 + 64: 6(int) Constant 32 + 65: 6(int) Constant 4 + 66: 51(ivec3) ConstantComposite 63 64 65 4(main): 2 Function None 3 5: Label - ControlBarrier 7 7 8 - 19: 9(float) Load 18(s) - 21: 20(ptr) AccessChain 14(outbname) 16 - Store 21 19 - 27: 9(float) Load 18(s) - 28: 22(fvec4) CompositeConstruct 27 27 27 27 - 30: 29(ptr) AccessChain 25(outbnamena) 26 - Store 30 28 - 33: 20(ptr) AccessChain 14(outbname) 31 32 8 - 34: 9(float) Load 33 - Store 18(s) 34 - 39: 38(ptr) AccessChain 14(outbname) 31 35 - Store 39 37 - 42: 15(int) Load 41(i) - 43: 9(float) Load 18(s) - 44: 10(fvec3) CompositeConstruct 43 43 43 - 45: 38(ptr) AccessChain 14(outbname) 31 42 - Store 45 44 - 54: 53(ptr) AccessChain 52(gl_LocalInvocationID) 8 - 55: 6(int) Load 54 - 56: 9(float) Load 18(s) - 57: 22(fvec4) CompositeConstruct 56 56 56 56 - 58: 29(ptr) AccessChain 49(outnames) 26 55 - Store 58 57 - 59: 15(int) ArrayLength 14(outbname) 3 - 61: 60(ptr) AccessChain 49(outnames) 16 - Store 61 59 + ControlBarrier 7 8 9 + 20: 10(float) Load 19(s) + 22: 21(ptr) AccessChain 15(outbname) 17 + Store 22 20 + 28: 10(float) Load 19(s) + 29: 23(fvec4) CompositeConstruct 28 28 28 28 + 31: 30(ptr) AccessChain 26(outbnamena) 27 + Store 31 29 + 34: 21(ptr) AccessChain 15(outbname) 32 33 9 + 35: 10(float) Load 34 + Store 19(s) 35 + 40: 39(ptr) AccessChain 15(outbname) 32 36 + Store 40 38 + 43: 16(int) Load 42(i) + 44: 10(float) Load 19(s) + 45: 11(fvec3) CompositeConstruct 44 44 44 + 46: 39(ptr) AccessChain 15(outbname) 32 43 + Store 46 45 + 55: 54(ptr) AccessChain 53(gl_LocalInvocationID) 9 + 56: 6(int) Load 55 + 57: 10(float) Load 19(s) + 58: 23(fvec4) CompositeConstruct 57 57 57 57 + 59: 30(ptr) AccessChain 50(outnames) 27 56 + Store 59 58 + 60: 16(int) ArrayLength 15(outbname) 3 + 62: 61(ptr) AccessChain 50(outnames) 17 + Store 62 60 Return FunctionEnd diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out old mode 100755 new mode 100644 index bcfd963e..ae469aad --- a/Test/baseResults/spv.400.tesc.out +++ b/Test/baseResults/spv.400.tesc.out @@ -14,26 +14,26 @@ Linked tessellation control stage: Capability ClipDistance 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 4 "main" 23 40 43 46 54 68 73 79 83 84 87 88 91 92 + EntryPoint TessellationControl 4 "main" 24 41 44 47 54 68 73 79 83 84 87 88 91 92 ExecutionMode 4 OutputVertices 4 Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" Name 4 "main" - Name 11 "a" - Name 16 "p" - Name 19 "gl_PerVertex" - MemberName 19(gl_PerVertex) 0 "gl_Position" - MemberName 19(gl_PerVertex) 1 "gl_PointSize" - MemberName 19(gl_PerVertex) 2 "gl_ClipDistance" - Name 23 "gl_in" - Name 30 "ps" - Name 34 "cd" - Name 38 "pvi" - Name 40 "gl_PatchVerticesIn" - Name 42 "pid" - Name 43 "gl_PrimitiveID" - Name 45 "iid" - Name 46 "gl_InvocationID" + Name 12 "a" + Name 17 "p" + Name 20 "gl_PerVertex" + MemberName 20(gl_PerVertex) 0 "gl_Position" + MemberName 20(gl_PerVertex) 1 "gl_PointSize" + MemberName 20(gl_PerVertex) 2 "gl_ClipDistance" + Name 24 "gl_in" + Name 31 "ps" + Name 35 "cd" + Name 39 "pvi" + Name 41 "gl_PatchVerticesIn" + Name 43 "pid" + Name 44 "gl_PrimitiveID" + Name 46 "iid" + Name 47 "gl_InvocationID" Name 50 "gl_PerVertex" MemberName 50(gl_PerVertex) 0 "gl_Position" MemberName 50(gl_PerVertex) 1 "gl_PointSize" @@ -49,13 +49,13 @@ Linked tessellation control stage: Name 88 "ivlb" Name 91 "ovla" Name 92 "ovlb" - MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 19(gl_PerVertex) Block - Decorate 40(gl_PatchVerticesIn) BuiltIn PatchVertices - Decorate 43(gl_PrimitiveID) BuiltIn PrimitiveId - Decorate 46(gl_InvocationID) BuiltIn InvocationId + 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 MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance @@ -72,106 +72,106 @@ Linked tessellation control stage: 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 - 7: 6(int) Constant 1 - 8: 6(int) Constant 0 - 9: TypeInt 32 1 - 10: TypePointer Function 9(int) - 12: 9(int) Constant 5392 - 13: TypeFloat 32 - 14: TypeVector 13(float) 4 - 15: TypePointer Function 14(fvec4) - 17: 6(int) Constant 3 - 18: TypeArray 13(float) 17 -19(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 18 - 20: 6(int) Constant 32 - 21: TypeArray 19(gl_PerVertex) 20 - 22: TypePointer Input 21 - 23(gl_in): 22(ptr) Variable Input - 24: 9(int) Constant 1 - 25: 9(int) Constant 0 - 26: TypePointer Input 14(fvec4) - 29: TypePointer Function 13(float) - 31: TypePointer Input 13(float) - 35: 9(int) Constant 2 - 39: TypePointer Input 9(int) -40(gl_PatchVerticesIn): 39(ptr) Variable Input -43(gl_PrimitiveID): 39(ptr) Variable Input -46(gl_InvocationID): 39(ptr) Variable Input - 48: 6(int) Constant 2 - 49: TypeArray 13(float) 48 -50(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 49 + 7: 6(int) Constant 2 + 8: 6(int) Constant 1 + 9: 6(int) Constant 0 + 10: TypeInt 32 1 + 11: TypePointer Function 10(int) + 13: 10(int) Constant 5392 + 14: TypeFloat 32 + 15: TypeVector 14(float) 4 + 16: TypePointer Function 15(fvec4) + 18: 6(int) Constant 3 + 19: TypeArray 14(float) 18 +20(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 19 + 21: 6(int) Constant 32 + 22: TypeArray 20(gl_PerVertex) 21 + 23: TypePointer Input 22 + 24(gl_in): 23(ptr) Variable Input + 25: 10(int) Constant 1 + 26: 10(int) Constant 0 + 27: TypePointer Input 15(fvec4) + 30: TypePointer Function 14(float) + 32: TypePointer Input 14(float) + 36: 10(int) Constant 2 + 40: TypePointer Input 10(int) +41(gl_PatchVerticesIn): 40(ptr) Variable Input +44(gl_PrimitiveID): 40(ptr) Variable Input +47(gl_InvocationID): 40(ptr) Variable Input + 49: TypeArray 14(float) 7 +50(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 49 51: 6(int) Constant 4 52: TypeArray 50(gl_PerVertex) 51 53: TypePointer Output 52 54(gl_out): 53(ptr) Variable Output - 57: TypePointer Output 14(fvec4) - 61: TypePointer Output 13(float) - 66: TypeArray 13(float) 51 + 57: TypePointer Output 15(fvec4) + 61: TypePointer Output 14(float) + 66: TypeArray 14(float) 51 67: TypePointer Output 66 68(gl_TessLevelOuter): 67(ptr) Variable Output - 69: 9(int) Constant 3 - 70: 13(float) Constant 1078774989 + 69: 10(int) Constant 3 + 70: 14(float) Constant 1078774989 72: TypePointer Output 49 73(gl_TessLevelInner): 72(ptr) Variable Output - 74: 13(float) Constant 1067869798 - 76: TypeArray 9(int) 51 + 74: 14(float) Constant 1067869798 + 76: TypeArray 10(int) 51 77: TypePointer Private 76 78(outa): 77(ptr) Variable Private 79(patchOut): 57(ptr) Variable Output - 80: TypeVector 13(float) 2 - 81: TypeArray 80(fvec2) 20 + 80: TypeVector 14(float) 2 + 81: TypeArray 80(fvec2) 21 82: TypePointer Input 81 83(inb): 82(ptr) Variable Input 84(ind): 82(ptr) Variable Input - 85: TypeArray 14(fvec4) 20 + 85: TypeArray 15(fvec4) 21 86: TypePointer Input 85 87(ivla): 86(ptr) Variable Input 88(ivlb): 86(ptr) Variable Input - 89: TypeArray 14(fvec4) 51 + 89: TypeArray 15(fvec4) 51 90: TypePointer Output 89 91(ovla): 90(ptr) Variable Output 92(ovlb): 90(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 11(a): 10(ptr) Variable Function - 16(p): 15(ptr) Variable Function - 30(ps): 29(ptr) Variable Function - 34(cd): 29(ptr) Variable Function - 38(pvi): 10(ptr) Variable Function - 42(pid): 10(ptr) Variable Function - 45(iid): 10(ptr) Variable Function - ControlBarrier 7 7 8 - Store 11(a) 12 - 27: 26(ptr) AccessChain 23(gl_in) 24 25 - 28: 14(fvec4) Load 27 - Store 16(p) 28 - 32: 31(ptr) AccessChain 23(gl_in) 24 24 - 33: 13(float) Load 32 - Store 30(ps) 33 - 36: 31(ptr) AccessChain 23(gl_in) 24 35 35 - 37: 13(float) Load 36 - Store 34(cd) 37 - 41: 9(int) Load 40(gl_PatchVerticesIn) - Store 38(pvi) 41 - 44: 9(int) Load 43(gl_PrimitiveID) - Store 42(pid) 44 - 47: 9(int) Load 46(gl_InvocationID) - Store 45(iid) 47 - 55: 9(int) Load 46(gl_InvocationID) - 56: 14(fvec4) Load 16(p) - 58: 57(ptr) AccessChain 54(gl_out) 55 25 + 12(a): 11(ptr) Variable Function + 17(p): 16(ptr) Variable Function + 31(ps): 30(ptr) Variable Function + 35(cd): 30(ptr) Variable Function + 39(pvi): 11(ptr) Variable Function + 43(pid): 11(ptr) Variable Function + 46(iid): 11(ptr) Variable Function + ControlBarrier 7 8 9 + Store 12(a) 13 + 28: 27(ptr) AccessChain 24(gl_in) 25 26 + 29: 15(fvec4) Load 28 + Store 17(p) 29 + 33: 32(ptr) AccessChain 24(gl_in) 25 25 + 34: 14(float) Load 33 + Store 31(ps) 34 + 37: 32(ptr) AccessChain 24(gl_in) 25 36 36 + 38: 14(float) Load 37 + Store 35(cd) 38 + 42: 10(int) Load 41(gl_PatchVerticesIn) + Store 39(pvi) 42 + 45: 10(int) Load 44(gl_PrimitiveID) + Store 43(pid) 45 + 48: 10(int) Load 47(gl_InvocationID) + Store 46(iid) 48 + 55: 10(int) Load 47(gl_InvocationID) + 56: 15(fvec4) Load 17(p) + 58: 57(ptr) AccessChain 54(gl_out) 55 26 Store 58 56 - 59: 9(int) Load 46(gl_InvocationID) - 60: 13(float) Load 30(ps) - 62: 61(ptr) AccessChain 54(gl_out) 59 24 + 59: 10(int) Load 47(gl_InvocationID) + 60: 14(float) Load 31(ps) + 62: 61(ptr) AccessChain 54(gl_out) 59 25 Store 62 60 - 63: 9(int) Load 46(gl_InvocationID) - 64: 13(float) Load 34(cd) - 65: 61(ptr) AccessChain 54(gl_out) 63 35 24 + 63: 10(int) Load 47(gl_InvocationID) + 64: 14(float) Load 35(cd) + 65: 61(ptr) AccessChain 54(gl_out) 63 36 25 Store 65 64 71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69 Store 71 70 - 75: 61(ptr) AccessChain 73(gl_TessLevelInner) 24 + 75: 61(ptr) AccessChain 73(gl_TessLevelInner) 25 Store 75 74 Return FunctionEnd From fabe7d6a613782d49becaef86aa0161ed7d3c4d7 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 14 Nov 2016 21:22:05 -0700 Subject: [PATCH 094/130] Test results: Fix incorrect test result caused by parallel development. Issue #594. --- Test/baseResults/hlsl.rw.register.frag.out | 4 ++-- glslang/Include/revision.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out index b2d8f299..f369cac7 100644 --- a/Test/baseResults/hlsl.rw.register.frag.out +++ b/Test/baseResults/hlsl.rw.register.frag.out @@ -39,9 +39,9 @@ gl_FragCoord origin is upper left 0:17 0 (const int) 0:17 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_tTex1df1' (layout(binding=2 r32f ) uniform image1D) 0:? 'g_tBuf1du1' (layout(binding=3 r32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) Linked fragment stage: @@ -87,9 +87,9 @@ gl_FragCoord origin is upper left 0:17 0 (const int) 0:17 Branch: Return 0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) 0:? 'g_tTex1df1' (layout(binding=2 r32f ) uniform image1D) 0:? 'g_tBuf1du1' (layout(binding=3 r32ui ) uniform uimageBuffer) -0:? 'Color' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index c8b1b10a..4ec53322 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1603" -#define GLSLANG_DATE "16-Oct-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1650" +#define GLSLANG_DATE "14-Nov-2016" From 0842dbb39a1965f65dd74f0328132eb0eb69d499 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Tue, 15 Nov 2016 10:11:04 -0700 Subject: [PATCH 095/130] HLSL: use HLSL parser to parse HLSL intrinsic prototypes, enable int/bool mats This PR adds a CreateParseContext() fn analogous to CreateBuiltInParseables(), to create a language specific built in parser. (This code was present before but not encapsualted in a fn). This can now be used to create a source language specific parser for builtins. Along with this, the code creating HLSL intrinsic prototypes can now produce them in HLSL syntax, rather than GLSL syntax. This relaxes certain prior restrictions at the parser level. Lower layers (e.g, SPIR-V) may still have such restrictions, such as around Nx1 matrices: this code does not impact that. This PR also fleshes out matrix types for bools and ints, both of which were partially in place before. This was easier than maintaining the restrictions in the HLSL prototype generator to avoid creating protoypes with those types. Many tests change because the result type from intrinsics moves from "global" to "temp". Several new tests are added for the new types. --- Test/baseResults/hlsl.doLoop.frag.out | 4 +- Test/baseResults/hlsl.forLoop.frag.out | 12 +- .../hlsl.gather.array.dx10.frag.out | 24 +- .../hlsl.gather.basic.dx10.frag.out | 24 +- .../hlsl.gather.basic.dx10.vert.out | 24 +- .../hlsl.gather.offset.dx10.frag.out | 12 +- .../hlsl.gather.offsetarray.dx10.frag.out | 12 +- .../hlsl.gatherRGBA.array.dx10.frag.out | 96 +- .../hlsl.gatherRGBA.basic.dx10.frag.out | 96 +- .../hlsl.gatherRGBA.offset.dx10.frag.out | 96 +- .../hlsl.gatherRGBA.offsetarray.dx10.frag.out | 96 +- .../hlsl.getsampleposition.dx10.frag.out | 8 +- Test/baseResults/hlsl.if.frag.out | 24 +- .../hlsl.intrinsics.barriers.comp.out | 24 +- Test/baseResults/hlsl.intrinsics.comp.out | 112 +- .../hlsl.intrinsics.double.frag.out | 4 +- .../hlsl.intrinsics.f1632.frag.out | 16 +- Test/baseResults/hlsl.intrinsics.frag.out | 1512 ++++++++--------- .../hlsl.intrinsics.negative.frag.out | 120 +- Test/baseResults/hlsl.intrinsics.vert.out | 1336 +++++++-------- Test/baseResults/hlsl.matNx1.frag.out | 261 +++ Test/baseResults/hlsl.matType.bool.frag.out | 419 +++++ Test/baseResults/hlsl.matType.int.frag.out | 738 ++++++++ Test/baseResults/hlsl.max.frag.out | 4 +- Test/baseResults/hlsl.promote.vec1.frag.out | 8 +- .../hlsl.samplecmp.array.dx10.frag.out | 36 +- .../hlsl.samplecmp.basic.dx10.frag.out | 36 +- .../hlsl.samplecmp.offset.dx10.frag.out | 24 +- .../hlsl.samplecmp.offsetarray.dx10.frag.out | 24 +- ...lsl.samplecmplevelzero.array.dx10.frag.out | 36 +- ...lsl.samplecmplevelzero.basic.dx10.frag.out | 36 +- ...sl.samplecmplevelzero.offset.dx10.frag.out | 24 +- ...mplecmplevelzero.offsetarray.dx10.frag.out | 24 +- Test/baseResults/hlsl.shapeConv.frag.out | 8 +- Test/baseResults/hlsl.sin.frag.out | 4 +- Test/baseResults/hlsl.whileLoop.frag.out | 4 +- Test/hlsl.matNx1.frag | 31 + Test/hlsl.matType.bool.frag | 53 + Test/hlsl.matType.int.frag | 97 ++ glslang/MachineIndependent/ShaderLang.cpp | 90 +- gtests/Hlsl.FromFile.cpp | 3 + hlsl/hlslParseables.cpp | 102 +- hlsl/hlslScanContext.cpp | 48 + 43 files changed, 3729 insertions(+), 2033 deletions(-) create mode 100644 Test/baseResults/hlsl.matNx1.frag.out create mode 100644 Test/baseResults/hlsl.matType.bool.frag.out create mode 100644 Test/baseResults/hlsl.matType.int.frag.out create mode 100644 Test/hlsl.matNx1.frag create mode 100644 Test/hlsl.matType.bool.frag create mode 100644 Test/hlsl.matType.int.frag diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out index 0e49caf1..c060cdc7 100755 --- a/Test/baseResults/hlsl.doLoop.frag.out +++ b/Test/baseResults/hlsl.doLoop.frag.out @@ -18,7 +18,7 @@ gl_FragCoord origin is upper left 0:4 No loop body 0:5 Loop with condition not tested first 0:5 Loop Condition -0:5 all (global bool) +0:5 all (temp bool) 0:5 Equal (temp 4-component vector of bool) 0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 'input' (layout(location=0 ) in 4-component vector of float) @@ -55,7 +55,7 @@ gl_FragCoord origin is upper left 0:4 No loop body 0:5 Loop with condition not tested first 0:5 Loop Condition -0:5 all (global bool) +0:5 all (temp bool) 0:5 Equal (temp 4-component vector of bool) 0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 'input' (layout(location=0 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out index 26697725..85b8fb27 100755 --- a/Test/baseResults/hlsl.forLoop.frag.out +++ b/Test/baseResults/hlsl.forLoop.frag.out @@ -19,7 +19,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:5 Loop with condition tested first 0:5 Loop Condition -0:5 any (global bool) +0:5 any (temp bool) 0:5 NotEqual (temp 4-component vector of bool) 0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 'input' (layout(location=0 ) in 4-component vector of float) @@ -27,7 +27,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:6 Loop with condition tested first 0:6 Loop Condition -0:6 any (global bool) +0:6 any (temp bool) 0:6 NotEqual (temp 4-component vector of bool) 0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 'input' (layout(location=0 ) in 4-component vector of float) @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 Loop with condition tested first 0:7 Loop Condition -0:7 any (global bool) +0:7 any (temp bool) 0:7 NotEqual (temp 4-component vector of bool) 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 'input' (layout(location=0 ) in 4-component vector of float) @@ -144,7 +144,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:5 Loop with condition tested first 0:5 Loop Condition -0:5 any (global bool) +0:5 any (temp bool) 0:5 NotEqual (temp 4-component vector of bool) 0:5 'input' (layout(location=0 ) in 4-component vector of float) 0:5 'input' (layout(location=0 ) in 4-component vector of float) @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:6 Loop with condition tested first 0:6 Loop Condition -0:6 any (global bool) +0:6 any (temp bool) 0:6 NotEqual (temp 4-component vector of bool) 0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 'input' (layout(location=0 ) in 4-component vector of float) @@ -169,7 +169,7 @@ gl_FragCoord origin is upper left 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 Loop with condition tested first 0:7 Loop Condition -0:7 any (global bool) +0:7 any (temp bool) 0:7 NotEqual (temp 4-component vector of bool) 0:7 'input' (layout(location=0 ) in 4-component vector of float) 0:7 'input' (layout(location=0 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out index 15727d92..ee550d16 100644 --- a/Test/baseResults/hlsl.gather.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of float) 0:29 'txval20' (temp 4-component vector of float) -0:29 textureGather (global 4-component vector of float) +0:29 textureGather (temp 4-component vector of float) 0:29 Construct combined texture-sampler (temp sampler2DArray) 0:29 'g_tTex2df4a' (uniform texture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -19,7 +19,7 @@ gl_FragCoord origin is upper left 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of int) 0:30 'txval21' (temp 4-component vector of int) -0:30 textureGather (global 4-component vector of int) +0:30 textureGather (temp 4-component vector of int) 0:30 Construct combined texture-sampler (temp isampler2DArray) 0:30 'g_tTex2di4a' (uniform itexture2DArray) 0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -30,7 +30,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of uint) 0:31 'txval22' (temp 4-component vector of uint) -0:31 textureGather (global 4-component vector of uint) +0:31 textureGather (temp 4-component vector of uint) 0:31 Construct combined texture-sampler (temp usampler2DArray) 0:31 'g_tTex2du4a' (uniform utexture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -41,7 +41,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 textureGather (global 4-component vector of float) +0:35 textureGather (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4a' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 textureGather (global 4-component vector of int) +0:36 textureGather (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4a' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 textureGather (global 4-component vector of uint) +0:37 textureGather (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4a' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -134,7 +134,7 @@ gl_FragCoord origin is upper left 0:29 Sequence 0:29 move second child to first child (temp 4-component vector of float) 0:29 'txval20' (temp 4-component vector of float) -0:29 textureGather (global 4-component vector of float) +0:29 textureGather (temp 4-component vector of float) 0:29 Construct combined texture-sampler (temp sampler2DArray) 0:29 'g_tTex2df4a' (uniform texture2DArray) 0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -145,7 +145,7 @@ gl_FragCoord origin is upper left 0:30 Sequence 0:30 move second child to first child (temp 4-component vector of int) 0:30 'txval21' (temp 4-component vector of int) -0:30 textureGather (global 4-component vector of int) +0:30 textureGather (temp 4-component vector of int) 0:30 Construct combined texture-sampler (temp isampler2DArray) 0:30 'g_tTex2di4a' (uniform itexture2DArray) 0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -156,7 +156,7 @@ gl_FragCoord origin is upper left 0:31 Sequence 0:31 move second child to first child (temp 4-component vector of uint) 0:31 'txval22' (temp 4-component vector of uint) -0:31 textureGather (global 4-component vector of uint) +0:31 textureGather (temp 4-component vector of uint) 0:31 Construct combined texture-sampler (temp usampler2DArray) 0:31 'g_tTex2du4a' (uniform utexture2DArray) 0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -167,7 +167,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of float) 0:35 'txval40' (temp 4-component vector of float) -0:35 textureGather (global 4-component vector of float) +0:35 textureGather (temp 4-component vector of float) 0:35 Construct combined texture-sampler (temp samplerCubeArray) 0:35 'g_tTexcdf4a' (uniform textureCubeArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -179,7 +179,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of int) 0:36 'txval41' (temp 4-component vector of int) -0:36 textureGather (global 4-component vector of int) +0:36 textureGather (temp 4-component vector of int) 0:36 Construct combined texture-sampler (temp isamplerCubeArray) 0:36 'g_tTexcdi4a' (uniform itextureCubeArray) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -191,7 +191,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of uint) 0:37 'txval42' (temp 4-component vector of uint) -0:37 textureGather (global 4-component vector of uint) +0:37 textureGather (temp 4-component vector of uint) 0:37 Construct combined texture-sampler (temp usamplerCubeArray) 0:37 'g_tTexcdu4a' (uniform utextureCubeArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out index 26a5f38d..86e106ca 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) 0:34 'txval20' (temp 4-component vector of float) -0:34 textureGather (global 4-component vector of float) +0:34 textureGather (temp 4-component vector of float) 0:34 Construct combined texture-sampler (temp sampler2D) 0:34 'g_tTex2df4' (uniform texture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -18,7 +18,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of int) 0:35 'txval21' (temp 4-component vector of int) -0:35 textureGather (global 4-component vector of int) +0:35 textureGather (temp 4-component vector of int) 0:35 Construct combined texture-sampler (temp isampler2D) 0:35 'g_tTex2di4' (uniform itexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -28,7 +28,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of uint) 0:36 'txval22' (temp 4-component vector of uint) -0:36 textureGather (global 4-component vector of uint) +0:36 textureGather (temp 4-component vector of uint) 0:36 Construct combined texture-sampler (temp usampler2D) 0:36 'g_tTex2du4' (uniform utexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of float) 0:40 'txval40' (temp 4-component vector of float) -0:40 textureGather (global 4-component vector of float) +0:40 textureGather (temp 4-component vector of float) 0:40 Construct combined texture-sampler (temp samplerCube) 0:40 'g_tTexcdf4' (uniform textureCube) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -49,7 +49,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of int) 0:41 'txval41' (temp 4-component vector of int) -0:41 textureGather (global 4-component vector of int) +0:41 textureGather (temp 4-component vector of int) 0:41 Construct combined texture-sampler (temp isamplerCube) 0:41 'g_tTexcdi4' (uniform itextureCube) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -60,7 +60,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of uint) 0:42 'txval42' (temp 4-component vector of uint) -0:42 textureGather (global 4-component vector of uint) +0:42 textureGather (temp 4-component vector of uint) 0:42 Construct combined texture-sampler (temp usamplerCube) 0:42 'g_tTexcdu4' (uniform utextureCube) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -132,7 +132,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) 0:34 'txval20' (temp 4-component vector of float) -0:34 textureGather (global 4-component vector of float) +0:34 textureGather (temp 4-component vector of float) 0:34 Construct combined texture-sampler (temp sampler2D) 0:34 'g_tTex2df4' (uniform texture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -142,7 +142,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of int) 0:35 'txval21' (temp 4-component vector of int) -0:35 textureGather (global 4-component vector of int) +0:35 textureGather (temp 4-component vector of int) 0:35 Construct combined texture-sampler (temp isampler2D) 0:35 'g_tTex2di4' (uniform itexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:36 Sequence 0:36 move second child to first child (temp 4-component vector of uint) 0:36 'txval22' (temp 4-component vector of uint) -0:36 textureGather (global 4-component vector of uint) +0:36 textureGather (temp 4-component vector of uint) 0:36 Construct combined texture-sampler (temp usampler2D) 0:36 'g_tTex2du4' (uniform utexture2D) 0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -162,7 +162,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of float) 0:40 'txval40' (temp 4-component vector of float) -0:40 textureGather (global 4-component vector of float) +0:40 textureGather (temp 4-component vector of float) 0:40 Construct combined texture-sampler (temp samplerCube) 0:40 'g_tTexcdf4' (uniform textureCube) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -173,7 +173,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of int) 0:41 'txval41' (temp 4-component vector of int) -0:41 textureGather (global 4-component vector of int) +0:41 textureGather (temp 4-component vector of int) 0:41 Construct combined texture-sampler (temp isamplerCube) 0:41 'g_tTexcdi4' (uniform itextureCube) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of uint) 0:42 'txval42' (temp 4-component vector of uint) -0:42 textureGather (global 4-component vector of uint) +0:42 textureGather (temp 4-component vector of uint) 0:42 Construct combined texture-sampler (temp usamplerCube) 0:42 'g_tTexcdu4' (uniform utextureCube) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index b7a4d6e4..a8936753 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -7,7 +7,7 @@ Shader version: 450 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of float) 0:33 'txval20' (temp 4-component vector of float) -0:33 textureGather (global 4-component vector of float) +0:33 textureGather (temp 4-component vector of float) 0:33 Construct combined texture-sampler (temp sampler2D) 0:33 'g_tTex2df4' (uniform texture2D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -17,7 +17,7 @@ Shader version: 450 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of int) 0:34 'txval21' (temp 4-component vector of int) -0:34 textureGather (global 4-component vector of int) +0:34 textureGather (temp 4-component vector of int) 0:34 Construct combined texture-sampler (temp isampler2D) 0:34 'g_tTex2di4' (uniform itexture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -27,7 +27,7 @@ Shader version: 450 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of uint) 0:35 'txval22' (temp 4-component vector of uint) -0:35 textureGather (global 4-component vector of uint) +0:35 textureGather (temp 4-component vector of uint) 0:35 Construct combined texture-sampler (temp usampler2D) 0:35 'g_tTex2du4' (uniform utexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -37,7 +37,7 @@ Shader version: 450 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval40' (temp 4-component vector of float) -0:39 textureGather (global 4-component vector of float) +0:39 textureGather (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp samplerCube) 0:39 'g_tTexcdf4' (uniform textureCube) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -48,7 +48,7 @@ Shader version: 450 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval41' (temp 4-component vector of int) -0:40 textureGather (global 4-component vector of int) +0:40 textureGather (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isamplerCube) 0:40 'g_tTexcdi4' (uniform itextureCube) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -59,7 +59,7 @@ Shader version: 450 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval42' (temp 4-component vector of uint) -0:41 textureGather (global 4-component vector of uint) +0:41 textureGather (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usamplerCube) 0:41 'g_tTexcdu4' (uniform utextureCube) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -116,7 +116,7 @@ Shader version: 450 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of float) 0:33 'txval20' (temp 4-component vector of float) -0:33 textureGather (global 4-component vector of float) +0:33 textureGather (temp 4-component vector of float) 0:33 Construct combined texture-sampler (temp sampler2D) 0:33 'g_tTex2df4' (uniform texture2D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -126,7 +126,7 @@ Shader version: 450 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of int) 0:34 'txval21' (temp 4-component vector of int) -0:34 textureGather (global 4-component vector of int) +0:34 textureGather (temp 4-component vector of int) 0:34 Construct combined texture-sampler (temp isampler2D) 0:34 'g_tTex2di4' (uniform itexture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -136,7 +136,7 @@ Shader version: 450 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of uint) 0:35 'txval22' (temp 4-component vector of uint) -0:35 textureGather (global 4-component vector of uint) +0:35 textureGather (temp 4-component vector of uint) 0:35 Construct combined texture-sampler (temp usampler2D) 0:35 'g_tTex2du4' (uniform utexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -146,7 +146,7 @@ Shader version: 450 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval40' (temp 4-component vector of float) -0:39 textureGather (global 4-component vector of float) +0:39 textureGather (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp samplerCube) 0:39 'g_tTexcdf4' (uniform textureCube) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -157,7 +157,7 @@ Shader version: 450 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval41' (temp 4-component vector of int) -0:40 textureGather (global 4-component vector of int) +0:40 textureGather (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isamplerCube) 0:40 'g_tTexcdi4' (uniform itextureCube) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -168,7 +168,7 @@ Shader version: 450 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval42' (temp 4-component vector of uint) -0:41 textureGather (global 4-component vector of uint) +0:41 textureGather (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usamplerCube) 0:41 'g_tTexcdu4' (uniform utextureCube) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out index 2feb0ee2..5b48bf32 100644 --- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of float) 0:33 'txval20' (temp 4-component vector of float) -0:33 textureGatherOffset (global 4-component vector of float) +0:33 textureGatherOffset (temp 4-component vector of float) 0:33 Construct combined texture-sampler (temp sampler2D) 0:33 'g_tTex2df4' (uniform texture2D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of int) 0:34 'txval21' (temp 4-component vector of int) -0:34 textureGatherOffset (global 4-component vector of int) +0:34 textureGatherOffset (temp 4-component vector of int) 0:34 Construct combined texture-sampler (temp isampler2D) 0:34 'g_tTex2di4' (uniform itexture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of uint) 0:35 'txval22' (temp 4-component vector of uint) -0:35 textureGatherOffset (global 4-component vector of uint) +0:35 textureGatherOffset (temp 4-component vector of uint) 0:35 Construct combined texture-sampler (temp usampler2D) 0:35 'g_tTex2du4' (uniform utexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -107,7 +107,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of float) 0:33 'txval20' (temp 4-component vector of float) -0:33 textureGatherOffset (global 4-component vector of float) +0:33 textureGatherOffset (temp 4-component vector of float) 0:33 Construct combined texture-sampler (temp sampler2D) 0:33 'g_tTex2df4' (uniform texture2D) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -120,7 +120,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of int) 0:34 'txval21' (temp 4-component vector of int) -0:34 textureGatherOffset (global 4-component vector of int) +0:34 textureGatherOffset (temp 4-component vector of int) 0:34 Construct combined texture-sampler (temp isampler2D) 0:34 'g_tTex2di4' (uniform itexture2D) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -133,7 +133,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of uint) 0:35 'txval22' (temp 4-component vector of uint) -0:35 textureGatherOffset (global 4-component vector of uint) +0:35 textureGatherOffset (temp 4-component vector of uint) 0:35 Construct combined texture-sampler (temp usampler2D) 0:35 'g_tTex2du4' (uniform utexture2D) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out index 2dede7bb..a7589cd9 100644 --- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of float) 0:25 'txval20' (temp 4-component vector of float) -0:25 textureGatherOffset (global 4-component vector of float) +0:25 textureGatherOffset (temp 4-component vector of float) 0:25 Construct combined texture-sampler (temp sampler2DArray) 0:25 'g_tTex2df4' (uniform texture2DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:26 Sequence 0:26 move second child to first child (temp 4-component vector of int) 0:26 'txval21' (temp 4-component vector of int) -0:26 textureGatherOffset (global 4-component vector of int) +0:26 textureGatherOffset (temp 4-component vector of int) 0:26 Construct combined texture-sampler (temp isampler2DArray) 0:26 'g_tTex2di4' (uniform itexture2DArray) 0:26 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -36,7 +36,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of uint) 0:27 'txval22' (temp 4-component vector of uint) -0:27 textureGatherOffset (global 4-component vector of uint) +0:27 textureGatherOffset (temp 4-component vector of uint) 0:27 Construct combined texture-sampler (temp usampler2DArray) 0:27 'g_tTex2du4' (uniform utexture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:25 Sequence 0:25 move second child to first child (temp 4-component vector of float) 0:25 'txval20' (temp 4-component vector of float) -0:25 textureGatherOffset (global 4-component vector of float) +0:25 textureGatherOffset (temp 4-component vector of float) 0:25 Construct combined texture-sampler (temp sampler2DArray) 0:25 'g_tTex2df4' (uniform texture2DArray) 0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:26 Sequence 0:26 move second child to first child (temp 4-component vector of int) 0:26 'txval21' (temp 4-component vector of int) -0:26 textureGatherOffset (global 4-component vector of int) +0:26 textureGatherOffset (temp 4-component vector of int) 0:26 Construct combined texture-sampler (temp isampler2DArray) 0:26 'g_tTex2di4' (uniform itexture2DArray) 0:26 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -132,7 +132,7 @@ gl_FragCoord origin is upper left 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of uint) 0:27 'txval22' (temp 4-component vector of uint) -0:27 textureGatherOffset (global 4-component vector of uint) +0:27 textureGatherOffset (temp 4-component vector of uint) 0:27 Construct combined texture-sampler (temp usampler2DArray) 0:27 'g_tTex2du4' (uniform utexture2DArray) 0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out index eb7cf836..b04a8573 100644 --- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of float) 0:33 'txval00' (temp 4-component vector of float) -0:33 textureGather (global 4-component vector of float) +0:33 textureGather (temp 4-component vector of float) 0:33 Construct combined texture-sampler (temp sampler2DArray) 0:33 'g_tTex2df4a' (uniform texture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of int) 0:34 'txval01' (temp 4-component vector of int) -0:34 textureGather (global 4-component vector of int) +0:34 textureGather (temp 4-component vector of int) 0:34 Construct combined texture-sampler (temp isampler2DArray) 0:34 'g_tTex2di4a' (uniform itexture2DArray) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of uint) 0:35 'txval02' (temp 4-component vector of uint) -0:35 textureGather (global 4-component vector of uint) +0:35 textureGather (temp 4-component vector of uint) 0:35 Construct combined texture-sampler (temp usampler2DArray) 0:35 'g_tTex2du4a' (uniform utexture2DArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of float) 0:37 'txval10' (temp 4-component vector of float) -0:37 textureGather (global 4-component vector of float) +0:37 textureGather (temp 4-component vector of float) 0:37 Construct combined texture-sampler (temp sampler2DArray) 0:37 'g_tTex2df4a' (uniform texture2DArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -60,7 +60,7 @@ gl_FragCoord origin is upper left 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of int) 0:38 'txval11' (temp 4-component vector of int) -0:38 textureGather (global 4-component vector of int) +0:38 textureGather (temp 4-component vector of int) 0:38 Construct combined texture-sampler (temp isampler2DArray) 0:38 'g_tTex2di4a' (uniform itexture2DArray) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -73,7 +73,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of uint) 0:39 'txval12' (temp 4-component vector of uint) -0:39 textureGather (global 4-component vector of uint) +0:39 textureGather (temp 4-component vector of uint) 0:39 Construct combined texture-sampler (temp usampler2DArray) 0:39 'g_tTex2du4a' (uniform utexture2DArray) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -86,7 +86,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of float) 0:41 'txval20' (temp 4-component vector of float) -0:41 textureGather (global 4-component vector of float) +0:41 textureGather (temp 4-component vector of float) 0:41 Construct combined texture-sampler (temp sampler2DArray) 0:41 'g_tTex2df4a' (uniform texture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -99,7 +99,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of int) 0:42 'txval21' (temp 4-component vector of int) -0:42 textureGather (global 4-component vector of int) +0:42 textureGather (temp 4-component vector of int) 0:42 Construct combined texture-sampler (temp isampler2DArray) 0:42 'g_tTex2di4a' (uniform itexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -112,7 +112,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of uint) 0:43 'txval22' (temp 4-component vector of uint) -0:43 textureGather (global 4-component vector of uint) +0:43 textureGather (temp 4-component vector of uint) 0:43 Construct combined texture-sampler (temp usampler2DArray) 0:43 'g_tTex2du4a' (uniform utexture2DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -125,7 +125,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of float) 0:45 'txval30' (temp 4-component vector of float) -0:45 textureGather (global 4-component vector of float) +0:45 textureGather (temp 4-component vector of float) 0:45 Construct combined texture-sampler (temp sampler2DArray) 0:45 'g_tTex2df4a' (uniform texture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -138,7 +138,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of int) 0:46 'txval31' (temp 4-component vector of int) -0:46 textureGather (global 4-component vector of int) +0:46 textureGather (temp 4-component vector of int) 0:46 Construct combined texture-sampler (temp isampler2DArray) 0:46 'g_tTex2di4a' (uniform itexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -151,7 +151,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of uint) 0:47 'txval32' (temp 4-component vector of uint) -0:47 textureGather (global 4-component vector of uint) +0:47 textureGather (temp 4-component vector of uint) 0:47 Construct combined texture-sampler (temp usampler2DArray) 0:47 'g_tTex2du4a' (uniform utexture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:51 Sequence 0:51 move second child to first child (temp 4-component vector of float) 0:51 'txval40' (temp 4-component vector of float) -0:51 textureGather (global 4-component vector of float) +0:51 textureGather (temp 4-component vector of float) 0:51 Construct combined texture-sampler (temp samplerCubeArray) 0:51 'g_tTexcdf4a' (uniform textureCubeArray) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -177,7 +177,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp 4-component vector of int) 0:52 'txval41' (temp 4-component vector of int) -0:52 textureGather (global 4-component vector of int) +0:52 textureGather (temp 4-component vector of int) 0:52 Construct combined texture-sampler (temp isamplerCubeArray) 0:52 'g_tTexcdi4a' (uniform itextureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -190,7 +190,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp 4-component vector of uint) 0:53 'txval42' (temp 4-component vector of uint) -0:53 textureGather (global 4-component vector of uint) +0:53 textureGather (temp 4-component vector of uint) 0:53 Construct combined texture-sampler (temp usamplerCubeArray) 0:53 'g_tTexcdu4a' (uniform utextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -203,7 +203,7 @@ gl_FragCoord origin is upper left 0:55 Sequence 0:55 move second child to first child (temp 4-component vector of float) 0:55 'txval50' (temp 4-component vector of float) -0:55 textureGather (global 4-component vector of float) +0:55 textureGather (temp 4-component vector of float) 0:55 Construct combined texture-sampler (temp samplerCubeArray) 0:55 'g_tTexcdf4a' (uniform textureCubeArray) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -216,7 +216,7 @@ gl_FragCoord origin is upper left 0:56 Sequence 0:56 move second child to first child (temp 4-component vector of int) 0:56 'txval51' (temp 4-component vector of int) -0:56 textureGather (global 4-component vector of int) +0:56 textureGather (temp 4-component vector of int) 0:56 Construct combined texture-sampler (temp isamplerCubeArray) 0:56 'g_tTexcdi4a' (uniform itextureCubeArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -229,7 +229,7 @@ gl_FragCoord origin is upper left 0:57 Sequence 0:57 move second child to first child (temp 4-component vector of uint) 0:57 'txval52' (temp 4-component vector of uint) -0:57 textureGather (global 4-component vector of uint) +0:57 textureGather (temp 4-component vector of uint) 0:57 Construct combined texture-sampler (temp usamplerCubeArray) 0:57 'g_tTexcdu4a' (uniform utextureCubeArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -242,7 +242,7 @@ gl_FragCoord origin is upper left 0:59 Sequence 0:59 move second child to first child (temp 4-component vector of float) 0:59 'txval60' (temp 4-component vector of float) -0:59 textureGather (global 4-component vector of float) +0:59 textureGather (temp 4-component vector of float) 0:59 Construct combined texture-sampler (temp samplerCubeArray) 0:59 'g_tTexcdf4a' (uniform textureCubeArray) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -255,7 +255,7 @@ gl_FragCoord origin is upper left 0:60 Sequence 0:60 move second child to first child (temp 4-component vector of int) 0:60 'txval61' (temp 4-component vector of int) -0:60 textureGather (global 4-component vector of int) +0:60 textureGather (temp 4-component vector of int) 0:60 Construct combined texture-sampler (temp isamplerCubeArray) 0:60 'g_tTexcdi4a' (uniform itextureCubeArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -268,7 +268,7 @@ gl_FragCoord origin is upper left 0:61 Sequence 0:61 move second child to first child (temp 4-component vector of uint) 0:61 'txval62' (temp 4-component vector of uint) -0:61 textureGather (global 4-component vector of uint) +0:61 textureGather (temp 4-component vector of uint) 0:61 Construct combined texture-sampler (temp usamplerCubeArray) 0:61 'g_tTexcdu4a' (uniform utextureCubeArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -281,7 +281,7 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp 4-component vector of float) 0:63 'txval70' (temp 4-component vector of float) -0:63 textureGather (global 4-component vector of float) +0:63 textureGather (temp 4-component vector of float) 0:63 Construct combined texture-sampler (temp samplerCubeArray) 0:63 'g_tTexcdf4a' (uniform textureCubeArray) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -294,7 +294,7 @@ gl_FragCoord origin is upper left 0:64 Sequence 0:64 move second child to first child (temp 4-component vector of int) 0:64 'txval71' (temp 4-component vector of int) -0:64 textureGather (global 4-component vector of int) +0:64 textureGather (temp 4-component vector of int) 0:64 Construct combined texture-sampler (temp isamplerCubeArray) 0:64 'g_tTexcdi4a' (uniform itextureCubeArray) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -307,7 +307,7 @@ gl_FragCoord origin is upper left 0:65 Sequence 0:65 move second child to first child (temp 4-component vector of uint) 0:65 'txval72' (temp 4-component vector of uint) -0:65 textureGather (global 4-component vector of uint) +0:65 textureGather (temp 4-component vector of uint) 0:65 Construct combined texture-sampler (temp usamplerCubeArray) 0:65 'g_tTexcdu4a' (uniform utextureCubeArray) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -378,7 +378,7 @@ gl_FragCoord origin is upper left 0:33 Sequence 0:33 move second child to first child (temp 4-component vector of float) 0:33 'txval00' (temp 4-component vector of float) -0:33 textureGather (global 4-component vector of float) +0:33 textureGather (temp 4-component vector of float) 0:33 Construct combined texture-sampler (temp sampler2DArray) 0:33 'g_tTex2df4a' (uniform texture2DArray) 0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -391,7 +391,7 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of int) 0:34 'txval01' (temp 4-component vector of int) -0:34 textureGather (global 4-component vector of int) +0:34 textureGather (temp 4-component vector of int) 0:34 Construct combined texture-sampler (temp isampler2DArray) 0:34 'g_tTex2di4a' (uniform itexture2DArray) 0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -404,7 +404,7 @@ gl_FragCoord origin is upper left 0:35 Sequence 0:35 move second child to first child (temp 4-component vector of uint) 0:35 'txval02' (temp 4-component vector of uint) -0:35 textureGather (global 4-component vector of uint) +0:35 textureGather (temp 4-component vector of uint) 0:35 Construct combined texture-sampler (temp usampler2DArray) 0:35 'g_tTex2du4a' (uniform utexture2DArray) 0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -417,7 +417,7 @@ gl_FragCoord origin is upper left 0:37 Sequence 0:37 move second child to first child (temp 4-component vector of float) 0:37 'txval10' (temp 4-component vector of float) -0:37 textureGather (global 4-component vector of float) +0:37 textureGather (temp 4-component vector of float) 0:37 Construct combined texture-sampler (temp sampler2DArray) 0:37 'g_tTex2df4a' (uniform texture2DArray) 0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -430,7 +430,7 @@ gl_FragCoord origin is upper left 0:38 Sequence 0:38 move second child to first child (temp 4-component vector of int) 0:38 'txval11' (temp 4-component vector of int) -0:38 textureGather (global 4-component vector of int) +0:38 textureGather (temp 4-component vector of int) 0:38 Construct combined texture-sampler (temp isampler2DArray) 0:38 'g_tTex2di4a' (uniform itexture2DArray) 0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -443,7 +443,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of uint) 0:39 'txval12' (temp 4-component vector of uint) -0:39 textureGather (global 4-component vector of uint) +0:39 textureGather (temp 4-component vector of uint) 0:39 Construct combined texture-sampler (temp usampler2DArray) 0:39 'g_tTex2du4a' (uniform utexture2DArray) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -456,7 +456,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of float) 0:41 'txval20' (temp 4-component vector of float) -0:41 textureGather (global 4-component vector of float) +0:41 textureGather (temp 4-component vector of float) 0:41 Construct combined texture-sampler (temp sampler2DArray) 0:41 'g_tTex2df4a' (uniform texture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -469,7 +469,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of int) 0:42 'txval21' (temp 4-component vector of int) -0:42 textureGather (global 4-component vector of int) +0:42 textureGather (temp 4-component vector of int) 0:42 Construct combined texture-sampler (temp isampler2DArray) 0:42 'g_tTex2di4a' (uniform itexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -482,7 +482,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of uint) 0:43 'txval22' (temp 4-component vector of uint) -0:43 textureGather (global 4-component vector of uint) +0:43 textureGather (temp 4-component vector of uint) 0:43 Construct combined texture-sampler (temp usampler2DArray) 0:43 'g_tTex2du4a' (uniform utexture2DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -495,7 +495,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of float) 0:45 'txval30' (temp 4-component vector of float) -0:45 textureGather (global 4-component vector of float) +0:45 textureGather (temp 4-component vector of float) 0:45 Construct combined texture-sampler (temp sampler2DArray) 0:45 'g_tTex2df4a' (uniform texture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -508,7 +508,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of int) 0:46 'txval31' (temp 4-component vector of int) -0:46 textureGather (global 4-component vector of int) +0:46 textureGather (temp 4-component vector of int) 0:46 Construct combined texture-sampler (temp isampler2DArray) 0:46 'g_tTex2di4a' (uniform itexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -521,7 +521,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of uint) 0:47 'txval32' (temp 4-component vector of uint) -0:47 textureGather (global 4-component vector of uint) +0:47 textureGather (temp 4-component vector of uint) 0:47 Construct combined texture-sampler (temp usampler2DArray) 0:47 'g_tTex2du4a' (uniform utexture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -534,7 +534,7 @@ gl_FragCoord origin is upper left 0:51 Sequence 0:51 move second child to first child (temp 4-component vector of float) 0:51 'txval40' (temp 4-component vector of float) -0:51 textureGather (global 4-component vector of float) +0:51 textureGather (temp 4-component vector of float) 0:51 Construct combined texture-sampler (temp samplerCubeArray) 0:51 'g_tTexcdf4a' (uniform textureCubeArray) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -547,7 +547,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp 4-component vector of int) 0:52 'txval41' (temp 4-component vector of int) -0:52 textureGather (global 4-component vector of int) +0:52 textureGather (temp 4-component vector of int) 0:52 Construct combined texture-sampler (temp isamplerCubeArray) 0:52 'g_tTexcdi4a' (uniform itextureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -560,7 +560,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp 4-component vector of uint) 0:53 'txval42' (temp 4-component vector of uint) -0:53 textureGather (global 4-component vector of uint) +0:53 textureGather (temp 4-component vector of uint) 0:53 Construct combined texture-sampler (temp usamplerCubeArray) 0:53 'g_tTexcdu4a' (uniform utextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -573,7 +573,7 @@ gl_FragCoord origin is upper left 0:55 Sequence 0:55 move second child to first child (temp 4-component vector of float) 0:55 'txval50' (temp 4-component vector of float) -0:55 textureGather (global 4-component vector of float) +0:55 textureGather (temp 4-component vector of float) 0:55 Construct combined texture-sampler (temp samplerCubeArray) 0:55 'g_tTexcdf4a' (uniform textureCubeArray) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -586,7 +586,7 @@ gl_FragCoord origin is upper left 0:56 Sequence 0:56 move second child to first child (temp 4-component vector of int) 0:56 'txval51' (temp 4-component vector of int) -0:56 textureGather (global 4-component vector of int) +0:56 textureGather (temp 4-component vector of int) 0:56 Construct combined texture-sampler (temp isamplerCubeArray) 0:56 'g_tTexcdi4a' (uniform itextureCubeArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -599,7 +599,7 @@ gl_FragCoord origin is upper left 0:57 Sequence 0:57 move second child to first child (temp 4-component vector of uint) 0:57 'txval52' (temp 4-component vector of uint) -0:57 textureGather (global 4-component vector of uint) +0:57 textureGather (temp 4-component vector of uint) 0:57 Construct combined texture-sampler (temp usamplerCubeArray) 0:57 'g_tTexcdu4a' (uniform utextureCubeArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -612,7 +612,7 @@ gl_FragCoord origin is upper left 0:59 Sequence 0:59 move second child to first child (temp 4-component vector of float) 0:59 'txval60' (temp 4-component vector of float) -0:59 textureGather (global 4-component vector of float) +0:59 textureGather (temp 4-component vector of float) 0:59 Construct combined texture-sampler (temp samplerCubeArray) 0:59 'g_tTexcdf4a' (uniform textureCubeArray) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -625,7 +625,7 @@ gl_FragCoord origin is upper left 0:60 Sequence 0:60 move second child to first child (temp 4-component vector of int) 0:60 'txval61' (temp 4-component vector of int) -0:60 textureGather (global 4-component vector of int) +0:60 textureGather (temp 4-component vector of int) 0:60 Construct combined texture-sampler (temp isamplerCubeArray) 0:60 'g_tTexcdi4a' (uniform itextureCubeArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -638,7 +638,7 @@ gl_FragCoord origin is upper left 0:61 Sequence 0:61 move second child to first child (temp 4-component vector of uint) 0:61 'txval62' (temp 4-component vector of uint) -0:61 textureGather (global 4-component vector of uint) +0:61 textureGather (temp 4-component vector of uint) 0:61 Construct combined texture-sampler (temp usamplerCubeArray) 0:61 'g_tTexcdu4a' (uniform utextureCubeArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -651,7 +651,7 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp 4-component vector of float) 0:63 'txval70' (temp 4-component vector of float) -0:63 textureGather (global 4-component vector of float) +0:63 textureGather (temp 4-component vector of float) 0:63 Construct combined texture-sampler (temp samplerCubeArray) 0:63 'g_tTexcdf4a' (uniform textureCubeArray) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -664,7 +664,7 @@ gl_FragCoord origin is upper left 0:64 Sequence 0:64 move second child to first child (temp 4-component vector of int) 0:64 'txval71' (temp 4-component vector of int) -0:64 textureGather (global 4-component vector of int) +0:64 textureGather (temp 4-component vector of int) 0:64 Construct combined texture-sampler (temp isamplerCubeArray) 0:64 'g_tTexcdi4a' (uniform itextureCubeArray) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -677,7 +677,7 @@ gl_FragCoord origin is upper left 0:65 Sequence 0:65 move second child to first child (temp 4-component vector of uint) 0:65 'txval72' (temp 4-component vector of uint) -0:65 textureGather (global 4-component vector of uint) +0:65 textureGather (temp 4-component vector of uint) 0:65 Construct combined texture-sampler (temp usamplerCubeArray) 0:65 'g_tTexcdu4a' (uniform utextureCubeArray) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out index b92874e8..d2fb0b17 100644 --- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval00' (temp 4-component vector of float) -0:39 textureGather (global 4-component vector of float) +0:39 textureGather (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler2D) 0:39 'g_tTex2df4' (uniform texture2D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval01' (temp 4-component vector of int) -0:40 textureGather (global 4-component vector of int) +0:40 textureGather (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler2D) 0:40 'g_tTex2di4' (uniform itexture2D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval02' (temp 4-component vector of uint) -0:41 textureGather (global 4-component vector of uint) +0:41 textureGather (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler2D) 0:41 'g_tTex2du4' (uniform utexture2D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:43 'txval10' (temp 4-component vector of float) -0:43 textureGather (global 4-component vector of float) +0:43 textureGather (temp 4-component vector of float) 0:43 Construct combined texture-sampler (temp sampler2D) 0:43 'g_tTex2df4' (uniform texture2D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -60,7 +60,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of int) 0:44 'txval11' (temp 4-component vector of int) -0:44 textureGather (global 4-component vector of int) +0:44 textureGather (temp 4-component vector of int) 0:44 Construct combined texture-sampler (temp isampler2D) 0:44 'g_tTex2di4' (uniform itexture2D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -73,7 +73,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of uint) 0:45 'txval12' (temp 4-component vector of uint) -0:45 textureGather (global 4-component vector of uint) +0:45 textureGather (temp 4-component vector of uint) 0:45 Construct combined texture-sampler (temp usampler2D) 0:45 'g_tTex2du4' (uniform utexture2D) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -86,7 +86,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of float) 0:47 'txval20' (temp 4-component vector of float) -0:47 textureGather (global 4-component vector of float) +0:47 textureGather (temp 4-component vector of float) 0:47 Construct combined texture-sampler (temp sampler2D) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -99,7 +99,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp 4-component vector of int) 0:48 'txval21' (temp 4-component vector of int) -0:48 textureGather (global 4-component vector of int) +0:48 textureGather (temp 4-component vector of int) 0:48 Construct combined texture-sampler (temp isampler2D) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -112,7 +112,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp 4-component vector of uint) 0:49 'txval22' (temp 4-component vector of uint) -0:49 textureGather (global 4-component vector of uint) +0:49 textureGather (temp 4-component vector of uint) 0:49 Construct combined texture-sampler (temp usampler2D) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -125,7 +125,7 @@ gl_FragCoord origin is upper left 0:51 Sequence 0:51 move second child to first child (temp 4-component vector of float) 0:51 'txval30' (temp 4-component vector of float) -0:51 textureGather (global 4-component vector of float) +0:51 textureGather (temp 4-component vector of float) 0:51 Construct combined texture-sampler (temp sampler2D) 0:51 'g_tTex2df4' (uniform texture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -138,7 +138,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp 4-component vector of int) 0:52 'txval31' (temp 4-component vector of int) -0:52 textureGather (global 4-component vector of int) +0:52 textureGather (temp 4-component vector of int) 0:52 Construct combined texture-sampler (temp isampler2D) 0:52 'g_tTex2di4' (uniform itexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -151,7 +151,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp 4-component vector of uint) 0:53 'txval32' (temp 4-component vector of uint) -0:53 textureGather (global 4-component vector of uint) +0:53 textureGather (temp 4-component vector of uint) 0:53 Construct combined texture-sampler (temp usampler2D) 0:53 'g_tTex2du4' (uniform utexture2D) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:57 Sequence 0:57 move second child to first child (temp 4-component vector of float) 0:57 'txval40' (temp 4-component vector of float) -0:57 textureGather (global 4-component vector of float) +0:57 textureGather (temp 4-component vector of float) 0:57 Construct combined texture-sampler (temp samplerCube) 0:57 'g_tTexcdf4' (uniform textureCube) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -177,7 +177,7 @@ gl_FragCoord origin is upper left 0:58 Sequence 0:58 move second child to first child (temp 4-component vector of int) 0:58 'txval41' (temp 4-component vector of int) -0:58 textureGather (global 4-component vector of int) +0:58 textureGather (temp 4-component vector of int) 0:58 Construct combined texture-sampler (temp isamplerCube) 0:58 'g_tTexcdi4' (uniform itextureCube) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -190,7 +190,7 @@ gl_FragCoord origin is upper left 0:59 Sequence 0:59 move second child to first child (temp 4-component vector of uint) 0:59 'txval42' (temp 4-component vector of uint) -0:59 textureGather (global 4-component vector of uint) +0:59 textureGather (temp 4-component vector of uint) 0:59 Construct combined texture-sampler (temp usamplerCube) 0:59 'g_tTexcdu4' (uniform utextureCube) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -203,7 +203,7 @@ gl_FragCoord origin is upper left 0:61 Sequence 0:61 move second child to first child (temp 4-component vector of float) 0:61 'txval50' (temp 4-component vector of float) -0:61 textureGather (global 4-component vector of float) +0:61 textureGather (temp 4-component vector of float) 0:61 Construct combined texture-sampler (temp samplerCube) 0:61 'g_tTexcdf4' (uniform textureCube) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -216,7 +216,7 @@ gl_FragCoord origin is upper left 0:62 Sequence 0:62 move second child to first child (temp 4-component vector of int) 0:62 'txval51' (temp 4-component vector of int) -0:62 textureGather (global 4-component vector of int) +0:62 textureGather (temp 4-component vector of int) 0:62 Construct combined texture-sampler (temp isamplerCube) 0:62 'g_tTexcdi4' (uniform itextureCube) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -229,7 +229,7 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp 4-component vector of uint) 0:63 'txval52' (temp 4-component vector of uint) -0:63 textureGather (global 4-component vector of uint) +0:63 textureGather (temp 4-component vector of uint) 0:63 Construct combined texture-sampler (temp usamplerCube) 0:63 'g_tTexcdu4' (uniform utextureCube) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -242,7 +242,7 @@ gl_FragCoord origin is upper left 0:65 Sequence 0:65 move second child to first child (temp 4-component vector of float) 0:65 'txval60' (temp 4-component vector of float) -0:65 textureGather (global 4-component vector of float) +0:65 textureGather (temp 4-component vector of float) 0:65 Construct combined texture-sampler (temp samplerCube) 0:65 'g_tTexcdf4' (uniform textureCube) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -255,7 +255,7 @@ gl_FragCoord origin is upper left 0:66 Sequence 0:66 move second child to first child (temp 4-component vector of int) 0:66 'txval61' (temp 4-component vector of int) -0:66 textureGather (global 4-component vector of int) +0:66 textureGather (temp 4-component vector of int) 0:66 Construct combined texture-sampler (temp isamplerCube) 0:66 'g_tTexcdi4' (uniform itextureCube) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -268,7 +268,7 @@ gl_FragCoord origin is upper left 0:67 Sequence 0:67 move second child to first child (temp 4-component vector of uint) 0:67 'txval62' (temp 4-component vector of uint) -0:67 textureGather (global 4-component vector of uint) +0:67 textureGather (temp 4-component vector of uint) 0:67 Construct combined texture-sampler (temp usamplerCube) 0:67 'g_tTexcdu4' (uniform utextureCube) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -281,7 +281,7 @@ gl_FragCoord origin is upper left 0:69 Sequence 0:69 move second child to first child (temp 4-component vector of float) 0:69 'txval70' (temp 4-component vector of float) -0:69 textureGather (global 4-component vector of float) +0:69 textureGather (temp 4-component vector of float) 0:69 Construct combined texture-sampler (temp samplerCube) 0:69 'g_tTexcdf4' (uniform textureCube) 0:69 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -294,7 +294,7 @@ gl_FragCoord origin is upper left 0:70 Sequence 0:70 move second child to first child (temp 4-component vector of int) 0:70 'txval71' (temp 4-component vector of int) -0:70 textureGather (global 4-component vector of int) +0:70 textureGather (temp 4-component vector of int) 0:70 Construct combined texture-sampler (temp isamplerCube) 0:70 'g_tTexcdi4' (uniform itextureCube) 0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -307,7 +307,7 @@ gl_FragCoord origin is upper left 0:71 Sequence 0:71 move second child to first child (temp 4-component vector of uint) 0:71 'txval72' (temp 4-component vector of uint) -0:71 textureGather (global 4-component vector of uint) +0:71 textureGather (temp 4-component vector of uint) 0:71 Construct combined texture-sampler (temp usamplerCube) 0:71 'g_tTexcdu4' (uniform utextureCube) 0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -382,7 +382,7 @@ gl_FragCoord origin is upper left 0:39 Sequence 0:39 move second child to first child (temp 4-component vector of float) 0:39 'txval00' (temp 4-component vector of float) -0:39 textureGather (global 4-component vector of float) +0:39 textureGather (temp 4-component vector of float) 0:39 Construct combined texture-sampler (temp sampler2D) 0:39 'g_tTex2df4' (uniform texture2D) 0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -395,7 +395,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of int) 0:40 'txval01' (temp 4-component vector of int) -0:40 textureGather (global 4-component vector of int) +0:40 textureGather (temp 4-component vector of int) 0:40 Construct combined texture-sampler (temp isampler2D) 0:40 'g_tTex2di4' (uniform itexture2D) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -408,7 +408,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of uint) 0:41 'txval02' (temp 4-component vector of uint) -0:41 textureGather (global 4-component vector of uint) +0:41 textureGather (temp 4-component vector of uint) 0:41 Construct combined texture-sampler (temp usampler2D) 0:41 'g_tTex2du4' (uniform utexture2D) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -421,7 +421,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp 4-component vector of float) 0:43 'txval10' (temp 4-component vector of float) -0:43 textureGather (global 4-component vector of float) +0:43 textureGather (temp 4-component vector of float) 0:43 Construct combined texture-sampler (temp sampler2D) 0:43 'g_tTex2df4' (uniform texture2D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -434,7 +434,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of int) 0:44 'txval11' (temp 4-component vector of int) -0:44 textureGather (global 4-component vector of int) +0:44 textureGather (temp 4-component vector of int) 0:44 Construct combined texture-sampler (temp isampler2D) 0:44 'g_tTex2di4' (uniform itexture2D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -447,7 +447,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of uint) 0:45 'txval12' (temp 4-component vector of uint) -0:45 textureGather (global 4-component vector of uint) +0:45 textureGather (temp 4-component vector of uint) 0:45 Construct combined texture-sampler (temp usampler2D) 0:45 'g_tTex2du4' (uniform utexture2D) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -460,7 +460,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of float) 0:47 'txval20' (temp 4-component vector of float) -0:47 textureGather (global 4-component vector of float) +0:47 textureGather (temp 4-component vector of float) 0:47 Construct combined texture-sampler (temp sampler2D) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -473,7 +473,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp 4-component vector of int) 0:48 'txval21' (temp 4-component vector of int) -0:48 textureGather (global 4-component vector of int) +0:48 textureGather (temp 4-component vector of int) 0:48 Construct combined texture-sampler (temp isampler2D) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -486,7 +486,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp 4-component vector of uint) 0:49 'txval22' (temp 4-component vector of uint) -0:49 textureGather (global 4-component vector of uint) +0:49 textureGather (temp 4-component vector of uint) 0:49 Construct combined texture-sampler (temp usampler2D) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -499,7 +499,7 @@ gl_FragCoord origin is upper left 0:51 Sequence 0:51 move second child to first child (temp 4-component vector of float) 0:51 'txval30' (temp 4-component vector of float) -0:51 textureGather (global 4-component vector of float) +0:51 textureGather (temp 4-component vector of float) 0:51 Construct combined texture-sampler (temp sampler2D) 0:51 'g_tTex2df4' (uniform texture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -512,7 +512,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp 4-component vector of int) 0:52 'txval31' (temp 4-component vector of int) -0:52 textureGather (global 4-component vector of int) +0:52 textureGather (temp 4-component vector of int) 0:52 Construct combined texture-sampler (temp isampler2D) 0:52 'g_tTex2di4' (uniform itexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -525,7 +525,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp 4-component vector of uint) 0:53 'txval32' (temp 4-component vector of uint) -0:53 textureGather (global 4-component vector of uint) +0:53 textureGather (temp 4-component vector of uint) 0:53 Construct combined texture-sampler (temp usampler2D) 0:53 'g_tTex2du4' (uniform utexture2D) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -538,7 +538,7 @@ gl_FragCoord origin is upper left 0:57 Sequence 0:57 move second child to first child (temp 4-component vector of float) 0:57 'txval40' (temp 4-component vector of float) -0:57 textureGather (global 4-component vector of float) +0:57 textureGather (temp 4-component vector of float) 0:57 Construct combined texture-sampler (temp samplerCube) 0:57 'g_tTexcdf4' (uniform textureCube) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -551,7 +551,7 @@ gl_FragCoord origin is upper left 0:58 Sequence 0:58 move second child to first child (temp 4-component vector of int) 0:58 'txval41' (temp 4-component vector of int) -0:58 textureGather (global 4-component vector of int) +0:58 textureGather (temp 4-component vector of int) 0:58 Construct combined texture-sampler (temp isamplerCube) 0:58 'g_tTexcdi4' (uniform itextureCube) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -564,7 +564,7 @@ gl_FragCoord origin is upper left 0:59 Sequence 0:59 move second child to first child (temp 4-component vector of uint) 0:59 'txval42' (temp 4-component vector of uint) -0:59 textureGather (global 4-component vector of uint) +0:59 textureGather (temp 4-component vector of uint) 0:59 Construct combined texture-sampler (temp usamplerCube) 0:59 'g_tTexcdu4' (uniform utextureCube) 0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -577,7 +577,7 @@ gl_FragCoord origin is upper left 0:61 Sequence 0:61 move second child to first child (temp 4-component vector of float) 0:61 'txval50' (temp 4-component vector of float) -0:61 textureGather (global 4-component vector of float) +0:61 textureGather (temp 4-component vector of float) 0:61 Construct combined texture-sampler (temp samplerCube) 0:61 'g_tTexcdf4' (uniform textureCube) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -590,7 +590,7 @@ gl_FragCoord origin is upper left 0:62 Sequence 0:62 move second child to first child (temp 4-component vector of int) 0:62 'txval51' (temp 4-component vector of int) -0:62 textureGather (global 4-component vector of int) +0:62 textureGather (temp 4-component vector of int) 0:62 Construct combined texture-sampler (temp isamplerCube) 0:62 'g_tTexcdi4' (uniform itextureCube) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -603,7 +603,7 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp 4-component vector of uint) 0:63 'txval52' (temp 4-component vector of uint) -0:63 textureGather (global 4-component vector of uint) +0:63 textureGather (temp 4-component vector of uint) 0:63 Construct combined texture-sampler (temp usamplerCube) 0:63 'g_tTexcdu4' (uniform utextureCube) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -616,7 +616,7 @@ gl_FragCoord origin is upper left 0:65 Sequence 0:65 move second child to first child (temp 4-component vector of float) 0:65 'txval60' (temp 4-component vector of float) -0:65 textureGather (global 4-component vector of float) +0:65 textureGather (temp 4-component vector of float) 0:65 Construct combined texture-sampler (temp samplerCube) 0:65 'g_tTexcdf4' (uniform textureCube) 0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -629,7 +629,7 @@ gl_FragCoord origin is upper left 0:66 Sequence 0:66 move second child to first child (temp 4-component vector of int) 0:66 'txval61' (temp 4-component vector of int) -0:66 textureGather (global 4-component vector of int) +0:66 textureGather (temp 4-component vector of int) 0:66 Construct combined texture-sampler (temp isamplerCube) 0:66 'g_tTexcdi4' (uniform itextureCube) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -642,7 +642,7 @@ gl_FragCoord origin is upper left 0:67 Sequence 0:67 move second child to first child (temp 4-component vector of uint) 0:67 'txval62' (temp 4-component vector of uint) -0:67 textureGather (global 4-component vector of uint) +0:67 textureGather (temp 4-component vector of uint) 0:67 Construct combined texture-sampler (temp usamplerCube) 0:67 'g_tTexcdu4' (uniform utextureCube) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -655,7 +655,7 @@ gl_FragCoord origin is upper left 0:69 Sequence 0:69 move second child to first child (temp 4-component vector of float) 0:69 'txval70' (temp 4-component vector of float) -0:69 textureGather (global 4-component vector of float) +0:69 textureGather (temp 4-component vector of float) 0:69 Construct combined texture-sampler (temp samplerCube) 0:69 'g_tTexcdf4' (uniform textureCube) 0:69 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -668,7 +668,7 @@ gl_FragCoord origin is upper left 0:70 Sequence 0:70 move second child to first child (temp 4-component vector of int) 0:70 'txval71' (temp 4-component vector of int) -0:70 textureGather (global 4-component vector of int) +0:70 textureGather (temp 4-component vector of int) 0:70 Construct combined texture-sampler (temp isamplerCube) 0:70 'g_tTexcdi4' (uniform itextureCube) 0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -681,7 +681,7 @@ gl_FragCoord origin is upper left 0:71 Sequence 0:71 move second child to first child (temp 4-component vector of uint) 0:71 'txval72' (temp 4-component vector of uint) -0:71 textureGather (global 4-component vector of uint) +0:71 textureGather (temp 4-component vector of uint) 0:71 Construct combined texture-sampler (temp usamplerCube) 0:71 'g_tTexcdu4' (uniform utextureCube) 0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out index 5da611cf..43395741 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of float) 0:46 'txval001' (temp 4-component vector of float) -0:46 textureGatherOffset (global 4-component vector of float) +0:46 textureGatherOffset (temp 4-component vector of float) 0:46 Construct combined texture-sampler (temp sampler2D) 0:46 'g_tTex2df4' (uniform texture2D) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -25,7 +25,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of int) 0:47 'txval011' (temp 4-component vector of int) -0:47 textureGatherOffset (global 4-component vector of int) +0:47 textureGatherOffset (temp 4-component vector of int) 0:47 Construct combined texture-sampler (temp isampler2D) 0:47 'g_tTex2di4' (uniform itexture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -42,7 +42,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp 4-component vector of uint) 0:48 'txval021' (temp 4-component vector of uint) -0:48 textureGatherOffset (global 4-component vector of uint) +0:48 textureGatherOffset (temp 4-component vector of uint) 0:48 Construct combined texture-sampler (temp usampler2D) 0:48 'g_tTex2du4' (uniform utexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -59,7 +59,7 @@ gl_FragCoord origin is upper left 0:50 Sequence 0:50 move second child to first child (temp 4-component vector of float) 0:50 'txval004' (temp 4-component vector of float) -0:50 textureGatherOffsets (global 4-component vector of float) +0:50 textureGatherOffsets (temp 4-component vector of float) 0:50 Construct combined texture-sampler (temp sampler2D) 0:50 'g_tTex2df4' (uniform texture2D) 0:50 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -89,7 +89,7 @@ gl_FragCoord origin is upper left 0:51 Sequence 0:51 move second child to first child (temp 4-component vector of int) 0:51 'txval014' (temp 4-component vector of int) -0:51 textureGatherOffsets (global 4-component vector of int) +0:51 textureGatherOffsets (temp 4-component vector of int) 0:51 Construct combined texture-sampler (temp isampler2D) 0:51 'g_tTex2di4' (uniform itexture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp 4-component vector of uint) 0:52 'txval024' (temp 4-component vector of uint) -0:52 textureGatherOffsets (global 4-component vector of uint) +0:52 textureGatherOffsets (temp 4-component vector of uint) 0:52 Construct combined texture-sampler (temp usampler2D) 0:52 'g_tTex2du4' (uniform utexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -149,7 +149,7 @@ gl_FragCoord origin is upper left 0:62 Sequence 0:62 move second child to first child (temp 4-component vector of float) 0:62 'txval101' (temp 4-component vector of float) -0:62 textureGatherOffset (global 4-component vector of float) +0:62 textureGatherOffset (temp 4-component vector of float) 0:62 Construct combined texture-sampler (temp sampler2D) 0:62 'g_tTex2df4' (uniform texture2D) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -166,7 +166,7 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp 4-component vector of int) 0:63 'txval111' (temp 4-component vector of int) -0:63 textureGatherOffset (global 4-component vector of int) +0:63 textureGatherOffset (temp 4-component vector of int) 0:63 Construct combined texture-sampler (temp isampler2D) 0:63 'g_tTex2di4' (uniform itexture2D) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -183,7 +183,7 @@ gl_FragCoord origin is upper left 0:64 Sequence 0:64 move second child to first child (temp 4-component vector of uint) 0:64 'txval121' (temp 4-component vector of uint) -0:64 textureGatherOffset (global 4-component vector of uint) +0:64 textureGatherOffset (temp 4-component vector of uint) 0:64 Construct combined texture-sampler (temp usampler2D) 0:64 'g_tTex2du4' (uniform utexture2D) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -200,7 +200,7 @@ gl_FragCoord origin is upper left 0:66 Sequence 0:66 move second child to first child (temp 4-component vector of float) 0:66 'txval104' (temp 4-component vector of float) -0:66 textureGatherOffsets (global 4-component vector of float) +0:66 textureGatherOffsets (temp 4-component vector of float) 0:66 Construct combined texture-sampler (temp sampler2D) 0:66 'g_tTex2df4' (uniform texture2D) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -230,7 +230,7 @@ gl_FragCoord origin is upper left 0:67 Sequence 0:67 move second child to first child (temp 4-component vector of int) 0:67 'txval114' (temp 4-component vector of int) -0:67 textureGatherOffsets (global 4-component vector of int) +0:67 textureGatherOffsets (temp 4-component vector of int) 0:67 Construct combined texture-sampler (temp isampler2D) 0:67 'g_tTex2di4' (uniform itexture2D) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -260,7 +260,7 @@ gl_FragCoord origin is upper left 0:68 Sequence 0:68 move second child to first child (temp 4-component vector of uint) 0:68 'txval124' (temp 4-component vector of uint) -0:68 textureGatherOffsets (global 4-component vector of uint) +0:68 textureGatherOffsets (temp 4-component vector of uint) 0:68 Construct combined texture-sampler (temp usampler2D) 0:68 'g_tTex2du4' (uniform utexture2D) 0:68 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -290,7 +290,7 @@ gl_FragCoord origin is upper left 0:78 Sequence 0:78 move second child to first child (temp 4-component vector of float) 0:78 'txval201' (temp 4-component vector of float) -0:78 textureGatherOffset (global 4-component vector of float) +0:78 textureGatherOffset (temp 4-component vector of float) 0:78 Construct combined texture-sampler (temp sampler2D) 0:78 'g_tTex2df4' (uniform texture2D) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -307,7 +307,7 @@ gl_FragCoord origin is upper left 0:79 Sequence 0:79 move second child to first child (temp 4-component vector of int) 0:79 'txval211' (temp 4-component vector of int) -0:79 textureGatherOffset (global 4-component vector of int) +0:79 textureGatherOffset (temp 4-component vector of int) 0:79 Construct combined texture-sampler (temp isampler2D) 0:79 'g_tTex2di4' (uniform itexture2D) 0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -324,7 +324,7 @@ gl_FragCoord origin is upper left 0:80 Sequence 0:80 move second child to first child (temp 4-component vector of uint) 0:80 'txval221' (temp 4-component vector of uint) -0:80 textureGatherOffset (global 4-component vector of uint) +0:80 textureGatherOffset (temp 4-component vector of uint) 0:80 Construct combined texture-sampler (temp usampler2D) 0:80 'g_tTex2du4' (uniform utexture2D) 0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -341,7 +341,7 @@ gl_FragCoord origin is upper left 0:82 Sequence 0:82 move second child to first child (temp 4-component vector of float) 0:82 'txval204' (temp 4-component vector of float) -0:82 textureGatherOffsets (global 4-component vector of float) +0:82 textureGatherOffsets (temp 4-component vector of float) 0:82 Construct combined texture-sampler (temp sampler2D) 0:82 'g_tTex2df4' (uniform texture2D) 0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -371,7 +371,7 @@ gl_FragCoord origin is upper left 0:83 Sequence 0:83 move second child to first child (temp 4-component vector of int) 0:83 'txval214' (temp 4-component vector of int) -0:83 textureGatherOffsets (global 4-component vector of int) +0:83 textureGatherOffsets (temp 4-component vector of int) 0:83 Construct combined texture-sampler (temp isampler2D) 0:83 'g_tTex2di4' (uniform itexture2D) 0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -401,7 +401,7 @@ gl_FragCoord origin is upper left 0:84 Sequence 0:84 move second child to first child (temp 4-component vector of uint) 0:84 'txval224' (temp 4-component vector of uint) -0:84 textureGatherOffsets (global 4-component vector of uint) +0:84 textureGatherOffsets (temp 4-component vector of uint) 0:84 Construct combined texture-sampler (temp usampler2D) 0:84 'g_tTex2du4' (uniform utexture2D) 0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -431,7 +431,7 @@ gl_FragCoord origin is upper left 0:94 Sequence 0:94 move second child to first child (temp 4-component vector of float) 0:94 'txval301' (temp 4-component vector of float) -0:94 textureGatherOffset (global 4-component vector of float) +0:94 textureGatherOffset (temp 4-component vector of float) 0:94 Construct combined texture-sampler (temp sampler2D) 0:94 'g_tTex2df4' (uniform texture2D) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -448,7 +448,7 @@ gl_FragCoord origin is upper left 0:95 Sequence 0:95 move second child to first child (temp 4-component vector of int) 0:95 'txval311' (temp 4-component vector of int) -0:95 textureGatherOffset (global 4-component vector of int) +0:95 textureGatherOffset (temp 4-component vector of int) 0:95 Construct combined texture-sampler (temp isampler2D) 0:95 'g_tTex2di4' (uniform itexture2D) 0:95 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -465,7 +465,7 @@ gl_FragCoord origin is upper left 0:96 Sequence 0:96 move second child to first child (temp 4-component vector of uint) 0:96 'txval321' (temp 4-component vector of uint) -0:96 textureGatherOffset (global 4-component vector of uint) +0:96 textureGatherOffset (temp 4-component vector of uint) 0:96 Construct combined texture-sampler (temp usampler2D) 0:96 'g_tTex2du4' (uniform utexture2D) 0:96 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -482,7 +482,7 @@ gl_FragCoord origin is upper left 0:98 Sequence 0:98 move second child to first child (temp 4-component vector of float) 0:98 'txval304' (temp 4-component vector of float) -0:98 textureGatherOffsets (global 4-component vector of float) +0:98 textureGatherOffsets (temp 4-component vector of float) 0:98 Construct combined texture-sampler (temp sampler2D) 0:98 'g_tTex2df4' (uniform texture2D) 0:98 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -512,7 +512,7 @@ gl_FragCoord origin is upper left 0:99 Sequence 0:99 move second child to first child (temp 4-component vector of int) 0:99 'txval314' (temp 4-component vector of int) -0:99 textureGatherOffsets (global 4-component vector of int) +0:99 textureGatherOffsets (temp 4-component vector of int) 0:99 Construct combined texture-sampler (temp isampler2D) 0:99 'g_tTex2di4' (uniform itexture2D) 0:99 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -542,7 +542,7 @@ gl_FragCoord origin is upper left 0:100 Sequence 0:100 move second child to first child (temp 4-component vector of uint) 0:100 'txval324' (temp 4-component vector of uint) -0:100 textureGatherOffsets (global 4-component vector of uint) +0:100 textureGatherOffsets (temp 4-component vector of uint) 0:100 Construct combined texture-sampler (temp usampler2D) 0:100 'g_tTex2du4' (uniform utexture2D) 0:100 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -634,7 +634,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of float) 0:46 'txval001' (temp 4-component vector of float) -0:46 textureGatherOffset (global 4-component vector of float) +0:46 textureGatherOffset (temp 4-component vector of float) 0:46 Construct combined texture-sampler (temp sampler2D) 0:46 'g_tTex2df4' (uniform texture2D) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -651,7 +651,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of int) 0:47 'txval011' (temp 4-component vector of int) -0:47 textureGatherOffset (global 4-component vector of int) +0:47 textureGatherOffset (temp 4-component vector of int) 0:47 Construct combined texture-sampler (temp isampler2D) 0:47 'g_tTex2di4' (uniform itexture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -668,7 +668,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp 4-component vector of uint) 0:48 'txval021' (temp 4-component vector of uint) -0:48 textureGatherOffset (global 4-component vector of uint) +0:48 textureGatherOffset (temp 4-component vector of uint) 0:48 Construct combined texture-sampler (temp usampler2D) 0:48 'g_tTex2du4' (uniform utexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -685,7 +685,7 @@ gl_FragCoord origin is upper left 0:50 Sequence 0:50 move second child to first child (temp 4-component vector of float) 0:50 'txval004' (temp 4-component vector of float) -0:50 textureGatherOffsets (global 4-component vector of float) +0:50 textureGatherOffsets (temp 4-component vector of float) 0:50 Construct combined texture-sampler (temp sampler2D) 0:50 'g_tTex2df4' (uniform texture2D) 0:50 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -715,7 +715,7 @@ gl_FragCoord origin is upper left 0:51 Sequence 0:51 move second child to first child (temp 4-component vector of int) 0:51 'txval014' (temp 4-component vector of int) -0:51 textureGatherOffsets (global 4-component vector of int) +0:51 textureGatherOffsets (temp 4-component vector of int) 0:51 Construct combined texture-sampler (temp isampler2D) 0:51 'g_tTex2di4' (uniform itexture2D) 0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -745,7 +745,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp 4-component vector of uint) 0:52 'txval024' (temp 4-component vector of uint) -0:52 textureGatherOffsets (global 4-component vector of uint) +0:52 textureGatherOffsets (temp 4-component vector of uint) 0:52 Construct combined texture-sampler (temp usampler2D) 0:52 'g_tTex2du4' (uniform utexture2D) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -775,7 +775,7 @@ gl_FragCoord origin is upper left 0:62 Sequence 0:62 move second child to first child (temp 4-component vector of float) 0:62 'txval101' (temp 4-component vector of float) -0:62 textureGatherOffset (global 4-component vector of float) +0:62 textureGatherOffset (temp 4-component vector of float) 0:62 Construct combined texture-sampler (temp sampler2D) 0:62 'g_tTex2df4' (uniform texture2D) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -792,7 +792,7 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp 4-component vector of int) 0:63 'txval111' (temp 4-component vector of int) -0:63 textureGatherOffset (global 4-component vector of int) +0:63 textureGatherOffset (temp 4-component vector of int) 0:63 Construct combined texture-sampler (temp isampler2D) 0:63 'g_tTex2di4' (uniform itexture2D) 0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -809,7 +809,7 @@ gl_FragCoord origin is upper left 0:64 Sequence 0:64 move second child to first child (temp 4-component vector of uint) 0:64 'txval121' (temp 4-component vector of uint) -0:64 textureGatherOffset (global 4-component vector of uint) +0:64 textureGatherOffset (temp 4-component vector of uint) 0:64 Construct combined texture-sampler (temp usampler2D) 0:64 'g_tTex2du4' (uniform utexture2D) 0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -826,7 +826,7 @@ gl_FragCoord origin is upper left 0:66 Sequence 0:66 move second child to first child (temp 4-component vector of float) 0:66 'txval104' (temp 4-component vector of float) -0:66 textureGatherOffsets (global 4-component vector of float) +0:66 textureGatherOffsets (temp 4-component vector of float) 0:66 Construct combined texture-sampler (temp sampler2D) 0:66 'g_tTex2df4' (uniform texture2D) 0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -856,7 +856,7 @@ gl_FragCoord origin is upper left 0:67 Sequence 0:67 move second child to first child (temp 4-component vector of int) 0:67 'txval114' (temp 4-component vector of int) -0:67 textureGatherOffsets (global 4-component vector of int) +0:67 textureGatherOffsets (temp 4-component vector of int) 0:67 Construct combined texture-sampler (temp isampler2D) 0:67 'g_tTex2di4' (uniform itexture2D) 0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -886,7 +886,7 @@ gl_FragCoord origin is upper left 0:68 Sequence 0:68 move second child to first child (temp 4-component vector of uint) 0:68 'txval124' (temp 4-component vector of uint) -0:68 textureGatherOffsets (global 4-component vector of uint) +0:68 textureGatherOffsets (temp 4-component vector of uint) 0:68 Construct combined texture-sampler (temp usampler2D) 0:68 'g_tTex2du4' (uniform utexture2D) 0:68 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -916,7 +916,7 @@ gl_FragCoord origin is upper left 0:78 Sequence 0:78 move second child to first child (temp 4-component vector of float) 0:78 'txval201' (temp 4-component vector of float) -0:78 textureGatherOffset (global 4-component vector of float) +0:78 textureGatherOffset (temp 4-component vector of float) 0:78 Construct combined texture-sampler (temp sampler2D) 0:78 'g_tTex2df4' (uniform texture2D) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -933,7 +933,7 @@ gl_FragCoord origin is upper left 0:79 Sequence 0:79 move second child to first child (temp 4-component vector of int) 0:79 'txval211' (temp 4-component vector of int) -0:79 textureGatherOffset (global 4-component vector of int) +0:79 textureGatherOffset (temp 4-component vector of int) 0:79 Construct combined texture-sampler (temp isampler2D) 0:79 'g_tTex2di4' (uniform itexture2D) 0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -950,7 +950,7 @@ gl_FragCoord origin is upper left 0:80 Sequence 0:80 move second child to first child (temp 4-component vector of uint) 0:80 'txval221' (temp 4-component vector of uint) -0:80 textureGatherOffset (global 4-component vector of uint) +0:80 textureGatherOffset (temp 4-component vector of uint) 0:80 Construct combined texture-sampler (temp usampler2D) 0:80 'g_tTex2du4' (uniform utexture2D) 0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -967,7 +967,7 @@ gl_FragCoord origin is upper left 0:82 Sequence 0:82 move second child to first child (temp 4-component vector of float) 0:82 'txval204' (temp 4-component vector of float) -0:82 textureGatherOffsets (global 4-component vector of float) +0:82 textureGatherOffsets (temp 4-component vector of float) 0:82 Construct combined texture-sampler (temp sampler2D) 0:82 'g_tTex2df4' (uniform texture2D) 0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -997,7 +997,7 @@ gl_FragCoord origin is upper left 0:83 Sequence 0:83 move second child to first child (temp 4-component vector of int) 0:83 'txval214' (temp 4-component vector of int) -0:83 textureGatherOffsets (global 4-component vector of int) +0:83 textureGatherOffsets (temp 4-component vector of int) 0:83 Construct combined texture-sampler (temp isampler2D) 0:83 'g_tTex2di4' (uniform itexture2D) 0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1027,7 +1027,7 @@ gl_FragCoord origin is upper left 0:84 Sequence 0:84 move second child to first child (temp 4-component vector of uint) 0:84 'txval224' (temp 4-component vector of uint) -0:84 textureGatherOffsets (global 4-component vector of uint) +0:84 textureGatherOffsets (temp 4-component vector of uint) 0:84 Construct combined texture-sampler (temp usampler2D) 0:84 'g_tTex2du4' (uniform utexture2D) 0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1057,7 +1057,7 @@ gl_FragCoord origin is upper left 0:94 Sequence 0:94 move second child to first child (temp 4-component vector of float) 0:94 'txval301' (temp 4-component vector of float) -0:94 textureGatherOffset (global 4-component vector of float) +0:94 textureGatherOffset (temp 4-component vector of float) 0:94 Construct combined texture-sampler (temp sampler2D) 0:94 'g_tTex2df4' (uniform texture2D) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1074,7 +1074,7 @@ gl_FragCoord origin is upper left 0:95 Sequence 0:95 move second child to first child (temp 4-component vector of int) 0:95 'txval311' (temp 4-component vector of int) -0:95 textureGatherOffset (global 4-component vector of int) +0:95 textureGatherOffset (temp 4-component vector of int) 0:95 Construct combined texture-sampler (temp isampler2D) 0:95 'g_tTex2di4' (uniform itexture2D) 0:95 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1091,7 +1091,7 @@ gl_FragCoord origin is upper left 0:96 Sequence 0:96 move second child to first child (temp 4-component vector of uint) 0:96 'txval321' (temp 4-component vector of uint) -0:96 textureGatherOffset (global 4-component vector of uint) +0:96 textureGatherOffset (temp 4-component vector of uint) 0:96 Construct combined texture-sampler (temp usampler2D) 0:96 'g_tTex2du4' (uniform utexture2D) 0:96 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1108,7 +1108,7 @@ gl_FragCoord origin is upper left 0:98 Sequence 0:98 move second child to first child (temp 4-component vector of float) 0:98 'txval304' (temp 4-component vector of float) -0:98 textureGatherOffsets (global 4-component vector of float) +0:98 textureGatherOffsets (temp 4-component vector of float) 0:98 Construct combined texture-sampler (temp sampler2D) 0:98 'g_tTex2df4' (uniform texture2D) 0:98 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1138,7 +1138,7 @@ gl_FragCoord origin is upper left 0:99 Sequence 0:99 move second child to first child (temp 4-component vector of int) 0:99 'txval314' (temp 4-component vector of int) -0:99 textureGatherOffsets (global 4-component vector of int) +0:99 textureGatherOffsets (temp 4-component vector of int) 0:99 Construct combined texture-sampler (temp isampler2D) 0:99 'g_tTex2di4' (uniform itexture2D) 0:99 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1168,7 +1168,7 @@ gl_FragCoord origin is upper left 0:100 Sequence 0:100 move second child to first child (temp 4-component vector of uint) 0:100 'txval324' (temp 4-component vector of uint) -0:100 textureGatherOffsets (global 4-component vector of uint) +0:100 textureGatherOffsets (temp 4-component vector of uint) 0:100 Construct combined texture-sampler (temp usampler2D) 0:100 'g_tTex2du4' (uniform utexture2D) 0:100 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out index f472ee2d..4722cff6 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of float) 0:40 'txval001' (temp 4-component vector of float) -0:40 textureGatherOffset (global 4-component vector of float) +0:40 textureGatherOffset (temp 4-component vector of float) 0:40 Construct combined texture-sampler (temp sampler2DArray) 0:40 'g_tTex2df4a' (uniform texture2DArray) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -25,7 +25,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of int) 0:41 'txval011' (temp 4-component vector of int) -0:41 textureGatherOffset (global 4-component vector of int) +0:41 textureGatherOffset (temp 4-component vector of int) 0:41 Construct combined texture-sampler (temp isampler2DArray) 0:41 'g_tTex2di4a' (uniform itexture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -42,7 +42,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of uint) 0:42 'txval021' (temp 4-component vector of uint) -0:42 textureGatherOffset (global 4-component vector of uint) +0:42 textureGatherOffset (temp 4-component vector of uint) 0:42 Construct combined texture-sampler (temp usampler2DArray) 0:42 'g_tTex2du4a' (uniform utexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -59,7 +59,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of float) 0:44 'txval004' (temp 4-component vector of float) -0:44 textureGatherOffsets (global 4-component vector of float) +0:44 textureGatherOffsets (temp 4-component vector of float) 0:44 Construct combined texture-sampler (temp sampler2DArray) 0:44 'g_tTex2df4a' (uniform texture2DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -89,7 +89,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of int) 0:45 'txval014' (temp 4-component vector of int) -0:45 textureGatherOffsets (global 4-component vector of int) +0:45 textureGatherOffsets (temp 4-component vector of int) 0:45 Construct combined texture-sampler (temp isampler2DArray) 0:45 'g_tTex2di4a' (uniform itexture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of uint) 0:46 'txval024' (temp 4-component vector of uint) -0:46 textureGatherOffsets (global 4-component vector of uint) +0:46 textureGatherOffsets (temp 4-component vector of uint) 0:46 Construct combined texture-sampler (temp usampler2DArray) 0:46 'g_tTex2du4a' (uniform utexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -149,7 +149,7 @@ gl_FragCoord origin is upper left 0:56 Sequence 0:56 move second child to first child (temp 4-component vector of float) 0:56 'txval101' (temp 4-component vector of float) -0:56 textureGatherOffset (global 4-component vector of float) +0:56 textureGatherOffset (temp 4-component vector of float) 0:56 Construct combined texture-sampler (temp sampler2DArray) 0:56 'g_tTex2df4a' (uniform texture2DArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -166,7 +166,7 @@ gl_FragCoord origin is upper left 0:57 Sequence 0:57 move second child to first child (temp 4-component vector of int) 0:57 'txval111' (temp 4-component vector of int) -0:57 textureGatherOffset (global 4-component vector of int) +0:57 textureGatherOffset (temp 4-component vector of int) 0:57 Construct combined texture-sampler (temp isampler2DArray) 0:57 'g_tTex2di4a' (uniform itexture2DArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -183,7 +183,7 @@ gl_FragCoord origin is upper left 0:58 Sequence 0:58 move second child to first child (temp 4-component vector of uint) 0:58 'txval121' (temp 4-component vector of uint) -0:58 textureGatherOffset (global 4-component vector of uint) +0:58 textureGatherOffset (temp 4-component vector of uint) 0:58 Construct combined texture-sampler (temp usampler2DArray) 0:58 'g_tTex2du4a' (uniform utexture2DArray) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -200,7 +200,7 @@ gl_FragCoord origin is upper left 0:60 Sequence 0:60 move second child to first child (temp 4-component vector of float) 0:60 'txval104' (temp 4-component vector of float) -0:60 textureGatherOffsets (global 4-component vector of float) +0:60 textureGatherOffsets (temp 4-component vector of float) 0:60 Construct combined texture-sampler (temp sampler2DArray) 0:60 'g_tTex2df4a' (uniform texture2DArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -230,7 +230,7 @@ gl_FragCoord origin is upper left 0:61 Sequence 0:61 move second child to first child (temp 4-component vector of int) 0:61 'txval114' (temp 4-component vector of int) -0:61 textureGatherOffsets (global 4-component vector of int) +0:61 textureGatherOffsets (temp 4-component vector of int) 0:61 Construct combined texture-sampler (temp isampler2DArray) 0:61 'g_tTex2di4a' (uniform itexture2DArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -260,7 +260,7 @@ gl_FragCoord origin is upper left 0:62 Sequence 0:62 move second child to first child (temp 4-component vector of uint) 0:62 'txval124' (temp 4-component vector of uint) -0:62 textureGatherOffsets (global 4-component vector of uint) +0:62 textureGatherOffsets (temp 4-component vector of uint) 0:62 Construct combined texture-sampler (temp usampler2DArray) 0:62 'g_tTex2du4a' (uniform utexture2DArray) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -290,7 +290,7 @@ gl_FragCoord origin is upper left 0:72 Sequence 0:72 move second child to first child (temp 4-component vector of float) 0:72 'txval201' (temp 4-component vector of float) -0:72 textureGatherOffset (global 4-component vector of float) +0:72 textureGatherOffset (temp 4-component vector of float) 0:72 Construct combined texture-sampler (temp sampler2DArray) 0:72 'g_tTex2df4a' (uniform texture2DArray) 0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -307,7 +307,7 @@ gl_FragCoord origin is upper left 0:73 Sequence 0:73 move second child to first child (temp 4-component vector of int) 0:73 'txval211' (temp 4-component vector of int) -0:73 textureGatherOffset (global 4-component vector of int) +0:73 textureGatherOffset (temp 4-component vector of int) 0:73 Construct combined texture-sampler (temp isampler2DArray) 0:73 'g_tTex2di4a' (uniform itexture2DArray) 0:73 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -324,7 +324,7 @@ gl_FragCoord origin is upper left 0:74 Sequence 0:74 move second child to first child (temp 4-component vector of uint) 0:74 'txval221' (temp 4-component vector of uint) -0:74 textureGatherOffset (global 4-component vector of uint) +0:74 textureGatherOffset (temp 4-component vector of uint) 0:74 Construct combined texture-sampler (temp usampler2DArray) 0:74 'g_tTex2du4a' (uniform utexture2DArray) 0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -341,7 +341,7 @@ gl_FragCoord origin is upper left 0:76 Sequence 0:76 move second child to first child (temp 4-component vector of float) 0:76 'txval204' (temp 4-component vector of float) -0:76 textureGatherOffsets (global 4-component vector of float) +0:76 textureGatherOffsets (temp 4-component vector of float) 0:76 Construct combined texture-sampler (temp sampler2DArray) 0:76 'g_tTex2df4a' (uniform texture2DArray) 0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -371,7 +371,7 @@ gl_FragCoord origin is upper left 0:77 Sequence 0:77 move second child to first child (temp 4-component vector of int) 0:77 'txval214' (temp 4-component vector of int) -0:77 textureGatherOffsets (global 4-component vector of int) +0:77 textureGatherOffsets (temp 4-component vector of int) 0:77 Construct combined texture-sampler (temp isampler2DArray) 0:77 'g_tTex2di4a' (uniform itexture2DArray) 0:77 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -401,7 +401,7 @@ gl_FragCoord origin is upper left 0:78 Sequence 0:78 move second child to first child (temp 4-component vector of uint) 0:78 'txval224' (temp 4-component vector of uint) -0:78 textureGatherOffsets (global 4-component vector of uint) +0:78 textureGatherOffsets (temp 4-component vector of uint) 0:78 Construct combined texture-sampler (temp usampler2DArray) 0:78 'g_tTex2du4a' (uniform utexture2DArray) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -431,7 +431,7 @@ gl_FragCoord origin is upper left 0:88 Sequence 0:88 move second child to first child (temp 4-component vector of float) 0:88 'txval301' (temp 4-component vector of float) -0:88 textureGatherOffset (global 4-component vector of float) +0:88 textureGatherOffset (temp 4-component vector of float) 0:88 Construct combined texture-sampler (temp sampler2DArray) 0:88 'g_tTex2df4a' (uniform texture2DArray) 0:88 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -448,7 +448,7 @@ gl_FragCoord origin is upper left 0:89 Sequence 0:89 move second child to first child (temp 4-component vector of int) 0:89 'txval311' (temp 4-component vector of int) -0:89 textureGatherOffset (global 4-component vector of int) +0:89 textureGatherOffset (temp 4-component vector of int) 0:89 Construct combined texture-sampler (temp isampler2DArray) 0:89 'g_tTex2di4a' (uniform itexture2DArray) 0:89 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -465,7 +465,7 @@ gl_FragCoord origin is upper left 0:90 Sequence 0:90 move second child to first child (temp 4-component vector of uint) 0:90 'txval321' (temp 4-component vector of uint) -0:90 textureGatherOffset (global 4-component vector of uint) +0:90 textureGatherOffset (temp 4-component vector of uint) 0:90 Construct combined texture-sampler (temp usampler2DArray) 0:90 'g_tTex2du4a' (uniform utexture2DArray) 0:90 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -482,7 +482,7 @@ gl_FragCoord origin is upper left 0:92 Sequence 0:92 move second child to first child (temp 4-component vector of float) 0:92 'txval304' (temp 4-component vector of float) -0:92 textureGatherOffsets (global 4-component vector of float) +0:92 textureGatherOffsets (temp 4-component vector of float) 0:92 Construct combined texture-sampler (temp sampler2DArray) 0:92 'g_tTex2df4a' (uniform texture2DArray) 0:92 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -512,7 +512,7 @@ gl_FragCoord origin is upper left 0:93 Sequence 0:93 move second child to first child (temp 4-component vector of int) 0:93 'txval314' (temp 4-component vector of int) -0:93 textureGatherOffsets (global 4-component vector of int) +0:93 textureGatherOffsets (temp 4-component vector of int) 0:93 Construct combined texture-sampler (temp isampler2DArray) 0:93 'g_tTex2di4a' (uniform itexture2DArray) 0:93 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -542,7 +542,7 @@ gl_FragCoord origin is upper left 0:94 Sequence 0:94 move second child to first child (temp 4-component vector of uint) 0:94 'txval324' (temp 4-component vector of uint) -0:94 textureGatherOffsets (global 4-component vector of uint) +0:94 textureGatherOffsets (temp 4-component vector of uint) 0:94 Construct combined texture-sampler (temp usampler2DArray) 0:94 'g_tTex2du4a' (uniform utexture2DArray) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -630,7 +630,7 @@ gl_FragCoord origin is upper left 0:40 Sequence 0:40 move second child to first child (temp 4-component vector of float) 0:40 'txval001' (temp 4-component vector of float) -0:40 textureGatherOffset (global 4-component vector of float) +0:40 textureGatherOffset (temp 4-component vector of float) 0:40 Construct combined texture-sampler (temp sampler2DArray) 0:40 'g_tTex2df4a' (uniform texture2DArray) 0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -647,7 +647,7 @@ gl_FragCoord origin is upper left 0:41 Sequence 0:41 move second child to first child (temp 4-component vector of int) 0:41 'txval011' (temp 4-component vector of int) -0:41 textureGatherOffset (global 4-component vector of int) +0:41 textureGatherOffset (temp 4-component vector of int) 0:41 Construct combined texture-sampler (temp isampler2DArray) 0:41 'g_tTex2di4a' (uniform itexture2DArray) 0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -664,7 +664,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp 4-component vector of uint) 0:42 'txval021' (temp 4-component vector of uint) -0:42 textureGatherOffset (global 4-component vector of uint) +0:42 textureGatherOffset (temp 4-component vector of uint) 0:42 Construct combined texture-sampler (temp usampler2DArray) 0:42 'g_tTex2du4a' (uniform utexture2DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -681,7 +681,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp 4-component vector of float) 0:44 'txval004' (temp 4-component vector of float) -0:44 textureGatherOffsets (global 4-component vector of float) +0:44 textureGatherOffsets (temp 4-component vector of float) 0:44 Construct combined texture-sampler (temp sampler2DArray) 0:44 'g_tTex2df4a' (uniform texture2DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -711,7 +711,7 @@ gl_FragCoord origin is upper left 0:45 Sequence 0:45 move second child to first child (temp 4-component vector of int) 0:45 'txval014' (temp 4-component vector of int) -0:45 textureGatherOffsets (global 4-component vector of int) +0:45 textureGatherOffsets (temp 4-component vector of int) 0:45 Construct combined texture-sampler (temp isampler2DArray) 0:45 'g_tTex2di4a' (uniform itexture2DArray) 0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -741,7 +741,7 @@ gl_FragCoord origin is upper left 0:46 Sequence 0:46 move second child to first child (temp 4-component vector of uint) 0:46 'txval024' (temp 4-component vector of uint) -0:46 textureGatherOffsets (global 4-component vector of uint) +0:46 textureGatherOffsets (temp 4-component vector of uint) 0:46 Construct combined texture-sampler (temp usampler2DArray) 0:46 'g_tTex2du4a' (uniform utexture2DArray) 0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -771,7 +771,7 @@ gl_FragCoord origin is upper left 0:56 Sequence 0:56 move second child to first child (temp 4-component vector of float) 0:56 'txval101' (temp 4-component vector of float) -0:56 textureGatherOffset (global 4-component vector of float) +0:56 textureGatherOffset (temp 4-component vector of float) 0:56 Construct combined texture-sampler (temp sampler2DArray) 0:56 'g_tTex2df4a' (uniform texture2DArray) 0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -788,7 +788,7 @@ gl_FragCoord origin is upper left 0:57 Sequence 0:57 move second child to first child (temp 4-component vector of int) 0:57 'txval111' (temp 4-component vector of int) -0:57 textureGatherOffset (global 4-component vector of int) +0:57 textureGatherOffset (temp 4-component vector of int) 0:57 Construct combined texture-sampler (temp isampler2DArray) 0:57 'g_tTex2di4a' (uniform itexture2DArray) 0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -805,7 +805,7 @@ gl_FragCoord origin is upper left 0:58 Sequence 0:58 move second child to first child (temp 4-component vector of uint) 0:58 'txval121' (temp 4-component vector of uint) -0:58 textureGatherOffset (global 4-component vector of uint) +0:58 textureGatherOffset (temp 4-component vector of uint) 0:58 Construct combined texture-sampler (temp usampler2DArray) 0:58 'g_tTex2du4a' (uniform utexture2DArray) 0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -822,7 +822,7 @@ gl_FragCoord origin is upper left 0:60 Sequence 0:60 move second child to first child (temp 4-component vector of float) 0:60 'txval104' (temp 4-component vector of float) -0:60 textureGatherOffsets (global 4-component vector of float) +0:60 textureGatherOffsets (temp 4-component vector of float) 0:60 Construct combined texture-sampler (temp sampler2DArray) 0:60 'g_tTex2df4a' (uniform texture2DArray) 0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -852,7 +852,7 @@ gl_FragCoord origin is upper left 0:61 Sequence 0:61 move second child to first child (temp 4-component vector of int) 0:61 'txval114' (temp 4-component vector of int) -0:61 textureGatherOffsets (global 4-component vector of int) +0:61 textureGatherOffsets (temp 4-component vector of int) 0:61 Construct combined texture-sampler (temp isampler2DArray) 0:61 'g_tTex2di4a' (uniform itexture2DArray) 0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -882,7 +882,7 @@ gl_FragCoord origin is upper left 0:62 Sequence 0:62 move second child to first child (temp 4-component vector of uint) 0:62 'txval124' (temp 4-component vector of uint) -0:62 textureGatherOffsets (global 4-component vector of uint) +0:62 textureGatherOffsets (temp 4-component vector of uint) 0:62 Construct combined texture-sampler (temp usampler2DArray) 0:62 'g_tTex2du4a' (uniform utexture2DArray) 0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -912,7 +912,7 @@ gl_FragCoord origin is upper left 0:72 Sequence 0:72 move second child to first child (temp 4-component vector of float) 0:72 'txval201' (temp 4-component vector of float) -0:72 textureGatherOffset (global 4-component vector of float) +0:72 textureGatherOffset (temp 4-component vector of float) 0:72 Construct combined texture-sampler (temp sampler2DArray) 0:72 'g_tTex2df4a' (uniform texture2DArray) 0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -929,7 +929,7 @@ gl_FragCoord origin is upper left 0:73 Sequence 0:73 move second child to first child (temp 4-component vector of int) 0:73 'txval211' (temp 4-component vector of int) -0:73 textureGatherOffset (global 4-component vector of int) +0:73 textureGatherOffset (temp 4-component vector of int) 0:73 Construct combined texture-sampler (temp isampler2DArray) 0:73 'g_tTex2di4a' (uniform itexture2DArray) 0:73 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -946,7 +946,7 @@ gl_FragCoord origin is upper left 0:74 Sequence 0:74 move second child to first child (temp 4-component vector of uint) 0:74 'txval221' (temp 4-component vector of uint) -0:74 textureGatherOffset (global 4-component vector of uint) +0:74 textureGatherOffset (temp 4-component vector of uint) 0:74 Construct combined texture-sampler (temp usampler2DArray) 0:74 'g_tTex2du4a' (uniform utexture2DArray) 0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -963,7 +963,7 @@ gl_FragCoord origin is upper left 0:76 Sequence 0:76 move second child to first child (temp 4-component vector of float) 0:76 'txval204' (temp 4-component vector of float) -0:76 textureGatherOffsets (global 4-component vector of float) +0:76 textureGatherOffsets (temp 4-component vector of float) 0:76 Construct combined texture-sampler (temp sampler2DArray) 0:76 'g_tTex2df4a' (uniform texture2DArray) 0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -993,7 +993,7 @@ gl_FragCoord origin is upper left 0:77 Sequence 0:77 move second child to first child (temp 4-component vector of int) 0:77 'txval214' (temp 4-component vector of int) -0:77 textureGatherOffsets (global 4-component vector of int) +0:77 textureGatherOffsets (temp 4-component vector of int) 0:77 Construct combined texture-sampler (temp isampler2DArray) 0:77 'g_tTex2di4a' (uniform itexture2DArray) 0:77 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1023,7 +1023,7 @@ gl_FragCoord origin is upper left 0:78 Sequence 0:78 move second child to first child (temp 4-component vector of uint) 0:78 'txval224' (temp 4-component vector of uint) -0:78 textureGatherOffsets (global 4-component vector of uint) +0:78 textureGatherOffsets (temp 4-component vector of uint) 0:78 Construct combined texture-sampler (temp usampler2DArray) 0:78 'g_tTex2du4a' (uniform utexture2DArray) 0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1053,7 +1053,7 @@ gl_FragCoord origin is upper left 0:88 Sequence 0:88 move second child to first child (temp 4-component vector of float) 0:88 'txval301' (temp 4-component vector of float) -0:88 textureGatherOffset (global 4-component vector of float) +0:88 textureGatherOffset (temp 4-component vector of float) 0:88 Construct combined texture-sampler (temp sampler2DArray) 0:88 'g_tTex2df4a' (uniform texture2DArray) 0:88 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1070,7 +1070,7 @@ gl_FragCoord origin is upper left 0:89 Sequence 0:89 move second child to first child (temp 4-component vector of int) 0:89 'txval311' (temp 4-component vector of int) -0:89 textureGatherOffset (global 4-component vector of int) +0:89 textureGatherOffset (temp 4-component vector of int) 0:89 Construct combined texture-sampler (temp isampler2DArray) 0:89 'g_tTex2di4a' (uniform itexture2DArray) 0:89 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1087,7 +1087,7 @@ gl_FragCoord origin is upper left 0:90 Sequence 0:90 move second child to first child (temp 4-component vector of uint) 0:90 'txval321' (temp 4-component vector of uint) -0:90 textureGatherOffset (global 4-component vector of uint) +0:90 textureGatherOffset (temp 4-component vector of uint) 0:90 Construct combined texture-sampler (temp usampler2DArray) 0:90 'g_tTex2du4a' (uniform utexture2DArray) 0:90 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1104,7 +1104,7 @@ gl_FragCoord origin is upper left 0:92 Sequence 0:92 move second child to first child (temp 4-component vector of float) 0:92 'txval304' (temp 4-component vector of float) -0:92 textureGatherOffsets (global 4-component vector of float) +0:92 textureGatherOffsets (temp 4-component vector of float) 0:92 Construct combined texture-sampler (temp sampler2DArray) 0:92 'g_tTex2df4a' (uniform texture2DArray) 0:92 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1134,7 +1134,7 @@ gl_FragCoord origin is upper left 0:93 Sequence 0:93 move second child to first child (temp 4-component vector of int) 0:93 'txval314' (temp 4-component vector of int) -0:93 textureGatherOffsets (global 4-component vector of int) +0:93 textureGatherOffsets (temp 4-component vector of int) 0:93 Construct combined texture-sampler (temp isampler2DArray) 0:93 'g_tTex2di4a' (uniform itexture2DArray) 0:93 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -1164,7 +1164,7 @@ gl_FragCoord origin is upper left 0:94 Sequence 0:94 move second child to first child (temp 4-component vector of uint) 0:94 'txval324' (temp 4-component vector of uint) -0:94 textureGatherOffsets (global 4-component vector of uint) +0:94 textureGatherOffsets (temp 4-component vector of uint) 0:94 Construct combined texture-sampler (temp usampler2DArray) 0:94 'g_tTex2du4a' (uniform utexture2DArray) 0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out index 7d8d9be6..5985eadc 100644 --- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -14,7 +14,7 @@ ERROR: node is still EOpNull! 0:16 move second child to first child (temp 2-component vector of float) 0:16 'r00' (temp 2-component vector of float) 0:16 ERROR: Bad aggregation op - (global 2-component vector of float) + (temp 2-component vector of float) 0:16 'g_tTex2dmsf4' (uniform texture2DMS) 0:16 Constant: 0:16 1 (const int) @@ -22,7 +22,7 @@ ERROR: node is still EOpNull! 0:17 move second child to first child (temp 2-component vector of float) 0:17 'r01' (temp 2-component vector of float) 0:17 ERROR: Bad aggregation op - (global 2-component vector of float) + (temp 2-component vector of float) 0:17 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:17 Constant: 0:17 2 (const int) @@ -79,7 +79,7 @@ ERROR: node is still EOpNull! 0:16 move second child to first child (temp 2-component vector of float) 0:16 'r00' (temp 2-component vector of float) 0:16 ERROR: Bad aggregation op - (global 2-component vector of float) + (temp 2-component vector of float) 0:16 'g_tTex2dmsf4' (uniform texture2DMS) 0:16 Constant: 0:16 1 (const int) @@ -87,7 +87,7 @@ ERROR: node is still EOpNull! 0:17 move second child to first child (temp 2-component vector of float) 0:17 'r01' (temp 2-component vector of float) 0:17 ERROR: Bad aggregation op - (global 2-component vector of float) + (temp 2-component vector of float) 0:17 'g_tTex2dmsf4a' (uniform texture2DMSArray) 0:17 Constant: 0:17 2 (const int) diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out index ce9b5619..c37bff61 100755 --- a/Test/baseResults/hlsl.if.frag.out +++ b/Test/baseResults/hlsl.if.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Test condition and select (temp void) 0:3 Condition -0:3 all (global bool) +0:3 all (temp bool) 0:3 Equal (temp 4-component vector of bool) 0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 'input' (layout(location=0 ) in 4-component vector of float) @@ -20,7 +20,7 @@ gl_FragCoord origin is upper left 0:4 Branch: Return 0:6 Test condition and select (temp void) 0:6 Condition -0:6 all (global bool) +0:6 all (temp bool) 0:6 Equal (temp 4-component vector of bool) 0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 'input' (layout(location=0 ) in 4-component vector of float) @@ -39,21 +39,21 @@ gl_FragCoord origin is upper left 0:9 Branch: Return 0:11 Test condition and select (temp void) 0:11 Condition -0:11 all (global bool) +0:11 all (temp bool) 0:11 Equal (temp 4-component vector of bool) 0:11 'input' (layout(location=0 ) in 4-component vector of float) 0:11 'input' (layout(location=0 ) in 4-component vector of float) 0:11 true case is null 0:14 Test condition and select (temp void) 0:14 Condition -0:14 all (global bool) +0:14 all (temp bool) 0:14 Equal (temp 4-component vector of bool) 0:14 'input' (layout(location=0 ) in 4-component vector of float) 0:14 'input' (layout(location=0 ) in 4-component vector of float) 0:14 true case is null 0:19 Test condition and select (temp void) 0:19 Condition -0:19 all (global bool) +0:19 all (temp bool) 0:19 Equal (temp 4-component vector of bool) 0:19 'input' (layout(location=0 ) in 4-component vector of float) 0:19 'input' (layout(location=0 ) in 4-component vector of float) @@ -66,7 +66,7 @@ gl_FragCoord origin is upper left 0:20 Branch: Return 0:23 Test condition and select (temp void) 0:23 Condition -0:23 all (global bool) +0:23 all (temp bool) 0:23 Equal (temp 4-component vector of bool) 0:23 'input' (layout(location=0 ) in 4-component vector of float) 0:23 'input' (layout(location=0 ) in 4-component vector of float) @@ -115,7 +115,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Test condition and select (temp void) 0:3 Condition -0:3 all (global bool) +0:3 all (temp bool) 0:3 Equal (temp 4-component vector of bool) 0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 'input' (layout(location=0 ) in 4-component vector of float) @@ -127,7 +127,7 @@ gl_FragCoord origin is upper left 0:4 Branch: Return 0:6 Test condition and select (temp void) 0:6 Condition -0:6 all (global bool) +0:6 all (temp bool) 0:6 Equal (temp 4-component vector of bool) 0:6 'input' (layout(location=0 ) in 4-component vector of float) 0:6 'input' (layout(location=0 ) in 4-component vector of float) @@ -146,21 +146,21 @@ gl_FragCoord origin is upper left 0:9 Branch: Return 0:11 Test condition and select (temp void) 0:11 Condition -0:11 all (global bool) +0:11 all (temp bool) 0:11 Equal (temp 4-component vector of bool) 0:11 'input' (layout(location=0 ) in 4-component vector of float) 0:11 'input' (layout(location=0 ) in 4-component vector of float) 0:11 true case is null 0:14 Test condition and select (temp void) 0:14 Condition -0:14 all (global bool) +0:14 all (temp bool) 0:14 Equal (temp 4-component vector of bool) 0:14 'input' (layout(location=0 ) in 4-component vector of float) 0:14 'input' (layout(location=0 ) in 4-component vector of float) 0:14 true case is null 0:19 Test condition and select (temp void) 0:19 Condition -0:19 all (global bool) +0:19 all (temp bool) 0:19 Equal (temp 4-component vector of bool) 0:19 'input' (layout(location=0 ) in 4-component vector of float) 0:19 'input' (layout(location=0 ) in 4-component vector of float) @@ -173,7 +173,7 @@ gl_FragCoord origin is upper left 0:20 Branch: Return 0:23 Test condition and select (temp void) 0:23 Condition -0:23 all (global bool) +0:23 all (temp bool) 0:23 Equal (temp 4-component vector of bool) 0:23 'input' (layout(location=0 ) in 4-component vector of float) 0:23 'input' (layout(location=0 ) in 4-component vector of float) diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out index 5d92dd1f..07bd3709 100644 --- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out +++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out @@ -5,12 +5,12 @@ local_size = (1, 1, 1) 0:3 Function Definition: ComputeShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence -0:4 MemoryBarrier (global void) -0:5 AllMemoryBarrierWithGroupSync (global void) -0:6 GroupMemoryBarrier (global void) -0:7 GroupMemoryBarrierWithGroupSync (global void) -0:8 WorkgroupMemoryBarrier (global void) -0:9 WorkgroupMemoryBarrierWithGroupSync (global void) +0:4 MemoryBarrier (temp void) +0:5 AllMemoryBarrierWithGroupSync (temp void) +0:6 GroupMemoryBarrier (temp void) +0:7 GroupMemoryBarrierWithGroupSync (temp void) +0:8 WorkgroupMemoryBarrier (temp void) +0:9 WorkgroupMemoryBarrierWithGroupSync (temp void) 0:11 Sequence 0:11 move second child to first child (temp float) 0:? '@entryPointOutput' (layout(location=0 ) out float) @@ -30,12 +30,12 @@ local_size = (1, 1, 1) 0:3 Function Definition: ComputeShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence -0:4 MemoryBarrier (global void) -0:5 AllMemoryBarrierWithGroupSync (global void) -0:6 GroupMemoryBarrier (global void) -0:7 GroupMemoryBarrierWithGroupSync (global void) -0:8 WorkgroupMemoryBarrier (global void) -0:9 WorkgroupMemoryBarrierWithGroupSync (global void) +0:4 MemoryBarrier (temp void) +0:5 AllMemoryBarrierWithGroupSync (temp void) +0:6 GroupMemoryBarrier (temp void) +0:7 GroupMemoryBarrierWithGroupSync (temp void) +0:8 WorkgroupMemoryBarrier (temp void) +0:9 WorkgroupMemoryBarrierWithGroupSync (temp void) 0:11 Sequence 0:11 move second child to first child (temp float) 0:? '@entryPointOutput' (layout(location=0 ) out float) diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out index 732e2544..42ad9731 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -10,9 +10,9 @@ local_size = (1, 1, 1) 0:17 'inU0' (in uint) 0:17 'inU1' (in uint) 0:? Sequence -0:21 all (global bool) +0:21 all (temp bool) 0:21 'inF0' (in float) -0:24 AtomicAdd (global void) +0:24 AtomicAdd (temp void) 0:24 'gs_ua' (shared uint) 0:24 'gs_ub' (shared uint) 0:25 move second child to first child (temp uint) @@ -20,7 +20,7 @@ local_size = (1, 1, 1) 0:25 AtomicAdd (temp uint) 0:25 'gs_ua' (shared uint) 0:25 'gs_ub' (shared uint) -0:26 AtomicAnd (global void) +0:26 AtomicAnd (temp void) 0:26 'gs_ua' (shared uint) 0:26 'gs_ub' (shared uint) 0:27 move second child to first child (temp uint) @@ -39,7 +39,7 @@ local_size = (1, 1, 1) 0:29 AtomicExchange (temp uint) 0:29 'gs_ua' (shared uint) 0:29 'gs_ub' (shared uint) -0:30 AtomicMax (global void) +0:30 AtomicMax (temp void) 0:30 'gs_ua' (shared uint) 0:30 'gs_ub' (shared uint) 0:31 move second child to first child (temp uint) @@ -47,7 +47,7 @@ local_size = (1, 1, 1) 0:31 AtomicMax (temp uint) 0:31 'gs_ua' (shared uint) 0:31 'gs_ub' (shared uint) -0:32 AtomicMin (global void) +0:32 AtomicMin (temp void) 0:32 'gs_ua' (shared uint) 0:32 'gs_ub' (shared uint) 0:33 move second child to first child (temp uint) @@ -55,7 +55,7 @@ local_size = (1, 1, 1) 0:33 AtomicMin (temp uint) 0:33 'gs_ua' (shared uint) 0:33 'gs_ub' (shared uint) -0:34 AtomicOr (global void) +0:34 AtomicOr (temp void) 0:34 'gs_ua' (shared uint) 0:34 'gs_ub' (shared uint) 0:35 move second child to first child (temp uint) @@ -63,7 +63,7 @@ local_size = (1, 1, 1) 0:35 AtomicOr (temp uint) 0:35 'gs_ua' (shared uint) 0:35 'gs_ub' (shared uint) -0:36 AtomicXor (global void) +0:36 AtomicXor (temp void) 0:36 'gs_ua' (shared uint) 0:36 'gs_ub' (shared uint) 0:37 move second child to first child (temp uint) @@ -91,9 +91,9 @@ local_size = (1, 1, 1) 0:51 'inU0' (in 2-component vector of uint) 0:51 'inU1' (in 2-component vector of uint) 0:? Sequence -0:55 all (global bool) +0:55 all (temp bool) 0:55 'inF0' (in 2-component vector of float) -0:58 AtomicAdd (global void) +0:58 AtomicAdd (temp void) 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) @@ -101,7 +101,7 @@ local_size = (1, 1, 1) 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 (global void) +0:60 AtomicAnd (temp void) 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) @@ -120,7 +120,7 @@ local_size = (1, 1, 1) 0:63 AtomicExchange (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 (global void) +0:64 AtomicMax (temp void) 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) @@ -128,7 +128,7 @@ local_size = (1, 1, 1) 0:65 AtomicMax (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 (global void) +0:66 AtomicMin (temp void) 0:66 'gs_ua2' (shared 2-component vector of uint) 0:66 'gs_ub2' (shared 2-component vector of uint) 0:67 move second child to first child (temp 2-component vector of uint) @@ -136,7 +136,7 @@ local_size = (1, 1, 1) 0:67 AtomicMin (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 (global void) +0:68 AtomicOr (temp void) 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) @@ -144,7 +144,7 @@ local_size = (1, 1, 1) 0:69 AtomicOr (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 (global void) +0:70 AtomicXor (temp void) 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) @@ -164,9 +164,9 @@ local_size = (1, 1, 1) 0:78 'inU0' (in 3-component vector of uint) 0:78 'inU1' (in 3-component vector of uint) 0:? Sequence -0:82 all (global bool) +0:82 all (temp bool) 0:82 'inF0' (in 3-component vector of float) -0:85 AtomicAdd (global void) +0:85 AtomicAdd (temp void) 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) @@ -174,7 +174,7 @@ local_size = (1, 1, 1) 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 (global void) +0:87 AtomicAnd (temp void) 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) @@ -193,7 +193,7 @@ local_size = (1, 1, 1) 0:90 AtomicExchange (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 (global void) +0:91 AtomicMax (temp void) 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) @@ -201,7 +201,7 @@ local_size = (1, 1, 1) 0:92 AtomicMax (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 (global void) +0:93 AtomicMin (temp void) 0:93 'gs_ua3' (shared 3-component vector of uint) 0:93 'gs_ub3' (shared 3-component vector of uint) 0:94 move second child to first child (temp 3-component vector of uint) @@ -209,7 +209,7 @@ local_size = (1, 1, 1) 0:94 AtomicMin (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 (global void) +0:95 AtomicOr (temp void) 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) @@ -217,7 +217,7 @@ local_size = (1, 1, 1) 0:96 AtomicOr (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 (global void) +0:97 AtomicXor (temp void) 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) @@ -238,9 +238,9 @@ local_size = (1, 1, 1) 0:105 'inU0' (layout(location=3 ) in 4-component vector of uint) 0:105 'inU1' (layout(location=4 ) in 4-component vector of uint) 0:? Sequence -0:109 all (global bool) +0:109 all (temp bool) 0:109 'inF0' (layout(location=0 ) in 4-component vector of float) -0:112 AtomicAdd (global void) +0:112 AtomicAdd (temp void) 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) @@ -248,7 +248,7 @@ local_size = (1, 1, 1) 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 (global void) +0:114 AtomicAnd (temp void) 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) @@ -267,7 +267,7 @@ local_size = (1, 1, 1) 0:117 AtomicExchange (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 (global void) +0:118 AtomicMax (temp void) 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) @@ -275,7 +275,7 @@ local_size = (1, 1, 1) 0:119 AtomicMax (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 (global void) +0:120 AtomicMin (temp void) 0:120 'gs_ua4' (shared 4-component vector of uint) 0:120 'gs_ub4' (shared 4-component vector of uint) 0:121 move second child to first child (temp 4-component vector of uint) @@ -283,7 +283,7 @@ local_size = (1, 1, 1) 0:121 AtomicMin (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 (global void) +0:122 AtomicOr (temp void) 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) @@ -291,7 +291,7 @@ local_size = (1, 1, 1) 0:123 AtomicOr (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 (global void) +0:124 AtomicXor (temp void) 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) @@ -343,9 +343,9 @@ local_size = (1, 1, 1) 0:17 'inU0' (in uint) 0:17 'inU1' (in uint) 0:? Sequence -0:21 all (global bool) +0:21 all (temp bool) 0:21 'inF0' (in float) -0:24 AtomicAdd (global void) +0:24 AtomicAdd (temp void) 0:24 'gs_ua' (shared uint) 0:24 'gs_ub' (shared uint) 0:25 move second child to first child (temp uint) @@ -353,7 +353,7 @@ local_size = (1, 1, 1) 0:25 AtomicAdd (temp uint) 0:25 'gs_ua' (shared uint) 0:25 'gs_ub' (shared uint) -0:26 AtomicAnd (global void) +0:26 AtomicAnd (temp void) 0:26 'gs_ua' (shared uint) 0:26 'gs_ub' (shared uint) 0:27 move second child to first child (temp uint) @@ -372,7 +372,7 @@ local_size = (1, 1, 1) 0:29 AtomicExchange (temp uint) 0:29 'gs_ua' (shared uint) 0:29 'gs_ub' (shared uint) -0:30 AtomicMax (global void) +0:30 AtomicMax (temp void) 0:30 'gs_ua' (shared uint) 0:30 'gs_ub' (shared uint) 0:31 move second child to first child (temp uint) @@ -380,7 +380,7 @@ local_size = (1, 1, 1) 0:31 AtomicMax (temp uint) 0:31 'gs_ua' (shared uint) 0:31 'gs_ub' (shared uint) -0:32 AtomicMin (global void) +0:32 AtomicMin (temp void) 0:32 'gs_ua' (shared uint) 0:32 'gs_ub' (shared uint) 0:33 move second child to first child (temp uint) @@ -388,7 +388,7 @@ local_size = (1, 1, 1) 0:33 AtomicMin (temp uint) 0:33 'gs_ua' (shared uint) 0:33 'gs_ub' (shared uint) -0:34 AtomicOr (global void) +0:34 AtomicOr (temp void) 0:34 'gs_ua' (shared uint) 0:34 'gs_ub' (shared uint) 0:35 move second child to first child (temp uint) @@ -396,7 +396,7 @@ local_size = (1, 1, 1) 0:35 AtomicOr (temp uint) 0:35 'gs_ua' (shared uint) 0:35 'gs_ub' (shared uint) -0:36 AtomicXor (global void) +0:36 AtomicXor (temp void) 0:36 'gs_ua' (shared uint) 0:36 'gs_ub' (shared uint) 0:37 move second child to first child (temp uint) @@ -424,9 +424,9 @@ local_size = (1, 1, 1) 0:51 'inU0' (in 2-component vector of uint) 0:51 'inU1' (in 2-component vector of uint) 0:? Sequence -0:55 all (global bool) +0:55 all (temp bool) 0:55 'inF0' (in 2-component vector of float) -0:58 AtomicAdd (global void) +0:58 AtomicAdd (temp void) 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) @@ -434,7 +434,7 @@ local_size = (1, 1, 1) 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 (global void) +0:60 AtomicAnd (temp void) 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) @@ -453,7 +453,7 @@ local_size = (1, 1, 1) 0:63 AtomicExchange (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 (global void) +0:64 AtomicMax (temp void) 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) @@ -461,7 +461,7 @@ local_size = (1, 1, 1) 0:65 AtomicMax (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 (global void) +0:66 AtomicMin (temp void) 0:66 'gs_ua2' (shared 2-component vector of uint) 0:66 'gs_ub2' (shared 2-component vector of uint) 0:67 move second child to first child (temp 2-component vector of uint) @@ -469,7 +469,7 @@ local_size = (1, 1, 1) 0:67 AtomicMin (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 (global void) +0:68 AtomicOr (temp void) 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) @@ -477,7 +477,7 @@ local_size = (1, 1, 1) 0:69 AtomicOr (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 (global void) +0:70 AtomicXor (temp void) 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) @@ -497,9 +497,9 @@ local_size = (1, 1, 1) 0:78 'inU0' (in 3-component vector of uint) 0:78 'inU1' (in 3-component vector of uint) 0:? Sequence -0:82 all (global bool) +0:82 all (temp bool) 0:82 'inF0' (in 3-component vector of float) -0:85 AtomicAdd (global void) +0:85 AtomicAdd (temp void) 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) @@ -507,7 +507,7 @@ local_size = (1, 1, 1) 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 (global void) +0:87 AtomicAnd (temp void) 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) @@ -526,7 +526,7 @@ local_size = (1, 1, 1) 0:90 AtomicExchange (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 (global void) +0:91 AtomicMax (temp void) 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) @@ -534,7 +534,7 @@ local_size = (1, 1, 1) 0:92 AtomicMax (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 (global void) +0:93 AtomicMin (temp void) 0:93 'gs_ua3' (shared 3-component vector of uint) 0:93 'gs_ub3' (shared 3-component vector of uint) 0:94 move second child to first child (temp 3-component vector of uint) @@ -542,7 +542,7 @@ local_size = (1, 1, 1) 0:94 AtomicMin (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 (global void) +0:95 AtomicOr (temp void) 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) @@ -550,7 +550,7 @@ local_size = (1, 1, 1) 0:96 AtomicOr (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 (global void) +0:97 AtomicXor (temp void) 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) @@ -571,9 +571,9 @@ local_size = (1, 1, 1) 0:105 'inU0' (layout(location=3 ) in 4-component vector of uint) 0:105 'inU1' (layout(location=4 ) in 4-component vector of uint) 0:? Sequence -0:109 all (global bool) +0:109 all (temp bool) 0:109 'inF0' (layout(location=0 ) in 4-component vector of float) -0:112 AtomicAdd (global void) +0:112 AtomicAdd (temp void) 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) @@ -581,7 +581,7 @@ local_size = (1, 1, 1) 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 (global void) +0:114 AtomicAnd (temp void) 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) @@ -600,7 +600,7 @@ local_size = (1, 1, 1) 0:117 AtomicExchange (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 (global void) +0:118 AtomicMax (temp void) 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) @@ -608,7 +608,7 @@ local_size = (1, 1, 1) 0:119 AtomicMax (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 (global void) +0:120 AtomicMin (temp void) 0:120 'gs_ua4' (shared 4-component vector of uint) 0:120 'gs_ub4' (shared 4-component vector of uint) 0:121 move second child to first child (temp 4-component vector of uint) @@ -616,7 +616,7 @@ local_size = (1, 1, 1) 0:121 AtomicMin (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 (global void) +0:122 AtomicOr (temp void) 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) @@ -624,7 +624,7 @@ local_size = (1, 1, 1) 0:123 AtomicOr (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 (global void) +0:124 AtomicXor (temp void) 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) diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out index 554e5520..91abf737 100644 --- a/Test/baseResults/hlsl.intrinsics.double.frag.out +++ b/Test/baseResults/hlsl.intrinsics.double.frag.out @@ -16,7 +16,7 @@ gl_FragCoord origin is upper left 0:6 Sequence 0:6 move second child to first child (temp double) 0:6 'r00' (temp double) -0:6 fma (global double) +0:6 fma (temp double) 0:6 'inDV1a' (layout(location=0 ) in double) 0:6 'inDV1b' (layout(location=1 ) in double) 0:6 'inDV1c' (layout(location=2 ) in double) @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:6 Sequence 0:6 move second child to first child (temp double) 0:6 'r00' (temp double) -0:6 fma (global double) +0:6 fma (temp double) 0:6 'inDV1a' (layout(location=0 ) in double) 0:6 'inDV1b' (layout(location=1 ) in double) 0:6 'inDV1c' (layout(location=2 ) in double) diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out index 5fcb5f99..0b4c0746 100644 --- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out +++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out @@ -14,7 +14,7 @@ ERROR: node is still EOpNull! 0:2 'inF0' (in float) 0:? Sequence 0:3 ERROR: Bad unary op - (global uint) + (temp uint) 0:3 'inF0' (in float) 0:5 Branch: Return with expression 0:5 Constant: @@ -31,7 +31,7 @@ ERROR: node is still EOpNull! 0:15 'inF0' (in 2-component vector of float) 0:? Sequence 0:16 ERROR: Bad unary op - (global 2-component vector of uint) + (temp 2-component vector of uint) 0:16 'inF0' (in 2-component vector of float) 0:18 Branch: Return with expression 0:? Constant: @@ -42,7 +42,7 @@ ERROR: node is still EOpNull! 0:22 'inF0' (in 3-component vector of float) 0:? Sequence 0:23 ERROR: Bad unary op - (global 3-component vector of uint) + (temp 3-component vector of uint) 0:23 'inF0' (in 3-component vector of float) 0:25 Branch: Return with expression 0:? Constant: @@ -54,7 +54,7 @@ ERROR: node is still EOpNull! 0:29 'inF0' (layout(location=0 ) in 4-component vector of float) 0:? Sequence 0:30 ERROR: Bad unary op - (global 4-component vector of uint) + (temp 4-component vector of uint) 0:30 'inF0' (layout(location=0 ) in 4-component vector of float) 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of float) @@ -81,7 +81,7 @@ ERROR: node is still EOpNull! 0:2 'inF0' (in float) 0:? Sequence 0:3 ERROR: Bad unary op - (global uint) + (temp uint) 0:3 'inF0' (in float) 0:5 Branch: Return with expression 0:5 Constant: @@ -98,7 +98,7 @@ ERROR: node is still EOpNull! 0:15 'inF0' (in 2-component vector of float) 0:? Sequence 0:16 ERROR: Bad unary op - (global 2-component vector of uint) + (temp 2-component vector of uint) 0:16 'inF0' (in 2-component vector of float) 0:18 Branch: Return with expression 0:? Constant: @@ -109,7 +109,7 @@ ERROR: node is still EOpNull! 0:22 'inF0' (in 3-component vector of float) 0:? Sequence 0:23 ERROR: Bad unary op - (global 3-component vector of uint) + (temp 3-component vector of uint) 0:23 'inF0' (in 3-component vector of float) 0:25 Branch: Return with expression 0:? Constant: @@ -121,7 +121,7 @@ ERROR: node is still EOpNull! 0:29 'inF0' (layout(location=0 ) in 4-component vector of float) 0:? Sequence 0:30 ERROR: Bad unary op - (global 4-component vector of uint) + (temp 4-component vector of uint) 0:30 'inF0' (layout(location=0 ) in 4-component vector of float) 0:32 Sequence 0:32 move second child to first child (temp 4-component vector of float) diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index a5a119a8..8a1935ee 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -13,63 +13,63 @@ gl_FragCoord origin is upper left 0:20 Sequence 0:20 move second child to first child (temp bool) 0:20 'r000' (temp bool) -0:20 all (global bool) +0:20 all (temp bool) 0:20 'inF0' (in float) 0:21 Sequence 0:21 move second child to first child (temp float) 0:21 'r001' (temp float) -0:21 Absolute value (global float) +0:21 Absolute value (temp float) 0:21 'inF0' (in float) 0:22 Sequence 0:22 move second child to first child (temp float) 0:22 'r002' (temp float) -0:22 arc cosine (global float) +0:22 arc cosine (temp float) 0:22 'inF0' (in float) 0:23 Sequence 0:23 move second child to first child (temp bool) 0:23 'r003' (temp bool) -0:23 any (global bool) +0:23 any (temp bool) 0:23 'inF0' (in float) 0:24 Sequence 0:24 move second child to first child (temp float) 0:24 'r004' (temp float) -0:24 arc sine (global float) +0:24 arc sine (temp float) 0:24 'inF0' (in float) 0:25 Sequence 0:25 move second child to first child (temp int) 0:25 'r005' (temp int) -0:25 floatBitsToInt (global int) +0:25 floatBitsToInt (temp int) 0:25 'inF0' (in float) 0:26 Sequence 0:26 move second child to first child (temp uint) 0:26 'r006' (temp uint) -0:26 floatBitsToUint (global uint) +0:26 floatBitsToUint (temp uint) 0:26 'inF0' (in float) 0:27 Sequence 0:27 move second child to first child (temp float) 0:27 'r007' (temp float) -0:27 intBitsToFloat (global float) +0:27 intBitsToFloat (temp float) 0:27 'inU0' (in uint) 0:29 Sequence 0:29 move second child to first child (temp float) 0:29 'r009' (temp float) -0:29 arc tangent (global float) +0:29 arc tangent (temp float) 0:29 'inF0' (in float) 0:30 Sequence 0:30 move second child to first child (temp float) 0:30 'r010' (temp float) -0:30 arc tangent (global float) +0:30 arc tangent (temp float) 0:30 'inF0' (in float) 0:30 'inF1' (in float) 0:31 Sequence 0:31 move second child to first child (temp float) 0:31 'r011' (temp float) -0:31 Ceiling (global float) +0:31 Ceiling (temp float) 0:31 'inF0' (in float) 0:32 Sequence 0:32 move second child to first child (temp float) 0:32 'r012' (temp float) -0:32 clamp (global float) +0:32 clamp (temp float) 0:32 'inF0' (in float) 0:32 'inF1' (in float) 0:32 'inF2' (in float) @@ -84,132 +84,132 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp float) 0:34 'r014' (temp float) -0:34 cosine (global float) +0:34 cosine (temp float) 0:34 'inF0' (in float) 0:35 Sequence 0:35 move second child to first child (temp float) 0:35 'r015' (temp float) -0:35 hyp. cosine (global float) +0:35 hyp. cosine (temp float) 0:35 'inF0' (in float) 0:36 Sequence 0:36 move second child to first child (temp uint) 0:36 'r016' (temp uint) -0:36 bitCount (global uint) +0:36 bitCount (temp uint) 0:36 Constant: 0:36 7 (const uint) 0:37 Sequence 0:37 move second child to first child (temp float) 0:37 'r017' (temp float) -0:37 dPdx (global float) +0:37 dPdx (temp float) 0:37 'inF0' (in float) 0:38 Sequence 0:38 move second child to first child (temp float) 0:38 'r018' (temp float) -0:38 dPdxCoarse (global float) +0:38 dPdxCoarse (temp float) 0:38 'inF0' (in float) 0:39 Sequence 0:39 move second child to first child (temp float) 0:39 'r019' (temp float) -0:39 dPdxFine (global float) +0:39 dPdxFine (temp float) 0:39 'inF0' (in float) 0:40 Sequence 0:40 move second child to first child (temp float) 0:40 'r020' (temp float) -0:40 dPdy (global float) +0:40 dPdy (temp float) 0:40 'inF0' (in float) 0:41 Sequence 0:41 move second child to first child (temp float) 0:41 'r021' (temp float) -0:41 dPdyCoarse (global float) +0:41 dPdyCoarse (temp float) 0:41 'inF0' (in float) 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r022' (temp float) -0:42 dPdyFine (global float) +0:42 dPdyFine (temp float) 0:42 'inF0' (in float) 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r023' (temp float) -0:43 degrees (global float) +0:43 degrees (temp float) 0:43 'inF0' (in float) 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r027' (temp float) -0:47 exp (global float) +0:47 exp (temp float) 0:47 'inF0' (in float) 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r028' (temp float) -0:48 exp2 (global float) +0:48 exp2 (temp float) 0:48 'inF0' (in float) 0:49 Sequence 0:49 move second child to first child (temp uint) 0:49 'r029' (temp uint) 0:49 Convert int to uint (temp uint) -0:49 findMSB (global int) +0:49 findMSB (temp int) 0:49 Constant: 0:49 7 (const int) 0:50 Sequence 0:50 move second child to first child (temp uint) 0:50 'r030' (temp uint) 0:50 Convert int to uint (temp uint) -0:50 findLSB (global int) +0:50 findLSB (temp int) 0:50 Constant: 0:50 7 (const int) 0:51 Sequence 0:51 move second child to first child (temp float) 0:51 'r031' (temp float) -0:51 Floor (global float) +0:51 Floor (temp float) 0:51 'inF0' (in float) 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r033' (temp float) -0:53 mod (global float) +0:53 mod (temp float) 0:53 'inF0' (in float) 0:53 'inF1' (in float) 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r034' (temp float) -0:54 Fraction (global float) +0:54 Fraction (temp float) 0:54 'inF0' (in float) 0:55 Sequence 0:55 move second child to first child (temp float) 0:55 'r035' (temp float) -0:55 frexp (global float) +0:55 frexp (temp float) 0:55 'inF0' (in float) 0:55 'inF1' (in float) 0:56 Sequence 0:56 move second child to first child (temp float) 0:56 'r036' (temp float) -0:56 fwidth (global float) +0:56 fwidth (temp float) 0:56 'inF0' (in float) 0:57 Sequence 0:57 move second child to first child (temp bool) 0:57 'r037' (temp bool) -0:57 isinf (global bool) +0:57 isinf (temp bool) 0:57 'inF0' (in float) 0:58 Sequence 0:58 move second child to first child (temp bool) 0:58 'r038' (temp bool) -0:58 isnan (global bool) +0:58 isnan (temp bool) 0:58 'inF0' (in float) 0:59 Sequence 0:59 move second child to first child (temp float) 0:59 'r039' (temp float) -0:59 ldexp (global float) +0:59 ldexp (temp float) 0:59 'inF0' (in float) 0:59 'inF1' (in float) 0:60 Sequence 0:60 move second child to first child (temp float) 0:60 'r039a' (temp float) -0:60 mix (global float) +0:60 mix (temp float) 0:60 'inF0' (in float) 0:60 'inF1' (in float) 0:60 'inF2' (in float) 0:61 Sequence 0:61 move second child to first child (temp float) 0:61 'r040' (temp float) -0:61 log (global float) +0:61 log (temp float) 0:61 'inF0' (in float) 0:62 Sequence 0:62 move second child to first child (temp float) @@ -222,30 +222,30 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp float) 0:63 'r042' (temp float) -0:63 log2 (global float) +0:63 log2 (temp float) 0:63 'inF0' (in float) 0:64 Sequence 0:64 move second child to first child (temp float) 0:64 'r043' (temp float) -0:64 max (global float) +0:64 max (temp float) 0:64 'inF0' (in float) 0:64 'inF1' (in float) 0:65 Sequence 0:65 move second child to first child (temp float) 0:65 'r044' (temp float) -0:65 min (global float) +0:65 min (temp float) 0:65 'inF0' (in float) 0:65 'inF1' (in float) 0:66 Sequence 0:66 move second child to first child (temp float) 0:66 'r045' (temp float) -0:66 pow (global float) +0:66 pow (temp float) 0:66 'inF0' (in float) 0:66 'inF1' (in float) 0:67 Sequence 0:67 move second child to first child (temp float) 0:67 'r046' (temp float) -0:67 radians (global float) +0:67 radians (temp float) 0:67 'inF0' (in float) 0:68 Sequence 0:68 move second child to first child (temp float) @@ -257,18 +257,18 @@ gl_FragCoord origin is upper left 0:69 Sequence 0:69 move second child to first child (temp uint) 0:69 'r048' (temp uint) -0:69 bitFieldReverse (global uint) +0:69 bitFieldReverse (temp uint) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child (temp float) 0:70 'r049' (temp float) -0:70 roundEven (global float) +0:70 roundEven (temp float) 0:70 'inF0' (in float) 0:71 Sequence 0:71 move second child to first child (temp float) 0:71 'r050' (temp float) -0:71 inverse sqrt (global float) +0:71 inverse sqrt (temp float) 0:71 'inF0' (in float) 0:72 Sequence 0:72 move second child to first child (temp float) @@ -282,12 +282,12 @@ gl_FragCoord origin is upper left 0:73 Sequence 0:73 move second child to first child (temp float) 0:73 'r052' (temp float) -0:73 Sign (global float) +0:73 Sign (temp float) 0:73 'inF0' (in float) 0:74 Sequence 0:74 move second child to first child (temp float) 0:74 'r053' (temp float) -0:74 sine (global float) +0:74 sine (temp float) 0:74 'inF0' (in float) 0:75 Sequence 0:75 move second child to first child (temp float) @@ -301,40 +301,40 @@ gl_FragCoord origin is upper left 0:76 Sequence 0:76 move second child to first child (temp float) 0:76 'r055' (temp float) -0:76 hyp. sine (global float) +0:76 hyp. sine (temp float) 0:76 'inF0' (in float) 0:77 Sequence 0:77 move second child to first child (temp float) 0:77 'r056' (temp float) -0:77 smoothstep (global float) +0:77 smoothstep (temp float) 0:77 'inF0' (in float) 0:77 'inF1' (in float) 0:77 'inF2' (in float) 0:78 Sequence 0:78 move second child to first child (temp float) 0:78 'r057' (temp float) -0:78 sqrt (global float) +0:78 sqrt (temp float) 0:78 'inF0' (in float) 0:79 Sequence 0:79 move second child to first child (temp float) 0:79 'r058' (temp float) -0:79 step (global float) +0:79 step (temp float) 0:79 'inF0' (in float) 0:79 'inF1' (in float) 0:80 Sequence 0:80 move second child to first child (temp float) 0:80 'r059' (temp float) -0:80 tangent (global float) +0:80 tangent (temp float) 0:80 'inF0' (in float) 0:81 Sequence 0:81 move second child to first child (temp float) 0:81 'r060' (temp float) -0:81 hyp. tangent (global float) +0:81 hyp. tangent (temp float) 0:81 'inF0' (in float) 0:83 Sequence 0:83 move second child to first child (temp float) 0:83 'r061' (temp float) -0:83 trunc (global float) +0:83 trunc (temp float) 0:83 'inF0' (in float) 0:85 Branch: Return with expression 0:85 Constant: @@ -359,63 +359,63 @@ gl_FragCoord origin is upper left 0:98 Sequence 0:98 move second child to first child (temp bool) 0:98 'r000' (temp bool) -0:98 all (global bool) +0:98 all (temp bool) 0:98 'inF0' (in 2-component vector of float) 0:99 Sequence 0:99 move second child to first child (temp 2-component vector of float) 0:99 'r001' (temp 2-component vector of float) -0:99 Absolute value (global 2-component vector of float) +0:99 Absolute value (temp 2-component vector of float) 0:99 'inF0' (in 2-component vector of float) 0:100 Sequence 0:100 move second child to first child (temp 2-component vector of float) 0:100 'r002' (temp 2-component vector of float) -0:100 arc cosine (global 2-component vector of float) +0:100 arc cosine (temp 2-component vector of float) 0:100 'inF0' (in 2-component vector of float) 0:101 Sequence 0:101 move second child to first child (temp bool) 0:101 'r003' (temp bool) -0:101 any (global bool) +0:101 any (temp bool) 0:101 'inF0' (in 2-component vector of float) 0:102 Sequence 0:102 move second child to first child (temp 2-component vector of float) 0:102 'r004' (temp 2-component vector of float) -0:102 arc sine (global 2-component vector of float) +0:102 arc sine (temp 2-component vector of float) 0:102 'inF0' (in 2-component vector of float) 0:103 Sequence 0:103 move second child to first child (temp 2-component vector of int) 0:103 'r005' (temp 2-component vector of int) -0:103 floatBitsToInt (global 2-component vector of int) +0:103 floatBitsToInt (temp 2-component vector of int) 0:103 'inF0' (in 2-component vector of float) 0:104 Sequence 0:104 move second child to first child (temp 2-component vector of uint) 0:104 'r006' (temp 2-component vector of uint) -0:104 floatBitsToUint (global 2-component vector of uint) +0:104 floatBitsToUint (temp 2-component vector of uint) 0:104 'inF0' (in 2-component vector of float) 0:105 Sequence 0:105 move second child to first child (temp 2-component vector of float) 0:105 'r007' (temp 2-component vector of float) -0:105 intBitsToFloat (global 2-component vector of float) +0:105 intBitsToFloat (temp 2-component vector of float) 0:105 'inU0' (in 2-component vector of uint) 0:107 Sequence 0:107 move second child to first child (temp 2-component vector of float) 0:107 'r009' (temp 2-component vector of float) -0:107 arc tangent (global 2-component vector of float) +0:107 arc tangent (temp 2-component vector of float) 0:107 'inF0' (in 2-component vector of float) 0:108 Sequence 0:108 move second child to first child (temp 2-component vector of float) 0:108 'r010' (temp 2-component vector of float) -0:108 arc tangent (global 2-component vector of float) +0:108 arc tangent (temp 2-component vector of float) 0:108 'inF0' (in 2-component vector of float) 0:108 'inF1' (in 2-component vector of float) 0:109 Sequence 0:109 move second child to first child (temp 2-component vector of float) 0:109 'r011' (temp 2-component vector of float) -0:109 Ceiling (global 2-component vector of float) +0:109 Ceiling (temp 2-component vector of float) 0:109 'inF0' (in 2-component vector of float) 0:110 Sequence 0:110 move second child to first child (temp 2-component vector of float) 0:110 'r012' (temp 2-component vector of float) -0:110 clamp (global 2-component vector of float) +0:110 clamp (temp 2-component vector of float) 0:110 'inF0' (in 2-component vector of float) 0:110 'inF1' (in 2-component vector of float) 0:110 'inF2' (in 2-component vector of float) @@ -432,157 +432,157 @@ gl_FragCoord origin is upper left 0:112 Sequence 0:112 move second child to first child (temp 2-component vector of float) 0:112 'r013' (temp 2-component vector of float) -0:112 cosine (global 2-component vector of float) +0:112 cosine (temp 2-component vector of float) 0:112 'inF0' (in 2-component vector of float) 0:113 Sequence 0:113 move second child to first child (temp 2-component vector of float) 0:113 'r015' (temp 2-component vector of float) -0:113 hyp. cosine (global 2-component vector of float) +0:113 hyp. cosine (temp 2-component vector of float) 0:113 'inF0' (in 2-component vector of float) 0:114 Sequence 0:114 move second child to first child (temp 2-component vector of uint) 0:114 'r016' (temp 2-component vector of uint) -0:? bitCount (global 2-component vector of uint) +0:? bitCount (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:115 Sequence 0:115 move second child to first child (temp 2-component vector of float) 0:115 'r017' (temp 2-component vector of float) -0:115 dPdx (global 2-component vector of float) +0:115 dPdx (temp 2-component vector of float) 0:115 'inF0' (in 2-component vector of float) 0:116 Sequence 0:116 move second child to first child (temp 2-component vector of float) 0:116 'r018' (temp 2-component vector of float) -0:116 dPdxCoarse (global 2-component vector of float) +0:116 dPdxCoarse (temp 2-component vector of float) 0:116 'inF0' (in 2-component vector of float) 0:117 Sequence 0:117 move second child to first child (temp 2-component vector of float) 0:117 'r019' (temp 2-component vector of float) -0:117 dPdxFine (global 2-component vector of float) +0:117 dPdxFine (temp 2-component vector of float) 0:117 'inF0' (in 2-component vector of float) 0:118 Sequence 0:118 move second child to first child (temp 2-component vector of float) 0:118 'r020' (temp 2-component vector of float) -0:118 dPdy (global 2-component vector of float) +0:118 dPdy (temp 2-component vector of float) 0:118 'inF0' (in 2-component vector of float) 0:119 Sequence 0:119 move second child to first child (temp 2-component vector of float) 0:119 'r021' (temp 2-component vector of float) -0:119 dPdyCoarse (global 2-component vector of float) +0:119 dPdyCoarse (temp 2-component vector of float) 0:119 'inF0' (in 2-component vector of float) 0:120 Sequence 0:120 move second child to first child (temp 2-component vector of float) 0:120 'r022' (temp 2-component vector of float) -0:120 dPdyFine (global 2-component vector of float) +0:120 dPdyFine (temp 2-component vector of float) 0:120 'inF0' (in 2-component vector of float) 0:121 Sequence 0:121 move second child to first child (temp 2-component vector of float) 0:121 'r023' (temp 2-component vector of float) -0:121 degrees (global 2-component vector of float) +0:121 degrees (temp 2-component vector of float) 0:121 'inF0' (in 2-component vector of float) 0:125 Sequence 0:125 move second child to first child (temp float) 0:125 'r026' (temp float) -0:125 distance (global float) +0:125 distance (temp float) 0:125 'inF0' (in 2-component vector of float) 0:125 'inF1' (in 2-component vector of float) 0:126 Sequence 0:126 move second child to first child (temp float) 0:126 'r027' (temp float) -0:126 dot-product (global float) +0:126 dot-product (temp float) 0:126 'inF0' (in 2-component vector of float) 0:126 'inF1' (in 2-component vector of float) 0:130 Sequence 0:130 move second child to first child (temp 2-component vector of float) 0:130 'r028' (temp 2-component vector of float) -0:130 exp (global 2-component vector of float) +0:130 exp (temp 2-component vector of float) 0:130 'inF0' (in 2-component vector of float) 0:131 Sequence 0:131 move second child to first child (temp 2-component vector of float) 0:131 'r029' (temp 2-component vector of float) -0:131 exp2 (global 2-component vector of float) +0:131 exp2 (temp 2-component vector of float) 0:131 'inF0' (in 2-component vector of float) 0:132 Sequence 0:132 move second child to first child (temp 2-component vector of float) 0:132 'r030' (temp 2-component vector of float) -0:132 face-forward (global 2-component vector of float) +0:132 face-forward (temp 2-component vector of float) 0:132 'inF0' (in 2-component vector of float) 0:132 'inF1' (in 2-component vector of float) 0:132 'inF2' (in 2-component vector of float) 0:133 Sequence 0:133 move second child to first child (temp 2-component vector of uint) 0:133 'r031' (temp 2-component vector of uint) -0:? findMSB (global 2-component vector of uint) +0:? findMSB (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:134 Sequence 0:134 move second child to first child (temp 2-component vector of uint) 0:134 'r032' (temp 2-component vector of uint) -0:? findLSB (global 2-component vector of uint) +0:? findLSB (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:135 Sequence 0:135 move second child to first child (temp 2-component vector of float) 0:135 'r033' (temp 2-component vector of float) -0:135 Floor (global 2-component vector of float) +0:135 Floor (temp 2-component vector of float) 0:135 'inF0' (in 2-component vector of float) 0:137 Sequence 0:137 move second child to first child (temp 2-component vector of float) 0:137 'r035' (temp 2-component vector of float) -0:137 mod (global 2-component vector of float) +0:137 mod (temp 2-component vector of float) 0:137 'inF0' (in 2-component vector of float) 0:137 'inF1' (in 2-component vector of float) 0:138 Sequence 0:138 move second child to first child (temp 2-component vector of float) 0:138 'r036' (temp 2-component vector of float) -0:138 Fraction (global 2-component vector of float) +0:138 Fraction (temp 2-component vector of float) 0:138 'inF0' (in 2-component vector of float) 0:139 Sequence 0:139 move second child to first child (temp 2-component vector of float) 0:139 'r037' (temp 2-component vector of float) -0:139 frexp (global 2-component vector of float) +0:139 frexp (temp 2-component vector of float) 0:139 'inF0' (in 2-component vector of float) 0:139 'inF1' (in 2-component vector of float) 0:140 Sequence 0:140 move second child to first child (temp 2-component vector of float) 0:140 'r038' (temp 2-component vector of float) -0:140 fwidth (global 2-component vector of float) +0:140 fwidth (temp 2-component vector of float) 0:140 'inF0' (in 2-component vector of float) 0:141 Sequence 0:141 move second child to first child (temp 2-component vector of bool) 0:141 'r039' (temp 2-component vector of bool) -0:141 isinf (global 2-component vector of bool) +0:141 isinf (temp 2-component vector of bool) 0:141 'inF0' (in 2-component vector of float) 0:142 Sequence 0:142 move second child to first child (temp 2-component vector of bool) 0:142 'r040' (temp 2-component vector of bool) -0:142 isnan (global 2-component vector of bool) +0:142 isnan (temp 2-component vector of bool) 0:142 'inF0' (in 2-component vector of float) 0:143 Sequence 0:143 move second child to first child (temp 2-component vector of float) 0:143 'r041' (temp 2-component vector of float) -0:143 ldexp (global 2-component vector of float) +0:143 ldexp (temp 2-component vector of float) 0:143 'inF0' (in 2-component vector of float) 0:143 'inF1' (in 2-component vector of float) 0:144 Sequence 0:144 move second child to first child (temp 2-component vector of float) 0:144 'r039a' (temp 2-component vector of float) -0:144 mix (global 2-component vector of float) +0:144 mix (temp 2-component vector of float) 0:144 'inF0' (in 2-component vector of float) 0:144 'inF1' (in 2-component vector of float) 0:144 'inF2' (in 2-component vector of float) 0:145 Sequence 0:145 move second child to first child (temp float) 0:145 'r042' (temp float) -0:145 length (global float) +0:145 length (temp float) 0:145 'inF0' (in 2-component vector of float) 0:146 Sequence 0:146 move second child to first child (temp 2-component vector of float) 0:146 'r043' (temp 2-component vector of float) -0:146 log (global 2-component vector of float) +0:146 log (temp 2-component vector of float) 0:146 'inF0' (in 2-component vector of float) 0:147 Sequence 0:147 move second child to first child (temp 2-component vector of float) @@ -595,35 +595,35 @@ gl_FragCoord origin is upper left 0:148 Sequence 0:148 move second child to first child (temp 2-component vector of float) 0:148 'r045' (temp 2-component vector of float) -0:148 log2 (global 2-component vector of float) +0:148 log2 (temp 2-component vector of float) 0:148 'inF0' (in 2-component vector of float) 0:149 Sequence 0:149 move second child to first child (temp 2-component vector of float) 0:149 'r046' (temp 2-component vector of float) -0:149 max (global 2-component vector of float) +0:149 max (temp 2-component vector of float) 0:149 'inF0' (in 2-component vector of float) 0:149 'inF1' (in 2-component vector of float) 0:150 Sequence 0:150 move second child to first child (temp 2-component vector of float) 0:150 'r047' (temp 2-component vector of float) -0:150 min (global 2-component vector of float) +0:150 min (temp 2-component vector of float) 0:150 'inF0' (in 2-component vector of float) 0:150 'inF1' (in 2-component vector of float) 0:151 Sequence 0:151 move second child to first child (temp 2-component vector of float) 0:151 'r048' (temp 2-component vector of float) -0:151 normalize (global 2-component vector of float) +0:151 normalize (temp 2-component vector of float) 0:151 'inF0' (in 2-component vector of float) 0:152 Sequence 0:152 move second child to first child (temp 2-component vector of float) 0:152 'r049' (temp 2-component vector of float) -0:152 pow (global 2-component vector of float) +0:152 pow (temp 2-component vector of float) 0:152 'inF0' (in 2-component vector of float) 0:152 'inF1' (in 2-component vector of float) 0:153 Sequence 0:153 move second child to first child (temp 2-component vector of float) 0:153 'r050' (temp 2-component vector of float) -0:153 radians (global 2-component vector of float) +0:153 radians (temp 2-component vector of float) 0:153 'inF0' (in 2-component vector of float) 0:154 Sequence 0:154 move second child to first child (temp 2-component vector of float) @@ -635,13 +635,13 @@ gl_FragCoord origin is upper left 0:155 Sequence 0:155 move second child to first child (temp 2-component vector of float) 0:155 'r052' (temp 2-component vector of float) -0:155 reflect (global 2-component vector of float) +0:155 reflect (temp 2-component vector of float) 0:155 'inF0' (in 2-component vector of float) 0:155 'inF1' (in 2-component vector of float) 0:156 Sequence 0:156 move second child to first child (temp 2-component vector of float) 0:156 'r053' (temp 2-component vector of float) -0:156 refract (global 2-component vector of float) +0:156 refract (temp 2-component vector of float) 0:156 'inF0' (in 2-component vector of float) 0:156 'inF1' (in 2-component vector of float) 0:156 Constant: @@ -649,19 +649,19 @@ gl_FragCoord origin is upper left 0:157 Sequence 0:157 move second child to first child (temp 2-component vector of uint) 0:157 'r054' (temp 2-component vector of uint) -0:? bitFieldReverse (global 2-component vector of uint) +0:? bitFieldReverse (temp 2-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:158 Sequence 0:158 move second child to first child (temp 2-component vector of float) 0:158 'r055' (temp 2-component vector of float) -0:158 roundEven (global 2-component vector of float) +0:158 roundEven (temp 2-component vector of float) 0:158 'inF0' (in 2-component vector of float) 0:159 Sequence 0:159 move second child to first child (temp 2-component vector of float) 0:159 'r056' (temp 2-component vector of float) -0:159 inverse sqrt (global 2-component vector of float) +0:159 inverse sqrt (temp 2-component vector of float) 0:159 'inF0' (in 2-component vector of float) 0:160 Sequence 0:160 move second child to first child (temp 2-component vector of float) @@ -675,12 +675,12 @@ gl_FragCoord origin is upper left 0:161 Sequence 0:161 move second child to first child (temp 2-component vector of float) 0:161 'r058' (temp 2-component vector of float) -0:161 Sign (global 2-component vector of float) +0:161 Sign (temp 2-component vector of float) 0:161 'inF0' (in 2-component vector of float) 0:162 Sequence 0:162 move second child to first child (temp 2-component vector of float) 0:162 'r059' (temp 2-component vector of float) -0:162 sine (global 2-component vector of float) +0:162 sine (temp 2-component vector of float) 0:162 'inF0' (in 2-component vector of float) 0:163 Sequence 0:163 move second child to first child (temp 2-component vector of float) @@ -694,40 +694,40 @@ gl_FragCoord origin is upper left 0:164 Sequence 0:164 move second child to first child (temp 2-component vector of float) 0:164 'r060' (temp 2-component vector of float) -0:164 hyp. sine (global 2-component vector of float) +0:164 hyp. sine (temp 2-component vector of float) 0:164 'inF0' (in 2-component vector of float) 0:165 Sequence 0:165 move second child to first child (temp 2-component vector of float) 0:165 'r061' (temp 2-component vector of float) -0:165 smoothstep (global 2-component vector of float) +0:165 smoothstep (temp 2-component vector of float) 0:165 'inF0' (in 2-component vector of float) 0:165 'inF1' (in 2-component vector of float) 0:165 'inF2' (in 2-component vector of float) 0:166 Sequence 0:166 move second child to first child (temp 2-component vector of float) 0:166 'r062' (temp 2-component vector of float) -0:166 sqrt (global 2-component vector of float) +0:166 sqrt (temp 2-component vector of float) 0:166 'inF0' (in 2-component vector of float) 0:167 Sequence 0:167 move second child to first child (temp 2-component vector of float) 0:167 'r063' (temp 2-component vector of float) -0:167 step (global 2-component vector of float) +0:167 step (temp 2-component vector of float) 0:167 'inF0' (in 2-component vector of float) 0:167 'inF1' (in 2-component vector of float) 0:168 Sequence 0:168 move second child to first child (temp 2-component vector of float) 0:168 'r064' (temp 2-component vector of float) -0:168 tangent (global 2-component vector of float) +0:168 tangent (temp 2-component vector of float) 0:168 'inF0' (in 2-component vector of float) 0:169 Sequence 0:169 move second child to first child (temp 2-component vector of float) 0:169 'r065' (temp 2-component vector of float) -0:169 hyp. tangent (global 2-component vector of float) +0:169 hyp. tangent (temp 2-component vector of float) 0:169 'inF0' (in 2-component vector of float) 0:171 Sequence 0:171 move second child to first child (temp 2-component vector of float) 0:171 'r066' (temp 2-component vector of float) -0:171 trunc (global 2-component vector of float) +0:171 trunc (temp 2-component vector of float) 0:171 'inF0' (in 2-component vector of float) 0:174 Branch: Return with expression 0:? Constant: @@ -744,63 +744,63 @@ gl_FragCoord origin is upper left 0:181 Sequence 0:181 move second child to first child (temp bool) 0:181 'r000' (temp bool) -0:181 all (global bool) +0:181 all (temp bool) 0:181 'inF0' (in 3-component vector of float) 0:182 Sequence 0:182 move second child to first child (temp 3-component vector of float) 0:182 'r001' (temp 3-component vector of float) -0:182 Absolute value (global 3-component vector of float) +0:182 Absolute value (temp 3-component vector of float) 0:182 'inF0' (in 3-component vector of float) 0:183 Sequence 0:183 move second child to first child (temp 3-component vector of float) 0:183 'r002' (temp 3-component vector of float) -0:183 arc cosine (global 3-component vector of float) +0:183 arc cosine (temp 3-component vector of float) 0:183 'inF0' (in 3-component vector of float) 0:184 Sequence 0:184 move second child to first child (temp bool) 0:184 'r003' (temp bool) -0:184 any (global bool) +0:184 any (temp bool) 0:184 'inF0' (in 3-component vector of float) 0:185 Sequence 0:185 move second child to first child (temp 3-component vector of float) 0:185 'r004' (temp 3-component vector of float) -0:185 arc sine (global 3-component vector of float) +0:185 arc sine (temp 3-component vector of float) 0:185 'inF0' (in 3-component vector of float) 0:186 Sequence 0:186 move second child to first child (temp 3-component vector of int) 0:186 'r005' (temp 3-component vector of int) -0:186 floatBitsToInt (global 3-component vector of int) +0:186 floatBitsToInt (temp 3-component vector of int) 0:186 'inF0' (in 3-component vector of float) 0:187 Sequence 0:187 move second child to first child (temp 3-component vector of uint) 0:187 'r006' (temp 3-component vector of uint) -0:187 floatBitsToUint (global 3-component vector of uint) +0:187 floatBitsToUint (temp 3-component vector of uint) 0:187 'inF0' (in 3-component vector of float) 0:188 Sequence 0:188 move second child to first child (temp 3-component vector of float) 0:188 'r007' (temp 3-component vector of float) -0:188 intBitsToFloat (global 3-component vector of float) +0:188 intBitsToFloat (temp 3-component vector of float) 0:188 'inU0' (in 3-component vector of uint) 0:190 Sequence 0:190 move second child to first child (temp 3-component vector of float) 0:190 'r009' (temp 3-component vector of float) -0:190 arc tangent (global 3-component vector of float) +0:190 arc tangent (temp 3-component vector of float) 0:190 'inF0' (in 3-component vector of float) 0:191 Sequence 0:191 move second child to first child (temp 3-component vector of float) 0:191 'r010' (temp 3-component vector of float) -0:191 arc tangent (global 3-component vector of float) +0:191 arc tangent (temp 3-component vector of float) 0:191 'inF0' (in 3-component vector of float) 0:191 'inF1' (in 3-component vector of float) 0:192 Sequence 0:192 move second child to first child (temp 3-component vector of float) 0:192 'r011' (temp 3-component vector of float) -0:192 Ceiling (global 3-component vector of float) +0:192 Ceiling (temp 3-component vector of float) 0:192 'inF0' (in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child (temp 3-component vector of float) 0:193 'r012' (temp 3-component vector of float) -0:193 clamp (global 3-component vector of float) +0:193 clamp (temp 3-component vector of float) 0:193 'inF0' (in 3-component vector of float) 0:193 'inF1' (in 3-component vector of float) 0:193 'inF2' (in 3-component vector of float) @@ -818,17 +818,17 @@ gl_FragCoord origin is upper left 0:195 Sequence 0:195 move second child to first child (temp 3-component vector of float) 0:195 'r013' (temp 3-component vector of float) -0:195 cosine (global 3-component vector of float) +0:195 cosine (temp 3-component vector of float) 0:195 'inF0' (in 3-component vector of float) 0:196 Sequence 0:196 move second child to first child (temp 3-component vector of float) 0:196 'r014' (temp 3-component vector of float) -0:196 hyp. cosine (global 3-component vector of float) +0:196 hyp. cosine (temp 3-component vector of float) 0:196 'inF0' (in 3-component vector of float) 0:197 Sequence 0:197 move second child to first child (temp 3-component vector of uint) 0:197 'r015' (temp 3-component vector of uint) -0:? bitCount (global 3-component vector of uint) +0:? bitCount (temp 3-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) @@ -836,77 +836,77 @@ gl_FragCoord origin is upper left 0:198 Sequence 0:198 move second child to first child (temp 3-component vector of float) 0:198 'r016' (temp 3-component vector of float) -0:198 cross-product (global 3-component vector of float) +0:198 cross-product (temp 3-component vector of float) 0:198 'inF0' (in 3-component vector of float) 0:198 'inF1' (in 3-component vector of float) 0:199 Sequence 0:199 move second child to first child (temp 3-component vector of float) 0:199 'r017' (temp 3-component vector of float) -0:199 dPdx (global 3-component vector of float) +0:199 dPdx (temp 3-component vector of float) 0:199 'inF0' (in 3-component vector of float) 0:200 Sequence 0:200 move second child to first child (temp 3-component vector of float) 0:200 'r018' (temp 3-component vector of float) -0:200 dPdxCoarse (global 3-component vector of float) +0:200 dPdxCoarse (temp 3-component vector of float) 0:200 'inF0' (in 3-component vector of float) 0:201 Sequence 0:201 move second child to first child (temp 3-component vector of float) 0:201 'r019' (temp 3-component vector of float) -0:201 dPdxFine (global 3-component vector of float) +0:201 dPdxFine (temp 3-component vector of float) 0:201 'inF0' (in 3-component vector of float) 0:202 Sequence 0:202 move second child to first child (temp 3-component vector of float) 0:202 'r020' (temp 3-component vector of float) -0:202 dPdy (global 3-component vector of float) +0:202 dPdy (temp 3-component vector of float) 0:202 'inF0' (in 3-component vector of float) 0:203 Sequence 0:203 move second child to first child (temp 3-component vector of float) 0:203 'r021' (temp 3-component vector of float) -0:203 dPdyCoarse (global 3-component vector of float) +0:203 dPdyCoarse (temp 3-component vector of float) 0:203 'inF0' (in 3-component vector of float) 0:204 Sequence 0:204 move second child to first child (temp 3-component vector of float) 0:204 'r022' (temp 3-component vector of float) -0:204 dPdyFine (global 3-component vector of float) +0:204 dPdyFine (temp 3-component vector of float) 0:204 'inF0' (in 3-component vector of float) 0:205 Sequence 0:205 move second child to first child (temp 3-component vector of float) 0:205 'r023' (temp 3-component vector of float) -0:205 degrees (global 3-component vector of float) +0:205 degrees (temp 3-component vector of float) 0:205 'inF0' (in 3-component vector of float) 0:206 Sequence 0:206 move second child to first child (temp float) 0:206 'r024' (temp float) -0:206 distance (global float) +0:206 distance (temp float) 0:206 'inF0' (in 3-component vector of float) 0:206 'inF1' (in 3-component vector of float) 0:207 Sequence 0:207 move second child to first child (temp float) 0:207 'r025' (temp float) -0:207 dot-product (global float) +0:207 dot-product (temp float) 0:207 'inF0' (in 3-component vector of float) 0:207 'inF1' (in 3-component vector of float) 0:211 Sequence 0:211 move second child to first child (temp 3-component vector of float) 0:211 'r029' (temp 3-component vector of float) -0:211 exp (global 3-component vector of float) +0:211 exp (temp 3-component vector of float) 0:211 'inF0' (in 3-component vector of float) 0:212 Sequence 0:212 move second child to first child (temp 3-component vector of float) 0:212 'r030' (temp 3-component vector of float) -0:212 exp2 (global 3-component vector of float) +0:212 exp2 (temp 3-component vector of float) 0:212 'inF0' (in 3-component vector of float) 0:213 Sequence 0:213 move second child to first child (temp 3-component vector of float) 0:213 'r031' (temp 3-component vector of float) -0:213 face-forward (global 3-component vector of float) +0:213 face-forward (temp 3-component vector of float) 0:213 'inF0' (in 3-component vector of float) 0:213 'inF1' (in 3-component vector of float) 0:213 'inF2' (in 3-component vector of float) 0:214 Sequence 0:214 move second child to first child (temp 3-component vector of uint) 0:214 'r032' (temp 3-component vector of uint) -0:? findMSB (global 3-component vector of uint) +0:? findMSB (temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) @@ -914,7 +914,7 @@ gl_FragCoord origin is upper left 0:215 Sequence 0:215 move second child to first child (temp 3-component vector of uint) 0:215 'r033' (temp 3-component vector of uint) -0:? findLSB (global 3-component vector of uint) +0:? findLSB (temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) @@ -922,57 +922,57 @@ gl_FragCoord origin is upper left 0:216 Sequence 0:216 move second child to first child (temp 3-component vector of float) 0:216 'r034' (temp 3-component vector of float) -0:216 Floor (global 3-component vector of float) +0:216 Floor (temp 3-component vector of float) 0:216 'inF0' (in 3-component vector of float) 0:218 Sequence 0:218 move second child to first child (temp 3-component vector of float) 0:218 'r036' (temp 3-component vector of float) -0:218 mod (global 3-component vector of float) +0:218 mod (temp 3-component vector of float) 0:218 'inF0' (in 3-component vector of float) 0:218 'inF1' (in 3-component vector of float) 0:219 Sequence 0:219 move second child to first child (temp 3-component vector of float) 0:219 'r037' (temp 3-component vector of float) -0:219 Fraction (global 3-component vector of float) +0:219 Fraction (temp 3-component vector of float) 0:219 'inF0' (in 3-component vector of float) 0:220 Sequence 0:220 move second child to first child (temp 3-component vector of float) 0:220 'r038' (temp 3-component vector of float) -0:220 frexp (global 3-component vector of float) +0:220 frexp (temp 3-component vector of float) 0:220 'inF0' (in 3-component vector of float) 0:220 'inF1' (in 3-component vector of float) 0:221 Sequence 0:221 move second child to first child (temp 3-component vector of float) 0:221 'r039' (temp 3-component vector of float) -0:221 fwidth (global 3-component vector of float) +0:221 fwidth (temp 3-component vector of float) 0:221 'inF0' (in 3-component vector of float) 0:222 Sequence 0:222 move second child to first child (temp 3-component vector of bool) 0:222 'r040' (temp 3-component vector of bool) -0:222 isinf (global 3-component vector of bool) +0:222 isinf (temp 3-component vector of bool) 0:222 'inF0' (in 3-component vector of float) 0:223 Sequence 0:223 move second child to first child (temp 3-component vector of bool) 0:223 'r041' (temp 3-component vector of bool) -0:223 isnan (global 3-component vector of bool) +0:223 isnan (temp 3-component vector of bool) 0:223 'inF0' (in 3-component vector of float) 0:224 Sequence 0:224 move second child to first child (temp 3-component vector of float) 0:224 'r042' (temp 3-component vector of float) -0:224 ldexp (global 3-component vector of float) +0:224 ldexp (temp 3-component vector of float) 0:224 'inF0' (in 3-component vector of float) 0:224 'inF1' (in 3-component vector of float) 0:225 Sequence 0:225 move second child to first child (temp 3-component vector of float) 0:225 'r039a' (temp 3-component vector of float) -0:225 mix (global 3-component vector of float) +0:225 mix (temp 3-component vector of float) 0:225 'inF0' (in 3-component vector of float) 0:225 'inF1' (in 3-component vector of float) 0:225 'inF2' (in 3-component vector of float) 0:226 Sequence 0:226 move second child to first child (temp 3-component vector of float) 0:226 'r039b' (temp 3-component vector of float) -0:226 mix (global 3-component vector of float) +0:226 mix (temp 3-component vector of float) 0:226 'inF0' (in 3-component vector of float) 0:226 'inF1' (in 3-component vector of float) 0:226 Constant: @@ -980,12 +980,12 @@ gl_FragCoord origin is upper left 0:227 Sequence 0:227 move second child to first child (temp float) 0:227 'r043' (temp float) -0:227 length (global float) +0:227 length (temp float) 0:227 'inF0' (in 3-component vector of float) 0:228 Sequence 0:228 move second child to first child (temp 3-component vector of float) 0:228 'r044' (temp 3-component vector of float) -0:228 log (global 3-component vector of float) +0:228 log (temp 3-component vector of float) 0:228 'inF0' (in 3-component vector of float) 0:229 Sequence 0:229 move second child to first child (temp 3-component vector of float) @@ -998,35 +998,35 @@ gl_FragCoord origin is upper left 0:230 Sequence 0:230 move second child to first child (temp 3-component vector of float) 0:230 'r046' (temp 3-component vector of float) -0:230 log2 (global 3-component vector of float) +0:230 log2 (temp 3-component vector of float) 0:230 'inF0' (in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child (temp 3-component vector of float) 0:231 'r047' (temp 3-component vector of float) -0:231 max (global 3-component vector of float) +0:231 max (temp 3-component vector of float) 0:231 'inF0' (in 3-component vector of float) 0:231 'inF1' (in 3-component vector of float) 0:232 Sequence 0:232 move second child to first child (temp 3-component vector of float) 0:232 'r048' (temp 3-component vector of float) -0:232 min (global 3-component vector of float) +0:232 min (temp 3-component vector of float) 0:232 'inF0' (in 3-component vector of float) 0:232 'inF1' (in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child (temp 3-component vector of float) 0:233 'r049' (temp 3-component vector of float) -0:233 normalize (global 3-component vector of float) +0:233 normalize (temp 3-component vector of float) 0:233 'inF0' (in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child (temp 3-component vector of float) 0:234 'r050' (temp 3-component vector of float) -0:234 pow (global 3-component vector of float) +0:234 pow (temp 3-component vector of float) 0:234 'inF0' (in 3-component vector of float) 0:234 'inF1' (in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child (temp 3-component vector of float) 0:235 'r051' (temp 3-component vector of float) -0:235 radians (global 3-component vector of float) +0:235 radians (temp 3-component vector of float) 0:235 'inF0' (in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child (temp 3-component vector of float) @@ -1038,13 +1038,13 @@ gl_FragCoord origin is upper left 0:237 Sequence 0:237 move second child to first child (temp 3-component vector of float) 0:237 'r053' (temp 3-component vector of float) -0:237 reflect (global 3-component vector of float) +0:237 reflect (temp 3-component vector of float) 0:237 'inF0' (in 3-component vector of float) 0:237 'inF1' (in 3-component vector of float) 0:238 Sequence 0:238 move second child to first child (temp 3-component vector of float) 0:238 'r054' (temp 3-component vector of float) -0:238 refract (global 3-component vector of float) +0:238 refract (temp 3-component vector of float) 0:238 'inF0' (in 3-component vector of float) 0:238 'inF1' (in 3-component vector of float) 0:238 Constant: @@ -1052,7 +1052,7 @@ gl_FragCoord origin is upper left 0:239 Sequence 0:239 move second child to first child (temp 3-component vector of uint) 0:239 'r055' (temp 3-component vector of uint) -0:? bitFieldReverse (global 3-component vector of uint) +0:? bitFieldReverse (temp 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) @@ -1060,12 +1060,12 @@ gl_FragCoord origin is upper left 0:240 Sequence 0:240 move second child to first child (temp 3-component vector of float) 0:240 'r056' (temp 3-component vector of float) -0:240 roundEven (global 3-component vector of float) +0:240 roundEven (temp 3-component vector of float) 0:240 'inF0' (in 3-component vector of float) 0:241 Sequence 0:241 move second child to first child (temp 3-component vector of float) 0:241 'r057' (temp 3-component vector of float) -0:241 inverse sqrt (global 3-component vector of float) +0:241 inverse sqrt (temp 3-component vector of float) 0:241 'inF0' (in 3-component vector of float) 0:242 Sequence 0:242 move second child to first child (temp 3-component vector of float) @@ -1079,12 +1079,12 @@ gl_FragCoord origin is upper left 0:243 Sequence 0:243 move second child to first child (temp 3-component vector of float) 0:243 'r059' (temp 3-component vector of float) -0:243 Sign (global 3-component vector of float) +0:243 Sign (temp 3-component vector of float) 0:243 'inF0' (in 3-component vector of float) 0:244 Sequence 0:244 move second child to first child (temp 3-component vector of float) 0:244 'r060' (temp 3-component vector of float) -0:244 sine (global 3-component vector of float) +0:244 sine (temp 3-component vector of float) 0:244 'inF0' (in 3-component vector of float) 0:245 Sequence 0:245 move second child to first child (temp 3-component vector of float) @@ -1098,40 +1098,40 @@ gl_FragCoord origin is upper left 0:246 Sequence 0:246 move second child to first child (temp 3-component vector of float) 0:246 'r061' (temp 3-component vector of float) -0:246 hyp. sine (global 3-component vector of float) +0:246 hyp. sine (temp 3-component vector of float) 0:246 'inF0' (in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child (temp 3-component vector of float) 0:247 'r062' (temp 3-component vector of float) -0:247 smoothstep (global 3-component vector of float) +0:247 smoothstep (temp 3-component vector of float) 0:247 'inF0' (in 3-component vector of float) 0:247 'inF1' (in 3-component vector of float) 0:247 'inF2' (in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child (temp 3-component vector of float) 0:248 'r063' (temp 3-component vector of float) -0:248 sqrt (global 3-component vector of float) +0:248 sqrt (temp 3-component vector of float) 0:248 'inF0' (in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child (temp 3-component vector of float) 0:249 'r064' (temp 3-component vector of float) -0:249 step (global 3-component vector of float) +0:249 step (temp 3-component vector of float) 0:249 'inF0' (in 3-component vector of float) 0:249 'inF1' (in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child (temp 3-component vector of float) 0:250 'r065' (temp 3-component vector of float) -0:250 tangent (global 3-component vector of float) +0:250 tangent (temp 3-component vector of float) 0:250 'inF0' (in 3-component vector of float) 0:251 Sequence 0:251 move second child to first child (temp 3-component vector of float) 0:251 'r066' (temp 3-component vector of float) -0:251 hyp. tangent (global 3-component vector of float) +0:251 hyp. tangent (temp 3-component vector of float) 0:251 'inF0' (in 3-component vector of float) 0:253 Sequence 0:253 move second child to first child (temp 3-component vector of float) 0:253 'r067' (temp 3-component vector of float) -0:253 trunc (global 3-component vector of float) +0:253 trunc (temp 3-component vector of float) 0:253 'inF0' (in 3-component vector of float) 0:256 Branch: Return with expression 0:? Constant: @@ -1149,63 +1149,63 @@ gl_FragCoord origin is upper left 0:263 Sequence 0:263 move second child to first child (temp bool) 0:263 'r000' (temp bool) -0:263 all (global bool) +0:263 all (temp bool) 0:263 'inF0' (in 4-component vector of float) 0:264 Sequence 0:264 move second child to first child (temp 4-component vector of float) 0:264 'r001' (temp 4-component vector of float) -0:264 Absolute value (global 4-component vector of float) +0:264 Absolute value (temp 4-component vector of float) 0:264 'inF0' (in 4-component vector of float) 0:265 Sequence 0:265 move second child to first child (temp 4-component vector of float) 0:265 'r002' (temp 4-component vector of float) -0:265 arc cosine (global 4-component vector of float) +0:265 arc cosine (temp 4-component vector of float) 0:265 'inF0' (in 4-component vector of float) 0:266 Sequence 0:266 move second child to first child (temp bool) 0:266 'r003' (temp bool) -0:266 any (global bool) +0:266 any (temp bool) 0:266 'inF0' (in 4-component vector of float) 0:267 Sequence 0:267 move second child to first child (temp 4-component vector of float) 0:267 'r004' (temp 4-component vector of float) -0:267 arc sine (global 4-component vector of float) +0:267 arc sine (temp 4-component vector of float) 0:267 'inF0' (in 4-component vector of float) 0:268 Sequence 0:268 move second child to first child (temp 4-component vector of int) 0:268 'r005' (temp 4-component vector of int) -0:268 floatBitsToInt (global 4-component vector of int) +0:268 floatBitsToInt (temp 4-component vector of int) 0:268 'inF0' (in 4-component vector of float) 0:269 Sequence 0:269 move second child to first child (temp 4-component vector of uint) 0:269 'r006' (temp 4-component vector of uint) -0:269 floatBitsToUint (global 4-component vector of uint) +0:269 floatBitsToUint (temp 4-component vector of uint) 0:269 'inF0' (in 4-component vector of float) 0:270 Sequence 0:270 move second child to first child (temp 4-component vector of float) 0:270 'r007' (temp 4-component vector of float) -0:270 intBitsToFloat (global 4-component vector of float) +0:270 intBitsToFloat (temp 4-component vector of float) 0:270 'inU0' (in 4-component vector of uint) 0:272 Sequence 0:272 move second child to first child (temp 4-component vector of float) 0:272 'r009' (temp 4-component vector of float) -0:272 arc tangent (global 4-component vector of float) +0:272 arc tangent (temp 4-component vector of float) 0:272 'inF0' (in 4-component vector of float) 0:273 Sequence 0:273 move second child to first child (temp 4-component vector of float) 0:273 'r010' (temp 4-component vector of float) -0:273 arc tangent (global 4-component vector of float) +0:273 arc tangent (temp 4-component vector of float) 0:273 'inF0' (in 4-component vector of float) 0:273 'inF1' (in 4-component vector of float) 0:274 Sequence 0:274 move second child to first child (temp 4-component vector of float) 0:274 'r011' (temp 4-component vector of float) -0:274 Ceiling (global 4-component vector of float) +0:274 Ceiling (temp 4-component vector of float) 0:274 'inF0' (in 4-component vector of float) 0:275 Sequence 0:275 move second child to first child (temp 4-component vector of float) 0:275 'r012' (temp 4-component vector of float) -0:275 clamp (global 4-component vector of float) +0:275 clamp (temp 4-component vector of float) 0:275 'inF0' (in 4-component vector of float) 0:275 'inF1' (in 4-component vector of float) 0:275 'inF2' (in 4-component vector of float) @@ -1224,17 +1224,17 @@ gl_FragCoord origin is upper left 0:277 Sequence 0:277 move second child to first child (temp 4-component vector of float) 0:277 'r013' (temp 4-component vector of float) -0:277 cosine (global 4-component vector of float) +0:277 cosine (temp 4-component vector of float) 0:277 'inF0' (in 4-component vector of float) 0:278 Sequence 0:278 move second child to first child (temp 4-component vector of float) 0:278 'r014' (temp 4-component vector of float) -0:278 hyp. cosine (global 4-component vector of float) +0:278 hyp. cosine (temp 4-component vector of float) 0:278 'inF0' (in 4-component vector of float) 0:279 Sequence 0:279 move second child to first child (temp 4-component vector of uint) 0:279 'r015' (temp 4-component vector of uint) -0:? bitCount (global 4-component vector of uint) +0:? bitCount (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) @@ -1243,48 +1243,48 @@ gl_FragCoord origin is upper left 0:280 Sequence 0:280 move second child to first child (temp 4-component vector of float) 0:280 'r016' (temp 4-component vector of float) -0:280 dPdx (global 4-component vector of float) +0:280 dPdx (temp 4-component vector of float) 0:280 'inF0' (in 4-component vector of float) 0:281 Sequence 0:281 move second child to first child (temp 4-component vector of float) 0:281 'r017' (temp 4-component vector of float) -0:281 dPdxCoarse (global 4-component vector of float) +0:281 dPdxCoarse (temp 4-component vector of float) 0:281 'inF0' (in 4-component vector of float) 0:282 Sequence 0:282 move second child to first child (temp 4-component vector of float) 0:282 'r018' (temp 4-component vector of float) -0:282 dPdxFine (global 4-component vector of float) +0:282 dPdxFine (temp 4-component vector of float) 0:282 'inF0' (in 4-component vector of float) 0:283 Sequence 0:283 move second child to first child (temp 4-component vector of float) 0:283 'r019' (temp 4-component vector of float) -0:283 dPdy (global 4-component vector of float) +0:283 dPdy (temp 4-component vector of float) 0:283 'inF0' (in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child (temp 4-component vector of float) 0:284 'r020' (temp 4-component vector of float) -0:284 dPdyCoarse (global 4-component vector of float) +0:284 dPdyCoarse (temp 4-component vector of float) 0:284 'inF0' (in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child (temp 4-component vector of float) 0:285 'r021' (temp 4-component vector of float) -0:285 dPdyFine (global 4-component vector of float) +0:285 dPdyFine (temp 4-component vector of float) 0:285 'inF0' (in 4-component vector of float) 0:286 Sequence 0:286 move second child to first child (temp 4-component vector of float) 0:286 'r022' (temp 4-component vector of float) -0:286 degrees (global 4-component vector of float) +0:286 degrees (temp 4-component vector of float) 0:286 'inF0' (in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child (temp float) 0:287 'r023' (temp float) -0:287 distance (global float) +0:287 distance (temp float) 0:287 'inF0' (in 4-component vector of float) 0:287 'inF1' (in 4-component vector of float) 0:288 Sequence 0:288 move second child to first child (temp float) 0:288 'r024' (temp float) -0:288 dot-product (global float) +0:288 dot-product (temp float) 0:288 'inF0' (in 4-component vector of float) 0:288 'inF1' (in 4-component vector of float) 0:289 Sequence @@ -1313,24 +1313,24 @@ gl_FragCoord origin is upper left 0:293 Sequence 0:293 move second child to first child (temp 4-component vector of float) 0:293 'r029' (temp 4-component vector of float) -0:293 exp (global 4-component vector of float) +0:293 exp (temp 4-component vector of float) 0:293 'inF0' (in 4-component vector of float) 0:294 Sequence 0:294 move second child to first child (temp 4-component vector of float) 0:294 'r030' (temp 4-component vector of float) -0:294 exp2 (global 4-component vector of float) +0:294 exp2 (temp 4-component vector of float) 0:294 'inF0' (in 4-component vector of float) 0:295 Sequence 0:295 move second child to first child (temp 4-component vector of float) 0:295 'r031' (temp 4-component vector of float) -0:295 face-forward (global 4-component vector of float) +0:295 face-forward (temp 4-component vector of float) 0:295 'inF0' (in 4-component vector of float) 0:295 'inF1' (in 4-component vector of float) 0:295 'inF2' (in 4-component vector of float) 0:296 Sequence 0:296 move second child to first child (temp 4-component vector of uint) 0:296 'r032' (temp 4-component vector of uint) -0:? findMSB (global 4-component vector of uint) +0:? findMSB (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) @@ -1339,7 +1339,7 @@ gl_FragCoord origin is upper left 0:297 Sequence 0:297 move second child to first child (temp 4-component vector of uint) 0:297 'r033' (temp 4-component vector of uint) -0:? findLSB (global 4-component vector of uint) +0:? findLSB (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) @@ -1348,62 +1348,62 @@ gl_FragCoord origin is upper left 0:298 Sequence 0:298 move second child to first child (temp 4-component vector of float) 0:298 'r034' (temp 4-component vector of float) -0:298 Floor (global 4-component vector of float) +0:298 Floor (temp 4-component vector of float) 0:298 'inF0' (in 4-component vector of float) 0:300 Sequence 0:300 move second child to first child (temp 4-component vector of float) 0:300 'r036' (temp 4-component vector of float) -0:300 mod (global 4-component vector of float) +0:300 mod (temp 4-component vector of float) 0:300 'inF0' (in 4-component vector of float) 0:300 'inF1' (in 4-component vector of float) 0:301 Sequence 0:301 move second child to first child (temp 4-component vector of float) 0:301 'r037' (temp 4-component vector of float) -0:301 Fraction (global 4-component vector of float) +0:301 Fraction (temp 4-component vector of float) 0:301 'inF0' (in 4-component vector of float) 0:302 Sequence 0:302 move second child to first child (temp 4-component vector of float) 0:302 'r038' (temp 4-component vector of float) -0:302 frexp (global 4-component vector of float) +0:302 frexp (temp 4-component vector of float) 0:302 'inF0' (in 4-component vector of float) 0:302 'inF1' (in 4-component vector of float) 0:303 Sequence 0:303 move second child to first child (temp 4-component vector of float) 0:303 'r039' (temp 4-component vector of float) -0:303 fwidth (global 4-component vector of float) +0:303 fwidth (temp 4-component vector of float) 0:303 'inF0' (in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child (temp 4-component vector of bool) 0:304 'r040' (temp 4-component vector of bool) -0:304 isinf (global 4-component vector of bool) +0:304 isinf (temp 4-component vector of bool) 0:304 'inF0' (in 4-component vector of float) 0:305 Sequence 0:305 move second child to first child (temp 4-component vector of bool) 0:305 'r041' (temp 4-component vector of bool) -0:305 isnan (global 4-component vector of bool) +0:305 isnan (temp 4-component vector of bool) 0:305 'inF0' (in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child (temp 4-component vector of float) 0:306 'r042' (temp 4-component vector of float) -0:306 ldexp (global 4-component vector of float) +0:306 ldexp (temp 4-component vector of float) 0:306 'inF0' (in 4-component vector of float) 0:306 'inF1' (in 4-component vector of float) 0:307 Sequence 0:307 move second child to first child (temp 4-component vector of float) 0:307 'r039a' (temp 4-component vector of float) -0:307 mix (global 4-component vector of float) +0:307 mix (temp 4-component vector of float) 0:307 'inF0' (in 4-component vector of float) 0:307 'inF1' (in 4-component vector of float) 0:307 'inF2' (in 4-component vector of float) 0:308 Sequence 0:308 move second child to first child (temp float) 0:308 'r043' (temp float) -0:308 length (global float) +0:308 length (temp float) 0:308 'inF0' (in 4-component vector of float) 0:309 Sequence 0:309 move second child to first child (temp 4-component vector of float) 0:309 'r044' (temp 4-component vector of float) -0:309 log (global 4-component vector of float) +0:309 log (temp 4-component vector of float) 0:309 'inF0' (in 4-component vector of float) 0:310 Sequence 0:310 move second child to first child (temp 4-component vector of float) @@ -1416,35 +1416,35 @@ gl_FragCoord origin is upper left 0:311 Sequence 0:311 move second child to first child (temp 4-component vector of float) 0:311 'r046' (temp 4-component vector of float) -0:311 log2 (global 4-component vector of float) +0:311 log2 (temp 4-component vector of float) 0:311 'inF0' (in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child (temp 4-component vector of float) 0:312 'r047' (temp 4-component vector of float) -0:312 max (global 4-component vector of float) +0:312 max (temp 4-component vector of float) 0:312 'inF0' (in 4-component vector of float) 0:312 'inF1' (in 4-component vector of float) 0:313 Sequence 0:313 move second child to first child (temp 4-component vector of float) 0:313 'r048' (temp 4-component vector of float) -0:313 min (global 4-component vector of float) +0:313 min (temp 4-component vector of float) 0:313 'inF0' (in 4-component vector of float) 0:313 'inF1' (in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child (temp 4-component vector of float) 0:314 'r049' (temp 4-component vector of float) -0:314 normalize (global 4-component vector of float) +0:314 normalize (temp 4-component vector of float) 0:314 'inF0' (in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child (temp 4-component vector of float) 0:315 'r050' (temp 4-component vector of float) -0:315 pow (global 4-component vector of float) +0:315 pow (temp 4-component vector of float) 0:315 'inF0' (in 4-component vector of float) 0:315 'inF1' (in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child (temp 4-component vector of float) 0:316 'r051' (temp 4-component vector of float) -0:316 radians (global 4-component vector of float) +0:316 radians (temp 4-component vector of float) 0:316 'inF0' (in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child (temp 4-component vector of float) @@ -1456,13 +1456,13 @@ gl_FragCoord origin is upper left 0:318 Sequence 0:318 move second child to first child (temp 4-component vector of float) 0:318 'r053' (temp 4-component vector of float) -0:318 reflect (global 4-component vector of float) +0:318 reflect (temp 4-component vector of float) 0:318 'inF0' (in 4-component vector of float) 0:318 'inF1' (in 4-component vector of float) 0:319 Sequence 0:319 move second child to first child (temp 4-component vector of float) 0:319 'r054' (temp 4-component vector of float) -0:319 refract (global 4-component vector of float) +0:319 refract (temp 4-component vector of float) 0:319 'inF0' (in 4-component vector of float) 0:319 'inF1' (in 4-component vector of float) 0:319 Constant: @@ -1470,7 +1470,7 @@ gl_FragCoord origin is upper left 0:320 Sequence 0:320 move second child to first child (temp 4-component vector of uint) 0:320 'r055' (temp 4-component vector of uint) -0:? bitFieldReverse (global 4-component vector of uint) +0:? bitFieldReverse (temp 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) @@ -1479,12 +1479,12 @@ gl_FragCoord origin is upper left 0:321 Sequence 0:321 move second child to first child (temp 4-component vector of float) 0:321 'r056' (temp 4-component vector of float) -0:321 roundEven (global 4-component vector of float) +0:321 roundEven (temp 4-component vector of float) 0:321 'inF0' (in 4-component vector of float) 0:322 Sequence 0:322 move second child to first child (temp 4-component vector of float) 0:322 'r057' (temp 4-component vector of float) -0:322 inverse sqrt (global 4-component vector of float) +0:322 inverse sqrt (temp 4-component vector of float) 0:322 'inF0' (in 4-component vector of float) 0:323 Sequence 0:323 move second child to first child (temp 4-component vector of float) @@ -1498,12 +1498,12 @@ gl_FragCoord origin is upper left 0:324 Sequence 0:324 move second child to first child (temp 4-component vector of float) 0:324 'r059' (temp 4-component vector of float) -0:324 Sign (global 4-component vector of float) +0:324 Sign (temp 4-component vector of float) 0:324 'inF0' (in 4-component vector of float) 0:325 Sequence 0:325 move second child to first child (temp 4-component vector of float) 0:325 'r060' (temp 4-component vector of float) -0:325 sine (global 4-component vector of float) +0:325 sine (temp 4-component vector of float) 0:325 'inF0' (in 4-component vector of float) 0:326 Sequence 0:326 move second child to first child (temp 4-component vector of float) @@ -1517,40 +1517,40 @@ gl_FragCoord origin is upper left 0:327 Sequence 0:327 move second child to first child (temp 4-component vector of float) 0:327 'r061' (temp 4-component vector of float) -0:327 hyp. sine (global 4-component vector of float) +0:327 hyp. sine (temp 4-component vector of float) 0:327 'inF0' (in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child (temp 4-component vector of float) 0:328 'r062' (temp 4-component vector of float) -0:328 smoothstep (global 4-component vector of float) +0:328 smoothstep (temp 4-component vector of float) 0:328 'inF0' (in 4-component vector of float) 0:328 'inF1' (in 4-component vector of float) 0:328 'inF2' (in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child (temp 4-component vector of float) 0:329 'r063' (temp 4-component vector of float) -0:329 sqrt (global 4-component vector of float) +0:329 sqrt (temp 4-component vector of float) 0:329 'inF0' (in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child (temp 4-component vector of float) 0:330 'r064' (temp 4-component vector of float) -0:330 step (global 4-component vector of float) +0:330 step (temp 4-component vector of float) 0:330 'inF0' (in 4-component vector of float) 0:330 'inF1' (in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child (temp 4-component vector of float) 0:331 'r065' (temp 4-component vector of float) -0:331 tangent (global 4-component vector of float) +0:331 tangent (temp 4-component vector of float) 0:331 'inF0' (in 4-component vector of float) 0:332 Sequence 0:332 move second child to first child (temp 4-component vector of float) 0:332 'r066' (temp 4-component vector of float) -0:332 hyp. tangent (global 4-component vector of float) +0:332 hyp. tangent (temp 4-component vector of float) 0:332 'inF0' (in 4-component vector of float) 0:334 Sequence 0:334 move second child to first child (temp 4-component vector of float) 0:334 'r067' (temp 4-component vector of float) -0:334 trunc (global 4-component vector of float) +0:334 trunc (temp 4-component vector of float) 0:334 'inF0' (in 4-component vector of float) 0:337 Branch: Return with expression 0:? Constant: @@ -1567,40 +1567,40 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp bool) 0:403 'r000' (temp bool) -0:403 all (global bool) +0:403 all (temp bool) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r001' (temp 2X2 matrix of float) -0:403 Absolute value (global 2X2 matrix of float) +0:403 Absolute value (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) -0:403 arc cosine (global 2X2 matrix of float) +0:403 arc cosine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp bool) 0:403 'r003' (temp bool) -0:403 any (global bool) +0:403 any (temp bool) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r004' (temp 2X2 matrix of float) -0:403 arc sine (global 2X2 matrix of float) +0:403 arc sine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r005' (temp 2X2 matrix of float) -0:403 arc tangent (global 2X2 matrix of float) +0:403 arc tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r006' (temp 2X2 matrix of float) -0:403 arc tangent (global 2X2 matrix of float) +0:403 arc tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r007' (temp 2X2 matrix of float) -0:403 Ceiling (global 2X2 matrix of float) +0:403 Ceiling (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Test condition and select (temp void) 0:403 Condition @@ -1617,114 +1617,114 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r008' (temp 2X2 matrix of float) -0:403 clamp (global 2X2 matrix of float) +0:403 clamp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 'inF2' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r009' (temp 2X2 matrix of float) -0:403 cosine (global 2X2 matrix of float) +0:403 cosine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r010' (temp 2X2 matrix of float) -0:403 hyp. cosine (global 2X2 matrix of float) +0:403 hyp. cosine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r011' (temp 2X2 matrix of float) -0:403 dPdx (global 2X2 matrix of float) +0:403 dPdx (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r012' (temp 2X2 matrix of float) -0:403 dPdxCoarse (global 2X2 matrix of float) +0:403 dPdxCoarse (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r013' (temp 2X2 matrix of float) -0:403 dPdxFine (global 2X2 matrix of float) +0:403 dPdxFine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r014' (temp 2X2 matrix of float) -0:403 dPdy (global 2X2 matrix of float) +0:403 dPdy (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r015' (temp 2X2 matrix of float) -0:403 dPdyCoarse (global 2X2 matrix of float) +0:403 dPdyCoarse (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r016' (temp 2X2 matrix of float) -0:403 dPdyFine (global 2X2 matrix of float) +0:403 dPdyFine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r017' (temp 2X2 matrix of float) -0:403 degrees (global 2X2 matrix of float) +0:403 degrees (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp float) 0:403 'r018' (temp float) -0:403 determinant (global float) +0:403 determinant (temp float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r019' (temp 2X2 matrix of float) -0:403 exp (global 2X2 matrix of float) +0:403 exp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'R020' (temp 2X2 matrix of float) -0:403 exp2 (global 2X2 matrix of float) +0:403 exp2 (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r021' (temp 2X2 matrix of float) -0:403 Floor (global 2X2 matrix of float) +0:403 Floor (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r022' (temp 2X2 matrix of float) -0:403 mod (global 2X2 matrix of float) +0:403 mod (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r023' (temp 2X2 matrix of float) -0:403 Fraction (global 2X2 matrix of float) +0:403 Fraction (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r024' (temp 2X2 matrix of float) -0:403 frexp (global 2X2 matrix of float) +0:403 frexp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r025' (temp 2X2 matrix of float) -0:403 fwidth (global 2X2 matrix of float) +0:403 fwidth (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r026' (temp 2X2 matrix of float) -0:403 ldexp (global 2X2 matrix of float) +0:403 ldexp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r026a' (temp 2X2 matrix of float) -0:403 mix (global 2X2 matrix of float) +0:403 mix (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 'inF2' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r027' (temp 2X2 matrix of float) -0:403 log (global 2X2 matrix of float) +0:403 log (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) @@ -1737,40 +1737,40 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r029' (temp 2X2 matrix of float) -0:403 log2 (global 2X2 matrix of float) +0:403 log2 (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r030' (temp 2X2 matrix of float) -0:403 max (global 2X2 matrix of float) +0:403 max (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r031' (temp 2X2 matrix of float) -0:403 min (global 2X2 matrix of float) +0:403 min (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r032' (temp 2X2 matrix of float) -0:403 pow (global 2X2 matrix of float) +0:403 pow (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r033' (temp 2X2 matrix of float) -0:403 radians (global 2X2 matrix of float) +0:403 radians (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r034' (temp 2X2 matrix of float) -0:403 roundEven (global 2X2 matrix of float) +0:403 roundEven (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r035' (temp 2X2 matrix of float) -0:403 inverse sqrt (global 2X2 matrix of float) +0:403 inverse sqrt (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) @@ -1784,12 +1784,12 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r037' (temp 2X2 matrix of float) -0:403 Sign (global 2X2 matrix of float) +0:403 Sign (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r038' (temp 2X2 matrix of float) -0:403 sine (global 2X2 matrix of float) +0:403 sine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) @@ -1803,42 +1803,42 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r039' (temp 2X2 matrix of float) -0:403 hyp. sine (global 2X2 matrix of float) +0:403 hyp. sine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r049' (temp 2X2 matrix of float) -0:403 smoothstep (global 2X2 matrix of float) +0:403 smoothstep (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 'inF2' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r041' (temp 2X2 matrix of float) -0:403 sqrt (global 2X2 matrix of float) +0:403 sqrt (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r042' (temp 2X2 matrix of float) -0:403 step (global 2X2 matrix of float) +0:403 step (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r043' (temp 2X2 matrix of float) -0:403 tangent (global 2X2 matrix of float) +0:403 tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r044' (temp 2X2 matrix of float) -0:403 hyp. tangent (global 2X2 matrix of float) +0:403 hyp. tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) -0:403 transpose (global 2X2 matrix of float) +0:403 transpose (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r046' (temp 2X2 matrix of float) -0:403 trunc (global 2X2 matrix of float) +0:403 trunc (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:406 Branch: Return with expression 0:? Constant: @@ -1855,40 +1855,40 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp bool) 0:412 'r000' (temp bool) -0:412 all (global bool) +0:412 all (temp bool) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r001' (temp 3X3 matrix of float) -0:412 Absolute value (global 3X3 matrix of float) +0:412 Absolute value (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) -0:412 arc cosine (global 3X3 matrix of float) +0:412 arc cosine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp bool) 0:412 'r003' (temp bool) -0:412 any (global bool) +0:412 any (temp bool) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r004' (temp 3X3 matrix of float) -0:412 arc sine (global 3X3 matrix of float) +0:412 arc sine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r005' (temp 3X3 matrix of float) -0:412 arc tangent (global 3X3 matrix of float) +0:412 arc tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r006' (temp 3X3 matrix of float) -0:412 arc tangent (global 3X3 matrix of float) +0:412 arc tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r007' (temp 3X3 matrix of float) -0:412 Ceiling (global 3X3 matrix of float) +0:412 Ceiling (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Test condition and select (temp void) 0:412 Condition @@ -1910,114 +1910,114 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r008' (temp 3X3 matrix of float) -0:412 clamp (global 3X3 matrix of float) +0:412 clamp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 'inF2' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r009' (temp 3X3 matrix of float) -0:412 cosine (global 3X3 matrix of float) +0:412 cosine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r010' (temp 3X3 matrix of float) -0:412 hyp. cosine (global 3X3 matrix of float) +0:412 hyp. cosine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r011' (temp 3X3 matrix of float) -0:412 dPdx (global 3X3 matrix of float) +0:412 dPdx (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r012' (temp 3X3 matrix of float) -0:412 dPdxCoarse (global 3X3 matrix of float) +0:412 dPdxCoarse (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r013' (temp 3X3 matrix of float) -0:412 dPdxFine (global 3X3 matrix of float) +0:412 dPdxFine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r014' (temp 3X3 matrix of float) -0:412 dPdy (global 3X3 matrix of float) +0:412 dPdy (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r015' (temp 3X3 matrix of float) -0:412 dPdyCoarse (global 3X3 matrix of float) +0:412 dPdyCoarse (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r016' (temp 3X3 matrix of float) -0:412 dPdyFine (global 3X3 matrix of float) +0:412 dPdyFine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r017' (temp 3X3 matrix of float) -0:412 degrees (global 3X3 matrix of float) +0:412 degrees (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp float) 0:412 'r018' (temp float) -0:412 determinant (global float) +0:412 determinant (temp float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r019' (temp 3X3 matrix of float) -0:412 exp (global 3X3 matrix of float) +0:412 exp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'R020' (temp 3X3 matrix of float) -0:412 exp2 (global 3X3 matrix of float) +0:412 exp2 (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r021' (temp 3X3 matrix of float) -0:412 Floor (global 3X3 matrix of float) +0:412 Floor (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r022' (temp 3X3 matrix of float) -0:412 mod (global 3X3 matrix of float) +0:412 mod (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r023' (temp 3X3 matrix of float) -0:412 Fraction (global 3X3 matrix of float) +0:412 Fraction (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r024' (temp 3X3 matrix of float) -0:412 frexp (global 3X3 matrix of float) +0:412 frexp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r025' (temp 3X3 matrix of float) -0:412 fwidth (global 3X3 matrix of float) +0:412 fwidth (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r026' (temp 3X3 matrix of float) -0:412 ldexp (global 3X3 matrix of float) +0:412 ldexp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r026a' (temp 3X3 matrix of float) -0:412 mix (global 3X3 matrix of float) +0:412 mix (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 'inF2' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r027' (temp 3X3 matrix of float) -0:412 log (global 3X3 matrix of float) +0:412 log (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) @@ -2030,40 +2030,40 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r029' (temp 3X3 matrix of float) -0:412 log2 (global 3X3 matrix of float) +0:412 log2 (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r030' (temp 3X3 matrix of float) -0:412 max (global 3X3 matrix of float) +0:412 max (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r031' (temp 3X3 matrix of float) -0:412 min (global 3X3 matrix of float) +0:412 min (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r032' (temp 3X3 matrix of float) -0:412 pow (global 3X3 matrix of float) +0:412 pow (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r033' (temp 3X3 matrix of float) -0:412 radians (global 3X3 matrix of float) +0:412 radians (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r034' (temp 3X3 matrix of float) -0:412 roundEven (global 3X3 matrix of float) +0:412 roundEven (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r035' (temp 3X3 matrix of float) -0:412 inverse sqrt (global 3X3 matrix of float) +0:412 inverse sqrt (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) @@ -2077,12 +2077,12 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r037' (temp 3X3 matrix of float) -0:412 Sign (global 3X3 matrix of float) +0:412 Sign (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r038' (temp 3X3 matrix of float) -0:412 sine (global 3X3 matrix of float) +0:412 sine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) @@ -2096,42 +2096,42 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r039' (temp 3X3 matrix of float) -0:412 hyp. sine (global 3X3 matrix of float) +0:412 hyp. sine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r049' (temp 3X3 matrix of float) -0:412 smoothstep (global 3X3 matrix of float) +0:412 smoothstep (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 'inF2' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r041' (temp 3X3 matrix of float) -0:412 sqrt (global 3X3 matrix of float) +0:412 sqrt (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r042' (temp 3X3 matrix of float) -0:412 step (global 3X3 matrix of float) +0:412 step (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r043' (temp 3X3 matrix of float) -0:412 tangent (global 3X3 matrix of float) +0:412 tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r044' (temp 3X3 matrix of float) -0:412 hyp. tangent (global 3X3 matrix of float) +0:412 hyp. tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) -0:412 transpose (global 3X3 matrix of float) +0:412 transpose (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r046' (temp 3X3 matrix of float) -0:412 trunc (global 3X3 matrix of float) +0:412 trunc (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:415 Branch: Return with expression 0:? Constant: @@ -2153,40 +2153,40 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp bool) 0:421 'r000' (temp bool) -0:421 all (global bool) +0:421 all (temp bool) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r001' (temp 4X4 matrix of float) -0:421 Absolute value (global 4X4 matrix of float) +0:421 Absolute value (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) -0:421 arc cosine (global 4X4 matrix of float) +0:421 arc cosine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp bool) 0:421 'r003' (temp bool) -0:421 any (global bool) +0:421 any (temp bool) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r004' (temp 4X4 matrix of float) -0:421 arc sine (global 4X4 matrix of float) +0:421 arc sine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r005' (temp 4X4 matrix of float) -0:421 arc tangent (global 4X4 matrix of float) +0:421 arc tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r006' (temp 4X4 matrix of float) -0:421 arc tangent (global 4X4 matrix of float) +0:421 arc tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r007' (temp 4X4 matrix of float) -0:421 Ceiling (global 4X4 matrix of float) +0:421 Ceiling (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Test condition and select (temp void) 0:421 Condition @@ -2215,114 +2215,114 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r008' (temp 4X4 matrix of float) -0:421 clamp (global 4X4 matrix of float) +0:421 clamp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 'inF2' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r009' (temp 4X4 matrix of float) -0:421 cosine (global 4X4 matrix of float) +0:421 cosine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r010' (temp 4X4 matrix of float) -0:421 hyp. cosine (global 4X4 matrix of float) +0:421 hyp. cosine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r011' (temp 4X4 matrix of float) -0:421 dPdx (global 4X4 matrix of float) +0:421 dPdx (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r012' (temp 4X4 matrix of float) -0:421 dPdxCoarse (global 4X4 matrix of float) +0:421 dPdxCoarse (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r013' (temp 4X4 matrix of float) -0:421 dPdxFine (global 4X4 matrix of float) +0:421 dPdxFine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r014' (temp 4X4 matrix of float) -0:421 dPdy (global 4X4 matrix of float) +0:421 dPdy (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r015' (temp 4X4 matrix of float) -0:421 dPdyCoarse (global 4X4 matrix of float) +0:421 dPdyCoarse (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r016' (temp 4X4 matrix of float) -0:421 dPdyFine (global 4X4 matrix of float) +0:421 dPdyFine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r017' (temp 4X4 matrix of float) -0:421 degrees (global 4X4 matrix of float) +0:421 degrees (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp float) 0:421 'r018' (temp float) -0:421 determinant (global float) +0:421 determinant (temp float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r019' (temp 4X4 matrix of float) -0:421 exp (global 4X4 matrix of float) +0:421 exp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'R020' (temp 4X4 matrix of float) -0:421 exp2 (global 4X4 matrix of float) +0:421 exp2 (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r021' (temp 4X4 matrix of float) -0:421 Floor (global 4X4 matrix of float) +0:421 Floor (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r022' (temp 4X4 matrix of float) -0:421 mod (global 4X4 matrix of float) +0:421 mod (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r023' (temp 4X4 matrix of float) -0:421 Fraction (global 4X4 matrix of float) +0:421 Fraction (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r024' (temp 4X4 matrix of float) -0:421 frexp (global 4X4 matrix of float) +0:421 frexp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r025' (temp 4X4 matrix of float) -0:421 fwidth (global 4X4 matrix of float) +0:421 fwidth (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r026' (temp 4X4 matrix of float) -0:421 ldexp (global 4X4 matrix of float) +0:421 ldexp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r026a' (temp 4X4 matrix of float) -0:421 mix (global 4X4 matrix of float) +0:421 mix (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 'inF2' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r027' (temp 4X4 matrix of float) -0:421 log (global 4X4 matrix of float) +0:421 log (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) @@ -2335,40 +2335,40 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r029' (temp 4X4 matrix of float) -0:421 log2 (global 4X4 matrix of float) +0:421 log2 (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r030' (temp 4X4 matrix of float) -0:421 max (global 4X4 matrix of float) +0:421 max (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r031' (temp 4X4 matrix of float) -0:421 min (global 4X4 matrix of float) +0:421 min (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r032' (temp 4X4 matrix of float) -0:421 pow (global 4X4 matrix of float) +0:421 pow (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r033' (temp 4X4 matrix of float) -0:421 radians (global 4X4 matrix of float) +0:421 radians (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r034' (temp 4X4 matrix of float) -0:421 roundEven (global 4X4 matrix of float) +0:421 roundEven (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r035' (temp 4X4 matrix of float) -0:421 inverse sqrt (global 4X4 matrix of float) +0:421 inverse sqrt (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) @@ -2382,12 +2382,12 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r037' (temp 4X4 matrix of float) -0:421 Sign (global 4X4 matrix of float) +0:421 Sign (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r038' (temp 4X4 matrix of float) -0:421 sine (global 4X4 matrix of float) +0:421 sine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) @@ -2401,42 +2401,42 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r039' (temp 4X4 matrix of float) -0:421 hyp. sine (global 4X4 matrix of float) +0:421 hyp. sine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r049' (temp 4X4 matrix of float) -0:421 smoothstep (global 4X4 matrix of float) +0:421 smoothstep (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 'inF2' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r041' (temp 4X4 matrix of float) -0:421 sqrt (global 4X4 matrix of float) +0:421 sqrt (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r042' (temp 4X4 matrix of float) -0:421 step (global 4X4 matrix of float) +0:421 step (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r043' (temp 4X4 matrix of float) -0:421 tangent (global 4X4 matrix of float) +0:421 tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r044' (temp 4X4 matrix of float) -0:421 hyp. tangent (global 4X4 matrix of float) +0:421 hyp. tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) -0:421 transpose (global 4X4 matrix of float) +0:421 transpose (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r046' (temp 4X4 matrix of float) -0:421 trunc (global 4X4 matrix of float) +0:421 trunc (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:424 Branch: Return with expression 0:? Constant: @@ -2486,7 +2486,7 @@ gl_FragCoord origin is upper left 0:443 Sequence 0:443 move second child to first child (temp float) 0:443 'r3' (temp float) -0:443 dot-product (global float) +0:443 dot-product (temp float) 0:443 'inFV0' (in 2-component vector of float) 0:443 'inFV1' (in 2-component vector of float) 0:443 Sequence @@ -2549,7 +2549,7 @@ gl_FragCoord origin is upper left 0:450 Sequence 0:450 move second child to first child (temp float) 0:450 'r3' (temp float) -0:450 dot-product (global float) +0:450 dot-product (temp float) 0:450 'inFV0' (in 3-component vector of float) 0:450 'inFV1' (in 3-component vector of float) 0:450 Sequence @@ -2612,7 +2612,7 @@ gl_FragCoord origin is upper left 0:457 Sequence 0:457 move second child to first child (temp float) 0:457 'r3' (temp float) -0:457 dot-product (global float) +0:457 dot-product (temp float) 0:457 'inFV0' (in 4-component vector of float) 0:457 'inFV1' (in 4-component vector of float) 0:457 Sequence @@ -2690,13 +2690,13 @@ gl_FragCoord origin is upper left 0:472 Sequence 0:472 move second child to first child (temp float) 0:472 'r05' (temp float) -0:472 dot-product (global float) +0:472 dot-product (temp float) 0:472 'inFV2' (in 2-component vector of float) 0:472 'inFV2' (in 2-component vector of float) 0:473 Sequence 0:473 move second child to first child (temp float) 0:473 'r06' (temp float) -0:473 dot-product (global float) +0:473 dot-product (temp float) 0:473 'inFV3' (in 3-component vector of float) 0:473 'inFV3' (in 3-component vector of float) 0:474 Sequence @@ -2814,63 +2814,63 @@ gl_FragCoord origin is upper left 0:20 Sequence 0:20 move second child to first child (temp bool) 0:20 'r000' (temp bool) -0:20 all (global bool) +0:20 all (temp bool) 0:20 'inF0' (in float) 0:21 Sequence 0:21 move second child to first child (temp float) 0:21 'r001' (temp float) -0:21 Absolute value (global float) +0:21 Absolute value (temp float) 0:21 'inF0' (in float) 0:22 Sequence 0:22 move second child to first child (temp float) 0:22 'r002' (temp float) -0:22 arc cosine (global float) +0:22 arc cosine (temp float) 0:22 'inF0' (in float) 0:23 Sequence 0:23 move second child to first child (temp bool) 0:23 'r003' (temp bool) -0:23 any (global bool) +0:23 any (temp bool) 0:23 'inF0' (in float) 0:24 Sequence 0:24 move second child to first child (temp float) 0:24 'r004' (temp float) -0:24 arc sine (global float) +0:24 arc sine (temp float) 0:24 'inF0' (in float) 0:25 Sequence 0:25 move second child to first child (temp int) 0:25 'r005' (temp int) -0:25 floatBitsToInt (global int) +0:25 floatBitsToInt (temp int) 0:25 'inF0' (in float) 0:26 Sequence 0:26 move second child to first child (temp uint) 0:26 'r006' (temp uint) -0:26 floatBitsToUint (global uint) +0:26 floatBitsToUint (temp uint) 0:26 'inF0' (in float) 0:27 Sequence 0:27 move second child to first child (temp float) 0:27 'r007' (temp float) -0:27 intBitsToFloat (global float) +0:27 intBitsToFloat (temp float) 0:27 'inU0' (in uint) 0:29 Sequence 0:29 move second child to first child (temp float) 0:29 'r009' (temp float) -0:29 arc tangent (global float) +0:29 arc tangent (temp float) 0:29 'inF0' (in float) 0:30 Sequence 0:30 move second child to first child (temp float) 0:30 'r010' (temp float) -0:30 arc tangent (global float) +0:30 arc tangent (temp float) 0:30 'inF0' (in float) 0:30 'inF1' (in float) 0:31 Sequence 0:31 move second child to first child (temp float) 0:31 'r011' (temp float) -0:31 Ceiling (global float) +0:31 Ceiling (temp float) 0:31 'inF0' (in float) 0:32 Sequence 0:32 move second child to first child (temp float) 0:32 'r012' (temp float) -0:32 clamp (global float) +0:32 clamp (temp float) 0:32 'inF0' (in float) 0:32 'inF1' (in float) 0:32 'inF2' (in float) @@ -2885,132 +2885,132 @@ gl_FragCoord origin is upper left 0:34 Sequence 0:34 move second child to first child (temp float) 0:34 'r014' (temp float) -0:34 cosine (global float) +0:34 cosine (temp float) 0:34 'inF0' (in float) 0:35 Sequence 0:35 move second child to first child (temp float) 0:35 'r015' (temp float) -0:35 hyp. cosine (global float) +0:35 hyp. cosine (temp float) 0:35 'inF0' (in float) 0:36 Sequence 0:36 move second child to first child (temp uint) 0:36 'r016' (temp uint) -0:36 bitCount (global uint) +0:36 bitCount (temp uint) 0:36 Constant: 0:36 7 (const uint) 0:37 Sequence 0:37 move second child to first child (temp float) 0:37 'r017' (temp float) -0:37 dPdx (global float) +0:37 dPdx (temp float) 0:37 'inF0' (in float) 0:38 Sequence 0:38 move second child to first child (temp float) 0:38 'r018' (temp float) -0:38 dPdxCoarse (global float) +0:38 dPdxCoarse (temp float) 0:38 'inF0' (in float) 0:39 Sequence 0:39 move second child to first child (temp float) 0:39 'r019' (temp float) -0:39 dPdxFine (global float) +0:39 dPdxFine (temp float) 0:39 'inF0' (in float) 0:40 Sequence 0:40 move second child to first child (temp float) 0:40 'r020' (temp float) -0:40 dPdy (global float) +0:40 dPdy (temp float) 0:40 'inF0' (in float) 0:41 Sequence 0:41 move second child to first child (temp float) 0:41 'r021' (temp float) -0:41 dPdyCoarse (global float) +0:41 dPdyCoarse (temp float) 0:41 'inF0' (in float) 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r022' (temp float) -0:42 dPdyFine (global float) +0:42 dPdyFine (temp float) 0:42 'inF0' (in float) 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r023' (temp float) -0:43 degrees (global float) +0:43 degrees (temp float) 0:43 'inF0' (in float) 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r027' (temp float) -0:47 exp (global float) +0:47 exp (temp float) 0:47 'inF0' (in float) 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r028' (temp float) -0:48 exp2 (global float) +0:48 exp2 (temp float) 0:48 'inF0' (in float) 0:49 Sequence 0:49 move second child to first child (temp uint) 0:49 'r029' (temp uint) 0:49 Convert int to uint (temp uint) -0:49 findMSB (global int) +0:49 findMSB (temp int) 0:49 Constant: 0:49 7 (const int) 0:50 Sequence 0:50 move second child to first child (temp uint) 0:50 'r030' (temp uint) 0:50 Convert int to uint (temp uint) -0:50 findLSB (global int) +0:50 findLSB (temp int) 0:50 Constant: 0:50 7 (const int) 0:51 Sequence 0:51 move second child to first child (temp float) 0:51 'r031' (temp float) -0:51 Floor (global float) +0:51 Floor (temp float) 0:51 'inF0' (in float) 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r033' (temp float) -0:53 mod (global float) +0:53 mod (temp float) 0:53 'inF0' (in float) 0:53 'inF1' (in float) 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r034' (temp float) -0:54 Fraction (global float) +0:54 Fraction (temp float) 0:54 'inF0' (in float) 0:55 Sequence 0:55 move second child to first child (temp float) 0:55 'r035' (temp float) -0:55 frexp (global float) +0:55 frexp (temp float) 0:55 'inF0' (in float) 0:55 'inF1' (in float) 0:56 Sequence 0:56 move second child to first child (temp float) 0:56 'r036' (temp float) -0:56 fwidth (global float) +0:56 fwidth (temp float) 0:56 'inF0' (in float) 0:57 Sequence 0:57 move second child to first child (temp bool) 0:57 'r037' (temp bool) -0:57 isinf (global bool) +0:57 isinf (temp bool) 0:57 'inF0' (in float) 0:58 Sequence 0:58 move second child to first child (temp bool) 0:58 'r038' (temp bool) -0:58 isnan (global bool) +0:58 isnan (temp bool) 0:58 'inF0' (in float) 0:59 Sequence 0:59 move second child to first child (temp float) 0:59 'r039' (temp float) -0:59 ldexp (global float) +0:59 ldexp (temp float) 0:59 'inF0' (in float) 0:59 'inF1' (in float) 0:60 Sequence 0:60 move second child to first child (temp float) 0:60 'r039a' (temp float) -0:60 mix (global float) +0:60 mix (temp float) 0:60 'inF0' (in float) 0:60 'inF1' (in float) 0:60 'inF2' (in float) 0:61 Sequence 0:61 move second child to first child (temp float) 0:61 'r040' (temp float) -0:61 log (global float) +0:61 log (temp float) 0:61 'inF0' (in float) 0:62 Sequence 0:62 move second child to first child (temp float) @@ -3023,30 +3023,30 @@ gl_FragCoord origin is upper left 0:63 Sequence 0:63 move second child to first child (temp float) 0:63 'r042' (temp float) -0:63 log2 (global float) +0:63 log2 (temp float) 0:63 'inF0' (in float) 0:64 Sequence 0:64 move second child to first child (temp float) 0:64 'r043' (temp float) -0:64 max (global float) +0:64 max (temp float) 0:64 'inF0' (in float) 0:64 'inF1' (in float) 0:65 Sequence 0:65 move second child to first child (temp float) 0:65 'r044' (temp float) -0:65 min (global float) +0:65 min (temp float) 0:65 'inF0' (in float) 0:65 'inF1' (in float) 0:66 Sequence 0:66 move second child to first child (temp float) 0:66 'r045' (temp float) -0:66 pow (global float) +0:66 pow (temp float) 0:66 'inF0' (in float) 0:66 'inF1' (in float) 0:67 Sequence 0:67 move second child to first child (temp float) 0:67 'r046' (temp float) -0:67 radians (global float) +0:67 radians (temp float) 0:67 'inF0' (in float) 0:68 Sequence 0:68 move second child to first child (temp float) @@ -3058,18 +3058,18 @@ gl_FragCoord origin is upper left 0:69 Sequence 0:69 move second child to first child (temp uint) 0:69 'r048' (temp uint) -0:69 bitFieldReverse (global uint) +0:69 bitFieldReverse (temp uint) 0:69 Constant: 0:69 2 (const uint) 0:70 Sequence 0:70 move second child to first child (temp float) 0:70 'r049' (temp float) -0:70 roundEven (global float) +0:70 roundEven (temp float) 0:70 'inF0' (in float) 0:71 Sequence 0:71 move second child to first child (temp float) 0:71 'r050' (temp float) -0:71 inverse sqrt (global float) +0:71 inverse sqrt (temp float) 0:71 'inF0' (in float) 0:72 Sequence 0:72 move second child to first child (temp float) @@ -3083,12 +3083,12 @@ gl_FragCoord origin is upper left 0:73 Sequence 0:73 move second child to first child (temp float) 0:73 'r052' (temp float) -0:73 Sign (global float) +0:73 Sign (temp float) 0:73 'inF0' (in float) 0:74 Sequence 0:74 move second child to first child (temp float) 0:74 'r053' (temp float) -0:74 sine (global float) +0:74 sine (temp float) 0:74 'inF0' (in float) 0:75 Sequence 0:75 move second child to first child (temp float) @@ -3102,40 +3102,40 @@ gl_FragCoord origin is upper left 0:76 Sequence 0:76 move second child to first child (temp float) 0:76 'r055' (temp float) -0:76 hyp. sine (global float) +0:76 hyp. sine (temp float) 0:76 'inF0' (in float) 0:77 Sequence 0:77 move second child to first child (temp float) 0:77 'r056' (temp float) -0:77 smoothstep (global float) +0:77 smoothstep (temp float) 0:77 'inF0' (in float) 0:77 'inF1' (in float) 0:77 'inF2' (in float) 0:78 Sequence 0:78 move second child to first child (temp float) 0:78 'r057' (temp float) -0:78 sqrt (global float) +0:78 sqrt (temp float) 0:78 'inF0' (in float) 0:79 Sequence 0:79 move second child to first child (temp float) 0:79 'r058' (temp float) -0:79 step (global float) +0:79 step (temp float) 0:79 'inF0' (in float) 0:79 'inF1' (in float) 0:80 Sequence 0:80 move second child to first child (temp float) 0:80 'r059' (temp float) -0:80 tangent (global float) +0:80 tangent (temp float) 0:80 'inF0' (in float) 0:81 Sequence 0:81 move second child to first child (temp float) 0:81 'r060' (temp float) -0:81 hyp. tangent (global float) +0:81 hyp. tangent (temp float) 0:81 'inF0' (in float) 0:83 Sequence 0:83 move second child to first child (temp float) 0:83 'r061' (temp float) -0:83 trunc (global float) +0:83 trunc (temp float) 0:83 'inF0' (in float) 0:85 Branch: Return with expression 0:85 Constant: @@ -3160,63 +3160,63 @@ gl_FragCoord origin is upper left 0:98 Sequence 0:98 move second child to first child (temp bool) 0:98 'r000' (temp bool) -0:98 all (global bool) +0:98 all (temp bool) 0:98 'inF0' (in 2-component vector of float) 0:99 Sequence 0:99 move second child to first child (temp 2-component vector of float) 0:99 'r001' (temp 2-component vector of float) -0:99 Absolute value (global 2-component vector of float) +0:99 Absolute value (temp 2-component vector of float) 0:99 'inF0' (in 2-component vector of float) 0:100 Sequence 0:100 move second child to first child (temp 2-component vector of float) 0:100 'r002' (temp 2-component vector of float) -0:100 arc cosine (global 2-component vector of float) +0:100 arc cosine (temp 2-component vector of float) 0:100 'inF0' (in 2-component vector of float) 0:101 Sequence 0:101 move second child to first child (temp bool) 0:101 'r003' (temp bool) -0:101 any (global bool) +0:101 any (temp bool) 0:101 'inF0' (in 2-component vector of float) 0:102 Sequence 0:102 move second child to first child (temp 2-component vector of float) 0:102 'r004' (temp 2-component vector of float) -0:102 arc sine (global 2-component vector of float) +0:102 arc sine (temp 2-component vector of float) 0:102 'inF0' (in 2-component vector of float) 0:103 Sequence 0:103 move second child to first child (temp 2-component vector of int) 0:103 'r005' (temp 2-component vector of int) -0:103 floatBitsToInt (global 2-component vector of int) +0:103 floatBitsToInt (temp 2-component vector of int) 0:103 'inF0' (in 2-component vector of float) 0:104 Sequence 0:104 move second child to first child (temp 2-component vector of uint) 0:104 'r006' (temp 2-component vector of uint) -0:104 floatBitsToUint (global 2-component vector of uint) +0:104 floatBitsToUint (temp 2-component vector of uint) 0:104 'inF0' (in 2-component vector of float) 0:105 Sequence 0:105 move second child to first child (temp 2-component vector of float) 0:105 'r007' (temp 2-component vector of float) -0:105 intBitsToFloat (global 2-component vector of float) +0:105 intBitsToFloat (temp 2-component vector of float) 0:105 'inU0' (in 2-component vector of uint) 0:107 Sequence 0:107 move second child to first child (temp 2-component vector of float) 0:107 'r009' (temp 2-component vector of float) -0:107 arc tangent (global 2-component vector of float) +0:107 arc tangent (temp 2-component vector of float) 0:107 'inF0' (in 2-component vector of float) 0:108 Sequence 0:108 move second child to first child (temp 2-component vector of float) 0:108 'r010' (temp 2-component vector of float) -0:108 arc tangent (global 2-component vector of float) +0:108 arc tangent (temp 2-component vector of float) 0:108 'inF0' (in 2-component vector of float) 0:108 'inF1' (in 2-component vector of float) 0:109 Sequence 0:109 move second child to first child (temp 2-component vector of float) 0:109 'r011' (temp 2-component vector of float) -0:109 Ceiling (global 2-component vector of float) +0:109 Ceiling (temp 2-component vector of float) 0:109 'inF0' (in 2-component vector of float) 0:110 Sequence 0:110 move second child to first child (temp 2-component vector of float) 0:110 'r012' (temp 2-component vector of float) -0:110 clamp (global 2-component vector of float) +0:110 clamp (temp 2-component vector of float) 0:110 'inF0' (in 2-component vector of float) 0:110 'inF1' (in 2-component vector of float) 0:110 'inF2' (in 2-component vector of float) @@ -3233,157 +3233,157 @@ gl_FragCoord origin is upper left 0:112 Sequence 0:112 move second child to first child (temp 2-component vector of float) 0:112 'r013' (temp 2-component vector of float) -0:112 cosine (global 2-component vector of float) +0:112 cosine (temp 2-component vector of float) 0:112 'inF0' (in 2-component vector of float) 0:113 Sequence 0:113 move second child to first child (temp 2-component vector of float) 0:113 'r015' (temp 2-component vector of float) -0:113 hyp. cosine (global 2-component vector of float) +0:113 hyp. cosine (temp 2-component vector of float) 0:113 'inF0' (in 2-component vector of float) 0:114 Sequence 0:114 move second child to first child (temp 2-component vector of uint) 0:114 'r016' (temp 2-component vector of uint) -0:? bitCount (global 2-component vector of uint) +0:? bitCount (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:115 Sequence 0:115 move second child to first child (temp 2-component vector of float) 0:115 'r017' (temp 2-component vector of float) -0:115 dPdx (global 2-component vector of float) +0:115 dPdx (temp 2-component vector of float) 0:115 'inF0' (in 2-component vector of float) 0:116 Sequence 0:116 move second child to first child (temp 2-component vector of float) 0:116 'r018' (temp 2-component vector of float) -0:116 dPdxCoarse (global 2-component vector of float) +0:116 dPdxCoarse (temp 2-component vector of float) 0:116 'inF0' (in 2-component vector of float) 0:117 Sequence 0:117 move second child to first child (temp 2-component vector of float) 0:117 'r019' (temp 2-component vector of float) -0:117 dPdxFine (global 2-component vector of float) +0:117 dPdxFine (temp 2-component vector of float) 0:117 'inF0' (in 2-component vector of float) 0:118 Sequence 0:118 move second child to first child (temp 2-component vector of float) 0:118 'r020' (temp 2-component vector of float) -0:118 dPdy (global 2-component vector of float) +0:118 dPdy (temp 2-component vector of float) 0:118 'inF0' (in 2-component vector of float) 0:119 Sequence 0:119 move second child to first child (temp 2-component vector of float) 0:119 'r021' (temp 2-component vector of float) -0:119 dPdyCoarse (global 2-component vector of float) +0:119 dPdyCoarse (temp 2-component vector of float) 0:119 'inF0' (in 2-component vector of float) 0:120 Sequence 0:120 move second child to first child (temp 2-component vector of float) 0:120 'r022' (temp 2-component vector of float) -0:120 dPdyFine (global 2-component vector of float) +0:120 dPdyFine (temp 2-component vector of float) 0:120 'inF0' (in 2-component vector of float) 0:121 Sequence 0:121 move second child to first child (temp 2-component vector of float) 0:121 'r023' (temp 2-component vector of float) -0:121 degrees (global 2-component vector of float) +0:121 degrees (temp 2-component vector of float) 0:121 'inF0' (in 2-component vector of float) 0:125 Sequence 0:125 move second child to first child (temp float) 0:125 'r026' (temp float) -0:125 distance (global float) +0:125 distance (temp float) 0:125 'inF0' (in 2-component vector of float) 0:125 'inF1' (in 2-component vector of float) 0:126 Sequence 0:126 move second child to first child (temp float) 0:126 'r027' (temp float) -0:126 dot-product (global float) +0:126 dot-product (temp float) 0:126 'inF0' (in 2-component vector of float) 0:126 'inF1' (in 2-component vector of float) 0:130 Sequence 0:130 move second child to first child (temp 2-component vector of float) 0:130 'r028' (temp 2-component vector of float) -0:130 exp (global 2-component vector of float) +0:130 exp (temp 2-component vector of float) 0:130 'inF0' (in 2-component vector of float) 0:131 Sequence 0:131 move second child to first child (temp 2-component vector of float) 0:131 'r029' (temp 2-component vector of float) -0:131 exp2 (global 2-component vector of float) +0:131 exp2 (temp 2-component vector of float) 0:131 'inF0' (in 2-component vector of float) 0:132 Sequence 0:132 move second child to first child (temp 2-component vector of float) 0:132 'r030' (temp 2-component vector of float) -0:132 face-forward (global 2-component vector of float) +0:132 face-forward (temp 2-component vector of float) 0:132 'inF0' (in 2-component vector of float) 0:132 'inF1' (in 2-component vector of float) 0:132 'inF2' (in 2-component vector of float) 0:133 Sequence 0:133 move second child to first child (temp 2-component vector of uint) 0:133 'r031' (temp 2-component vector of uint) -0:? findMSB (global 2-component vector of uint) +0:? findMSB (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:134 Sequence 0:134 move second child to first child (temp 2-component vector of uint) 0:134 'r032' (temp 2-component vector of uint) -0:? findLSB (global 2-component vector of uint) +0:? findLSB (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:135 Sequence 0:135 move second child to first child (temp 2-component vector of float) 0:135 'r033' (temp 2-component vector of float) -0:135 Floor (global 2-component vector of float) +0:135 Floor (temp 2-component vector of float) 0:135 'inF0' (in 2-component vector of float) 0:137 Sequence 0:137 move second child to first child (temp 2-component vector of float) 0:137 'r035' (temp 2-component vector of float) -0:137 mod (global 2-component vector of float) +0:137 mod (temp 2-component vector of float) 0:137 'inF0' (in 2-component vector of float) 0:137 'inF1' (in 2-component vector of float) 0:138 Sequence 0:138 move second child to first child (temp 2-component vector of float) 0:138 'r036' (temp 2-component vector of float) -0:138 Fraction (global 2-component vector of float) +0:138 Fraction (temp 2-component vector of float) 0:138 'inF0' (in 2-component vector of float) 0:139 Sequence 0:139 move second child to first child (temp 2-component vector of float) 0:139 'r037' (temp 2-component vector of float) -0:139 frexp (global 2-component vector of float) +0:139 frexp (temp 2-component vector of float) 0:139 'inF0' (in 2-component vector of float) 0:139 'inF1' (in 2-component vector of float) 0:140 Sequence 0:140 move second child to first child (temp 2-component vector of float) 0:140 'r038' (temp 2-component vector of float) -0:140 fwidth (global 2-component vector of float) +0:140 fwidth (temp 2-component vector of float) 0:140 'inF0' (in 2-component vector of float) 0:141 Sequence 0:141 move second child to first child (temp 2-component vector of bool) 0:141 'r039' (temp 2-component vector of bool) -0:141 isinf (global 2-component vector of bool) +0:141 isinf (temp 2-component vector of bool) 0:141 'inF0' (in 2-component vector of float) 0:142 Sequence 0:142 move second child to first child (temp 2-component vector of bool) 0:142 'r040' (temp 2-component vector of bool) -0:142 isnan (global 2-component vector of bool) +0:142 isnan (temp 2-component vector of bool) 0:142 'inF0' (in 2-component vector of float) 0:143 Sequence 0:143 move second child to first child (temp 2-component vector of float) 0:143 'r041' (temp 2-component vector of float) -0:143 ldexp (global 2-component vector of float) +0:143 ldexp (temp 2-component vector of float) 0:143 'inF0' (in 2-component vector of float) 0:143 'inF1' (in 2-component vector of float) 0:144 Sequence 0:144 move second child to first child (temp 2-component vector of float) 0:144 'r039a' (temp 2-component vector of float) -0:144 mix (global 2-component vector of float) +0:144 mix (temp 2-component vector of float) 0:144 'inF0' (in 2-component vector of float) 0:144 'inF1' (in 2-component vector of float) 0:144 'inF2' (in 2-component vector of float) 0:145 Sequence 0:145 move second child to first child (temp float) 0:145 'r042' (temp float) -0:145 length (global float) +0:145 length (temp float) 0:145 'inF0' (in 2-component vector of float) 0:146 Sequence 0:146 move second child to first child (temp 2-component vector of float) 0:146 'r043' (temp 2-component vector of float) -0:146 log (global 2-component vector of float) +0:146 log (temp 2-component vector of float) 0:146 'inF0' (in 2-component vector of float) 0:147 Sequence 0:147 move second child to first child (temp 2-component vector of float) @@ -3396,35 +3396,35 @@ gl_FragCoord origin is upper left 0:148 Sequence 0:148 move second child to first child (temp 2-component vector of float) 0:148 'r045' (temp 2-component vector of float) -0:148 log2 (global 2-component vector of float) +0:148 log2 (temp 2-component vector of float) 0:148 'inF0' (in 2-component vector of float) 0:149 Sequence 0:149 move second child to first child (temp 2-component vector of float) 0:149 'r046' (temp 2-component vector of float) -0:149 max (global 2-component vector of float) +0:149 max (temp 2-component vector of float) 0:149 'inF0' (in 2-component vector of float) 0:149 'inF1' (in 2-component vector of float) 0:150 Sequence 0:150 move second child to first child (temp 2-component vector of float) 0:150 'r047' (temp 2-component vector of float) -0:150 min (global 2-component vector of float) +0:150 min (temp 2-component vector of float) 0:150 'inF0' (in 2-component vector of float) 0:150 'inF1' (in 2-component vector of float) 0:151 Sequence 0:151 move second child to first child (temp 2-component vector of float) 0:151 'r048' (temp 2-component vector of float) -0:151 normalize (global 2-component vector of float) +0:151 normalize (temp 2-component vector of float) 0:151 'inF0' (in 2-component vector of float) 0:152 Sequence 0:152 move second child to first child (temp 2-component vector of float) 0:152 'r049' (temp 2-component vector of float) -0:152 pow (global 2-component vector of float) +0:152 pow (temp 2-component vector of float) 0:152 'inF0' (in 2-component vector of float) 0:152 'inF1' (in 2-component vector of float) 0:153 Sequence 0:153 move second child to first child (temp 2-component vector of float) 0:153 'r050' (temp 2-component vector of float) -0:153 radians (global 2-component vector of float) +0:153 radians (temp 2-component vector of float) 0:153 'inF0' (in 2-component vector of float) 0:154 Sequence 0:154 move second child to first child (temp 2-component vector of float) @@ -3436,13 +3436,13 @@ gl_FragCoord origin is upper left 0:155 Sequence 0:155 move second child to first child (temp 2-component vector of float) 0:155 'r052' (temp 2-component vector of float) -0:155 reflect (global 2-component vector of float) +0:155 reflect (temp 2-component vector of float) 0:155 'inF0' (in 2-component vector of float) 0:155 'inF1' (in 2-component vector of float) 0:156 Sequence 0:156 move second child to first child (temp 2-component vector of float) 0:156 'r053' (temp 2-component vector of float) -0:156 refract (global 2-component vector of float) +0:156 refract (temp 2-component vector of float) 0:156 'inF0' (in 2-component vector of float) 0:156 'inF1' (in 2-component vector of float) 0:156 Constant: @@ -3450,19 +3450,19 @@ gl_FragCoord origin is upper left 0:157 Sequence 0:157 move second child to first child (temp 2-component vector of uint) 0:157 'r054' (temp 2-component vector of uint) -0:? bitFieldReverse (global 2-component vector of uint) +0:? bitFieldReverse (temp 2-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:158 Sequence 0:158 move second child to first child (temp 2-component vector of float) 0:158 'r055' (temp 2-component vector of float) -0:158 roundEven (global 2-component vector of float) +0:158 roundEven (temp 2-component vector of float) 0:158 'inF0' (in 2-component vector of float) 0:159 Sequence 0:159 move second child to first child (temp 2-component vector of float) 0:159 'r056' (temp 2-component vector of float) -0:159 inverse sqrt (global 2-component vector of float) +0:159 inverse sqrt (temp 2-component vector of float) 0:159 'inF0' (in 2-component vector of float) 0:160 Sequence 0:160 move second child to first child (temp 2-component vector of float) @@ -3476,12 +3476,12 @@ gl_FragCoord origin is upper left 0:161 Sequence 0:161 move second child to first child (temp 2-component vector of float) 0:161 'r058' (temp 2-component vector of float) -0:161 Sign (global 2-component vector of float) +0:161 Sign (temp 2-component vector of float) 0:161 'inF0' (in 2-component vector of float) 0:162 Sequence 0:162 move second child to first child (temp 2-component vector of float) 0:162 'r059' (temp 2-component vector of float) -0:162 sine (global 2-component vector of float) +0:162 sine (temp 2-component vector of float) 0:162 'inF0' (in 2-component vector of float) 0:163 Sequence 0:163 move second child to first child (temp 2-component vector of float) @@ -3495,40 +3495,40 @@ gl_FragCoord origin is upper left 0:164 Sequence 0:164 move second child to first child (temp 2-component vector of float) 0:164 'r060' (temp 2-component vector of float) -0:164 hyp. sine (global 2-component vector of float) +0:164 hyp. sine (temp 2-component vector of float) 0:164 'inF0' (in 2-component vector of float) 0:165 Sequence 0:165 move second child to first child (temp 2-component vector of float) 0:165 'r061' (temp 2-component vector of float) -0:165 smoothstep (global 2-component vector of float) +0:165 smoothstep (temp 2-component vector of float) 0:165 'inF0' (in 2-component vector of float) 0:165 'inF1' (in 2-component vector of float) 0:165 'inF2' (in 2-component vector of float) 0:166 Sequence 0:166 move second child to first child (temp 2-component vector of float) 0:166 'r062' (temp 2-component vector of float) -0:166 sqrt (global 2-component vector of float) +0:166 sqrt (temp 2-component vector of float) 0:166 'inF0' (in 2-component vector of float) 0:167 Sequence 0:167 move second child to first child (temp 2-component vector of float) 0:167 'r063' (temp 2-component vector of float) -0:167 step (global 2-component vector of float) +0:167 step (temp 2-component vector of float) 0:167 'inF0' (in 2-component vector of float) 0:167 'inF1' (in 2-component vector of float) 0:168 Sequence 0:168 move second child to first child (temp 2-component vector of float) 0:168 'r064' (temp 2-component vector of float) -0:168 tangent (global 2-component vector of float) +0:168 tangent (temp 2-component vector of float) 0:168 'inF0' (in 2-component vector of float) 0:169 Sequence 0:169 move second child to first child (temp 2-component vector of float) 0:169 'r065' (temp 2-component vector of float) -0:169 hyp. tangent (global 2-component vector of float) +0:169 hyp. tangent (temp 2-component vector of float) 0:169 'inF0' (in 2-component vector of float) 0:171 Sequence 0:171 move second child to first child (temp 2-component vector of float) 0:171 'r066' (temp 2-component vector of float) -0:171 trunc (global 2-component vector of float) +0:171 trunc (temp 2-component vector of float) 0:171 'inF0' (in 2-component vector of float) 0:174 Branch: Return with expression 0:? Constant: @@ -3545,63 +3545,63 @@ gl_FragCoord origin is upper left 0:181 Sequence 0:181 move second child to first child (temp bool) 0:181 'r000' (temp bool) -0:181 all (global bool) +0:181 all (temp bool) 0:181 'inF0' (in 3-component vector of float) 0:182 Sequence 0:182 move second child to first child (temp 3-component vector of float) 0:182 'r001' (temp 3-component vector of float) -0:182 Absolute value (global 3-component vector of float) +0:182 Absolute value (temp 3-component vector of float) 0:182 'inF0' (in 3-component vector of float) 0:183 Sequence 0:183 move second child to first child (temp 3-component vector of float) 0:183 'r002' (temp 3-component vector of float) -0:183 arc cosine (global 3-component vector of float) +0:183 arc cosine (temp 3-component vector of float) 0:183 'inF0' (in 3-component vector of float) 0:184 Sequence 0:184 move second child to first child (temp bool) 0:184 'r003' (temp bool) -0:184 any (global bool) +0:184 any (temp bool) 0:184 'inF0' (in 3-component vector of float) 0:185 Sequence 0:185 move second child to first child (temp 3-component vector of float) 0:185 'r004' (temp 3-component vector of float) -0:185 arc sine (global 3-component vector of float) +0:185 arc sine (temp 3-component vector of float) 0:185 'inF0' (in 3-component vector of float) 0:186 Sequence 0:186 move second child to first child (temp 3-component vector of int) 0:186 'r005' (temp 3-component vector of int) -0:186 floatBitsToInt (global 3-component vector of int) +0:186 floatBitsToInt (temp 3-component vector of int) 0:186 'inF0' (in 3-component vector of float) 0:187 Sequence 0:187 move second child to first child (temp 3-component vector of uint) 0:187 'r006' (temp 3-component vector of uint) -0:187 floatBitsToUint (global 3-component vector of uint) +0:187 floatBitsToUint (temp 3-component vector of uint) 0:187 'inF0' (in 3-component vector of float) 0:188 Sequence 0:188 move second child to first child (temp 3-component vector of float) 0:188 'r007' (temp 3-component vector of float) -0:188 intBitsToFloat (global 3-component vector of float) +0:188 intBitsToFloat (temp 3-component vector of float) 0:188 'inU0' (in 3-component vector of uint) 0:190 Sequence 0:190 move second child to first child (temp 3-component vector of float) 0:190 'r009' (temp 3-component vector of float) -0:190 arc tangent (global 3-component vector of float) +0:190 arc tangent (temp 3-component vector of float) 0:190 'inF0' (in 3-component vector of float) 0:191 Sequence 0:191 move second child to first child (temp 3-component vector of float) 0:191 'r010' (temp 3-component vector of float) -0:191 arc tangent (global 3-component vector of float) +0:191 arc tangent (temp 3-component vector of float) 0:191 'inF0' (in 3-component vector of float) 0:191 'inF1' (in 3-component vector of float) 0:192 Sequence 0:192 move second child to first child (temp 3-component vector of float) 0:192 'r011' (temp 3-component vector of float) -0:192 Ceiling (global 3-component vector of float) +0:192 Ceiling (temp 3-component vector of float) 0:192 'inF0' (in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child (temp 3-component vector of float) 0:193 'r012' (temp 3-component vector of float) -0:193 clamp (global 3-component vector of float) +0:193 clamp (temp 3-component vector of float) 0:193 'inF0' (in 3-component vector of float) 0:193 'inF1' (in 3-component vector of float) 0:193 'inF2' (in 3-component vector of float) @@ -3619,17 +3619,17 @@ gl_FragCoord origin is upper left 0:195 Sequence 0:195 move second child to first child (temp 3-component vector of float) 0:195 'r013' (temp 3-component vector of float) -0:195 cosine (global 3-component vector of float) +0:195 cosine (temp 3-component vector of float) 0:195 'inF0' (in 3-component vector of float) 0:196 Sequence 0:196 move second child to first child (temp 3-component vector of float) 0:196 'r014' (temp 3-component vector of float) -0:196 hyp. cosine (global 3-component vector of float) +0:196 hyp. cosine (temp 3-component vector of float) 0:196 'inF0' (in 3-component vector of float) 0:197 Sequence 0:197 move second child to first child (temp 3-component vector of uint) 0:197 'r015' (temp 3-component vector of uint) -0:? bitCount (global 3-component vector of uint) +0:? bitCount (temp 3-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) @@ -3637,77 +3637,77 @@ gl_FragCoord origin is upper left 0:198 Sequence 0:198 move second child to first child (temp 3-component vector of float) 0:198 'r016' (temp 3-component vector of float) -0:198 cross-product (global 3-component vector of float) +0:198 cross-product (temp 3-component vector of float) 0:198 'inF0' (in 3-component vector of float) 0:198 'inF1' (in 3-component vector of float) 0:199 Sequence 0:199 move second child to first child (temp 3-component vector of float) 0:199 'r017' (temp 3-component vector of float) -0:199 dPdx (global 3-component vector of float) +0:199 dPdx (temp 3-component vector of float) 0:199 'inF0' (in 3-component vector of float) 0:200 Sequence 0:200 move second child to first child (temp 3-component vector of float) 0:200 'r018' (temp 3-component vector of float) -0:200 dPdxCoarse (global 3-component vector of float) +0:200 dPdxCoarse (temp 3-component vector of float) 0:200 'inF0' (in 3-component vector of float) 0:201 Sequence 0:201 move second child to first child (temp 3-component vector of float) 0:201 'r019' (temp 3-component vector of float) -0:201 dPdxFine (global 3-component vector of float) +0:201 dPdxFine (temp 3-component vector of float) 0:201 'inF0' (in 3-component vector of float) 0:202 Sequence 0:202 move second child to first child (temp 3-component vector of float) 0:202 'r020' (temp 3-component vector of float) -0:202 dPdy (global 3-component vector of float) +0:202 dPdy (temp 3-component vector of float) 0:202 'inF0' (in 3-component vector of float) 0:203 Sequence 0:203 move second child to first child (temp 3-component vector of float) 0:203 'r021' (temp 3-component vector of float) -0:203 dPdyCoarse (global 3-component vector of float) +0:203 dPdyCoarse (temp 3-component vector of float) 0:203 'inF0' (in 3-component vector of float) 0:204 Sequence 0:204 move second child to first child (temp 3-component vector of float) 0:204 'r022' (temp 3-component vector of float) -0:204 dPdyFine (global 3-component vector of float) +0:204 dPdyFine (temp 3-component vector of float) 0:204 'inF0' (in 3-component vector of float) 0:205 Sequence 0:205 move second child to first child (temp 3-component vector of float) 0:205 'r023' (temp 3-component vector of float) -0:205 degrees (global 3-component vector of float) +0:205 degrees (temp 3-component vector of float) 0:205 'inF0' (in 3-component vector of float) 0:206 Sequence 0:206 move second child to first child (temp float) 0:206 'r024' (temp float) -0:206 distance (global float) +0:206 distance (temp float) 0:206 'inF0' (in 3-component vector of float) 0:206 'inF1' (in 3-component vector of float) 0:207 Sequence 0:207 move second child to first child (temp float) 0:207 'r025' (temp float) -0:207 dot-product (global float) +0:207 dot-product (temp float) 0:207 'inF0' (in 3-component vector of float) 0:207 'inF1' (in 3-component vector of float) 0:211 Sequence 0:211 move second child to first child (temp 3-component vector of float) 0:211 'r029' (temp 3-component vector of float) -0:211 exp (global 3-component vector of float) +0:211 exp (temp 3-component vector of float) 0:211 'inF0' (in 3-component vector of float) 0:212 Sequence 0:212 move second child to first child (temp 3-component vector of float) 0:212 'r030' (temp 3-component vector of float) -0:212 exp2 (global 3-component vector of float) +0:212 exp2 (temp 3-component vector of float) 0:212 'inF0' (in 3-component vector of float) 0:213 Sequence 0:213 move second child to first child (temp 3-component vector of float) 0:213 'r031' (temp 3-component vector of float) -0:213 face-forward (global 3-component vector of float) +0:213 face-forward (temp 3-component vector of float) 0:213 'inF0' (in 3-component vector of float) 0:213 'inF1' (in 3-component vector of float) 0:213 'inF2' (in 3-component vector of float) 0:214 Sequence 0:214 move second child to first child (temp 3-component vector of uint) 0:214 'r032' (temp 3-component vector of uint) -0:? findMSB (global 3-component vector of uint) +0:? findMSB (temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) @@ -3715,7 +3715,7 @@ gl_FragCoord origin is upper left 0:215 Sequence 0:215 move second child to first child (temp 3-component vector of uint) 0:215 'r033' (temp 3-component vector of uint) -0:? findLSB (global 3-component vector of uint) +0:? findLSB (temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) @@ -3723,57 +3723,57 @@ gl_FragCoord origin is upper left 0:216 Sequence 0:216 move second child to first child (temp 3-component vector of float) 0:216 'r034' (temp 3-component vector of float) -0:216 Floor (global 3-component vector of float) +0:216 Floor (temp 3-component vector of float) 0:216 'inF0' (in 3-component vector of float) 0:218 Sequence 0:218 move second child to first child (temp 3-component vector of float) 0:218 'r036' (temp 3-component vector of float) -0:218 mod (global 3-component vector of float) +0:218 mod (temp 3-component vector of float) 0:218 'inF0' (in 3-component vector of float) 0:218 'inF1' (in 3-component vector of float) 0:219 Sequence 0:219 move second child to first child (temp 3-component vector of float) 0:219 'r037' (temp 3-component vector of float) -0:219 Fraction (global 3-component vector of float) +0:219 Fraction (temp 3-component vector of float) 0:219 'inF0' (in 3-component vector of float) 0:220 Sequence 0:220 move second child to first child (temp 3-component vector of float) 0:220 'r038' (temp 3-component vector of float) -0:220 frexp (global 3-component vector of float) +0:220 frexp (temp 3-component vector of float) 0:220 'inF0' (in 3-component vector of float) 0:220 'inF1' (in 3-component vector of float) 0:221 Sequence 0:221 move second child to first child (temp 3-component vector of float) 0:221 'r039' (temp 3-component vector of float) -0:221 fwidth (global 3-component vector of float) +0:221 fwidth (temp 3-component vector of float) 0:221 'inF0' (in 3-component vector of float) 0:222 Sequence 0:222 move second child to first child (temp 3-component vector of bool) 0:222 'r040' (temp 3-component vector of bool) -0:222 isinf (global 3-component vector of bool) +0:222 isinf (temp 3-component vector of bool) 0:222 'inF0' (in 3-component vector of float) 0:223 Sequence 0:223 move second child to first child (temp 3-component vector of bool) 0:223 'r041' (temp 3-component vector of bool) -0:223 isnan (global 3-component vector of bool) +0:223 isnan (temp 3-component vector of bool) 0:223 'inF0' (in 3-component vector of float) 0:224 Sequence 0:224 move second child to first child (temp 3-component vector of float) 0:224 'r042' (temp 3-component vector of float) -0:224 ldexp (global 3-component vector of float) +0:224 ldexp (temp 3-component vector of float) 0:224 'inF0' (in 3-component vector of float) 0:224 'inF1' (in 3-component vector of float) 0:225 Sequence 0:225 move second child to first child (temp 3-component vector of float) 0:225 'r039a' (temp 3-component vector of float) -0:225 mix (global 3-component vector of float) +0:225 mix (temp 3-component vector of float) 0:225 'inF0' (in 3-component vector of float) 0:225 'inF1' (in 3-component vector of float) 0:225 'inF2' (in 3-component vector of float) 0:226 Sequence 0:226 move second child to first child (temp 3-component vector of float) 0:226 'r039b' (temp 3-component vector of float) -0:226 mix (global 3-component vector of float) +0:226 mix (temp 3-component vector of float) 0:226 'inF0' (in 3-component vector of float) 0:226 'inF1' (in 3-component vector of float) 0:226 Constant: @@ -3781,12 +3781,12 @@ gl_FragCoord origin is upper left 0:227 Sequence 0:227 move second child to first child (temp float) 0:227 'r043' (temp float) -0:227 length (global float) +0:227 length (temp float) 0:227 'inF0' (in 3-component vector of float) 0:228 Sequence 0:228 move second child to first child (temp 3-component vector of float) 0:228 'r044' (temp 3-component vector of float) -0:228 log (global 3-component vector of float) +0:228 log (temp 3-component vector of float) 0:228 'inF0' (in 3-component vector of float) 0:229 Sequence 0:229 move second child to first child (temp 3-component vector of float) @@ -3799,35 +3799,35 @@ gl_FragCoord origin is upper left 0:230 Sequence 0:230 move second child to first child (temp 3-component vector of float) 0:230 'r046' (temp 3-component vector of float) -0:230 log2 (global 3-component vector of float) +0:230 log2 (temp 3-component vector of float) 0:230 'inF0' (in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child (temp 3-component vector of float) 0:231 'r047' (temp 3-component vector of float) -0:231 max (global 3-component vector of float) +0:231 max (temp 3-component vector of float) 0:231 'inF0' (in 3-component vector of float) 0:231 'inF1' (in 3-component vector of float) 0:232 Sequence 0:232 move second child to first child (temp 3-component vector of float) 0:232 'r048' (temp 3-component vector of float) -0:232 min (global 3-component vector of float) +0:232 min (temp 3-component vector of float) 0:232 'inF0' (in 3-component vector of float) 0:232 'inF1' (in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child (temp 3-component vector of float) 0:233 'r049' (temp 3-component vector of float) -0:233 normalize (global 3-component vector of float) +0:233 normalize (temp 3-component vector of float) 0:233 'inF0' (in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child (temp 3-component vector of float) 0:234 'r050' (temp 3-component vector of float) -0:234 pow (global 3-component vector of float) +0:234 pow (temp 3-component vector of float) 0:234 'inF0' (in 3-component vector of float) 0:234 'inF1' (in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child (temp 3-component vector of float) 0:235 'r051' (temp 3-component vector of float) -0:235 radians (global 3-component vector of float) +0:235 radians (temp 3-component vector of float) 0:235 'inF0' (in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child (temp 3-component vector of float) @@ -3839,13 +3839,13 @@ gl_FragCoord origin is upper left 0:237 Sequence 0:237 move second child to first child (temp 3-component vector of float) 0:237 'r053' (temp 3-component vector of float) -0:237 reflect (global 3-component vector of float) +0:237 reflect (temp 3-component vector of float) 0:237 'inF0' (in 3-component vector of float) 0:237 'inF1' (in 3-component vector of float) 0:238 Sequence 0:238 move second child to first child (temp 3-component vector of float) 0:238 'r054' (temp 3-component vector of float) -0:238 refract (global 3-component vector of float) +0:238 refract (temp 3-component vector of float) 0:238 'inF0' (in 3-component vector of float) 0:238 'inF1' (in 3-component vector of float) 0:238 Constant: @@ -3853,7 +3853,7 @@ gl_FragCoord origin is upper left 0:239 Sequence 0:239 move second child to first child (temp 3-component vector of uint) 0:239 'r055' (temp 3-component vector of uint) -0:? bitFieldReverse (global 3-component vector of uint) +0:? bitFieldReverse (temp 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) @@ -3861,12 +3861,12 @@ gl_FragCoord origin is upper left 0:240 Sequence 0:240 move second child to first child (temp 3-component vector of float) 0:240 'r056' (temp 3-component vector of float) -0:240 roundEven (global 3-component vector of float) +0:240 roundEven (temp 3-component vector of float) 0:240 'inF0' (in 3-component vector of float) 0:241 Sequence 0:241 move second child to first child (temp 3-component vector of float) 0:241 'r057' (temp 3-component vector of float) -0:241 inverse sqrt (global 3-component vector of float) +0:241 inverse sqrt (temp 3-component vector of float) 0:241 'inF0' (in 3-component vector of float) 0:242 Sequence 0:242 move second child to first child (temp 3-component vector of float) @@ -3880,12 +3880,12 @@ gl_FragCoord origin is upper left 0:243 Sequence 0:243 move second child to first child (temp 3-component vector of float) 0:243 'r059' (temp 3-component vector of float) -0:243 Sign (global 3-component vector of float) +0:243 Sign (temp 3-component vector of float) 0:243 'inF0' (in 3-component vector of float) 0:244 Sequence 0:244 move second child to first child (temp 3-component vector of float) 0:244 'r060' (temp 3-component vector of float) -0:244 sine (global 3-component vector of float) +0:244 sine (temp 3-component vector of float) 0:244 'inF0' (in 3-component vector of float) 0:245 Sequence 0:245 move second child to first child (temp 3-component vector of float) @@ -3899,40 +3899,40 @@ gl_FragCoord origin is upper left 0:246 Sequence 0:246 move second child to first child (temp 3-component vector of float) 0:246 'r061' (temp 3-component vector of float) -0:246 hyp. sine (global 3-component vector of float) +0:246 hyp. sine (temp 3-component vector of float) 0:246 'inF0' (in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child (temp 3-component vector of float) 0:247 'r062' (temp 3-component vector of float) -0:247 smoothstep (global 3-component vector of float) +0:247 smoothstep (temp 3-component vector of float) 0:247 'inF0' (in 3-component vector of float) 0:247 'inF1' (in 3-component vector of float) 0:247 'inF2' (in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child (temp 3-component vector of float) 0:248 'r063' (temp 3-component vector of float) -0:248 sqrt (global 3-component vector of float) +0:248 sqrt (temp 3-component vector of float) 0:248 'inF0' (in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child (temp 3-component vector of float) 0:249 'r064' (temp 3-component vector of float) -0:249 step (global 3-component vector of float) +0:249 step (temp 3-component vector of float) 0:249 'inF0' (in 3-component vector of float) 0:249 'inF1' (in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child (temp 3-component vector of float) 0:250 'r065' (temp 3-component vector of float) -0:250 tangent (global 3-component vector of float) +0:250 tangent (temp 3-component vector of float) 0:250 'inF0' (in 3-component vector of float) 0:251 Sequence 0:251 move second child to first child (temp 3-component vector of float) 0:251 'r066' (temp 3-component vector of float) -0:251 hyp. tangent (global 3-component vector of float) +0:251 hyp. tangent (temp 3-component vector of float) 0:251 'inF0' (in 3-component vector of float) 0:253 Sequence 0:253 move second child to first child (temp 3-component vector of float) 0:253 'r067' (temp 3-component vector of float) -0:253 trunc (global 3-component vector of float) +0:253 trunc (temp 3-component vector of float) 0:253 'inF0' (in 3-component vector of float) 0:256 Branch: Return with expression 0:? Constant: @@ -3950,63 +3950,63 @@ gl_FragCoord origin is upper left 0:263 Sequence 0:263 move second child to first child (temp bool) 0:263 'r000' (temp bool) -0:263 all (global bool) +0:263 all (temp bool) 0:263 'inF0' (in 4-component vector of float) 0:264 Sequence 0:264 move second child to first child (temp 4-component vector of float) 0:264 'r001' (temp 4-component vector of float) -0:264 Absolute value (global 4-component vector of float) +0:264 Absolute value (temp 4-component vector of float) 0:264 'inF0' (in 4-component vector of float) 0:265 Sequence 0:265 move second child to first child (temp 4-component vector of float) 0:265 'r002' (temp 4-component vector of float) -0:265 arc cosine (global 4-component vector of float) +0:265 arc cosine (temp 4-component vector of float) 0:265 'inF0' (in 4-component vector of float) 0:266 Sequence 0:266 move second child to first child (temp bool) 0:266 'r003' (temp bool) -0:266 any (global bool) +0:266 any (temp bool) 0:266 'inF0' (in 4-component vector of float) 0:267 Sequence 0:267 move second child to first child (temp 4-component vector of float) 0:267 'r004' (temp 4-component vector of float) -0:267 arc sine (global 4-component vector of float) +0:267 arc sine (temp 4-component vector of float) 0:267 'inF0' (in 4-component vector of float) 0:268 Sequence 0:268 move second child to first child (temp 4-component vector of int) 0:268 'r005' (temp 4-component vector of int) -0:268 floatBitsToInt (global 4-component vector of int) +0:268 floatBitsToInt (temp 4-component vector of int) 0:268 'inF0' (in 4-component vector of float) 0:269 Sequence 0:269 move second child to first child (temp 4-component vector of uint) 0:269 'r006' (temp 4-component vector of uint) -0:269 floatBitsToUint (global 4-component vector of uint) +0:269 floatBitsToUint (temp 4-component vector of uint) 0:269 'inF0' (in 4-component vector of float) 0:270 Sequence 0:270 move second child to first child (temp 4-component vector of float) 0:270 'r007' (temp 4-component vector of float) -0:270 intBitsToFloat (global 4-component vector of float) +0:270 intBitsToFloat (temp 4-component vector of float) 0:270 'inU0' (in 4-component vector of uint) 0:272 Sequence 0:272 move second child to first child (temp 4-component vector of float) 0:272 'r009' (temp 4-component vector of float) -0:272 arc tangent (global 4-component vector of float) +0:272 arc tangent (temp 4-component vector of float) 0:272 'inF0' (in 4-component vector of float) 0:273 Sequence 0:273 move second child to first child (temp 4-component vector of float) 0:273 'r010' (temp 4-component vector of float) -0:273 arc tangent (global 4-component vector of float) +0:273 arc tangent (temp 4-component vector of float) 0:273 'inF0' (in 4-component vector of float) 0:273 'inF1' (in 4-component vector of float) 0:274 Sequence 0:274 move second child to first child (temp 4-component vector of float) 0:274 'r011' (temp 4-component vector of float) -0:274 Ceiling (global 4-component vector of float) +0:274 Ceiling (temp 4-component vector of float) 0:274 'inF0' (in 4-component vector of float) 0:275 Sequence 0:275 move second child to first child (temp 4-component vector of float) 0:275 'r012' (temp 4-component vector of float) -0:275 clamp (global 4-component vector of float) +0:275 clamp (temp 4-component vector of float) 0:275 'inF0' (in 4-component vector of float) 0:275 'inF1' (in 4-component vector of float) 0:275 'inF2' (in 4-component vector of float) @@ -4025,17 +4025,17 @@ gl_FragCoord origin is upper left 0:277 Sequence 0:277 move second child to first child (temp 4-component vector of float) 0:277 'r013' (temp 4-component vector of float) -0:277 cosine (global 4-component vector of float) +0:277 cosine (temp 4-component vector of float) 0:277 'inF0' (in 4-component vector of float) 0:278 Sequence 0:278 move second child to first child (temp 4-component vector of float) 0:278 'r014' (temp 4-component vector of float) -0:278 hyp. cosine (global 4-component vector of float) +0:278 hyp. cosine (temp 4-component vector of float) 0:278 'inF0' (in 4-component vector of float) 0:279 Sequence 0:279 move second child to first child (temp 4-component vector of uint) 0:279 'r015' (temp 4-component vector of uint) -0:? bitCount (global 4-component vector of uint) +0:? bitCount (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) @@ -4044,48 +4044,48 @@ gl_FragCoord origin is upper left 0:280 Sequence 0:280 move second child to first child (temp 4-component vector of float) 0:280 'r016' (temp 4-component vector of float) -0:280 dPdx (global 4-component vector of float) +0:280 dPdx (temp 4-component vector of float) 0:280 'inF0' (in 4-component vector of float) 0:281 Sequence 0:281 move second child to first child (temp 4-component vector of float) 0:281 'r017' (temp 4-component vector of float) -0:281 dPdxCoarse (global 4-component vector of float) +0:281 dPdxCoarse (temp 4-component vector of float) 0:281 'inF0' (in 4-component vector of float) 0:282 Sequence 0:282 move second child to first child (temp 4-component vector of float) 0:282 'r018' (temp 4-component vector of float) -0:282 dPdxFine (global 4-component vector of float) +0:282 dPdxFine (temp 4-component vector of float) 0:282 'inF0' (in 4-component vector of float) 0:283 Sequence 0:283 move second child to first child (temp 4-component vector of float) 0:283 'r019' (temp 4-component vector of float) -0:283 dPdy (global 4-component vector of float) +0:283 dPdy (temp 4-component vector of float) 0:283 'inF0' (in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child (temp 4-component vector of float) 0:284 'r020' (temp 4-component vector of float) -0:284 dPdyCoarse (global 4-component vector of float) +0:284 dPdyCoarse (temp 4-component vector of float) 0:284 'inF0' (in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child (temp 4-component vector of float) 0:285 'r021' (temp 4-component vector of float) -0:285 dPdyFine (global 4-component vector of float) +0:285 dPdyFine (temp 4-component vector of float) 0:285 'inF0' (in 4-component vector of float) 0:286 Sequence 0:286 move second child to first child (temp 4-component vector of float) 0:286 'r022' (temp 4-component vector of float) -0:286 degrees (global 4-component vector of float) +0:286 degrees (temp 4-component vector of float) 0:286 'inF0' (in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child (temp float) 0:287 'r023' (temp float) -0:287 distance (global float) +0:287 distance (temp float) 0:287 'inF0' (in 4-component vector of float) 0:287 'inF1' (in 4-component vector of float) 0:288 Sequence 0:288 move second child to first child (temp float) 0:288 'r024' (temp float) -0:288 dot-product (global float) +0:288 dot-product (temp float) 0:288 'inF0' (in 4-component vector of float) 0:288 'inF1' (in 4-component vector of float) 0:289 Sequence @@ -4114,24 +4114,24 @@ gl_FragCoord origin is upper left 0:293 Sequence 0:293 move second child to first child (temp 4-component vector of float) 0:293 'r029' (temp 4-component vector of float) -0:293 exp (global 4-component vector of float) +0:293 exp (temp 4-component vector of float) 0:293 'inF0' (in 4-component vector of float) 0:294 Sequence 0:294 move second child to first child (temp 4-component vector of float) 0:294 'r030' (temp 4-component vector of float) -0:294 exp2 (global 4-component vector of float) +0:294 exp2 (temp 4-component vector of float) 0:294 'inF0' (in 4-component vector of float) 0:295 Sequence 0:295 move second child to first child (temp 4-component vector of float) 0:295 'r031' (temp 4-component vector of float) -0:295 face-forward (global 4-component vector of float) +0:295 face-forward (temp 4-component vector of float) 0:295 'inF0' (in 4-component vector of float) 0:295 'inF1' (in 4-component vector of float) 0:295 'inF2' (in 4-component vector of float) 0:296 Sequence 0:296 move second child to first child (temp 4-component vector of uint) 0:296 'r032' (temp 4-component vector of uint) -0:? findMSB (global 4-component vector of uint) +0:? findMSB (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) @@ -4140,7 +4140,7 @@ gl_FragCoord origin is upper left 0:297 Sequence 0:297 move second child to first child (temp 4-component vector of uint) 0:297 'r033' (temp 4-component vector of uint) -0:? findLSB (global 4-component vector of uint) +0:? findLSB (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) @@ -4149,62 +4149,62 @@ gl_FragCoord origin is upper left 0:298 Sequence 0:298 move second child to first child (temp 4-component vector of float) 0:298 'r034' (temp 4-component vector of float) -0:298 Floor (global 4-component vector of float) +0:298 Floor (temp 4-component vector of float) 0:298 'inF0' (in 4-component vector of float) 0:300 Sequence 0:300 move second child to first child (temp 4-component vector of float) 0:300 'r036' (temp 4-component vector of float) -0:300 mod (global 4-component vector of float) +0:300 mod (temp 4-component vector of float) 0:300 'inF0' (in 4-component vector of float) 0:300 'inF1' (in 4-component vector of float) 0:301 Sequence 0:301 move second child to first child (temp 4-component vector of float) 0:301 'r037' (temp 4-component vector of float) -0:301 Fraction (global 4-component vector of float) +0:301 Fraction (temp 4-component vector of float) 0:301 'inF0' (in 4-component vector of float) 0:302 Sequence 0:302 move second child to first child (temp 4-component vector of float) 0:302 'r038' (temp 4-component vector of float) -0:302 frexp (global 4-component vector of float) +0:302 frexp (temp 4-component vector of float) 0:302 'inF0' (in 4-component vector of float) 0:302 'inF1' (in 4-component vector of float) 0:303 Sequence 0:303 move second child to first child (temp 4-component vector of float) 0:303 'r039' (temp 4-component vector of float) -0:303 fwidth (global 4-component vector of float) +0:303 fwidth (temp 4-component vector of float) 0:303 'inF0' (in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child (temp 4-component vector of bool) 0:304 'r040' (temp 4-component vector of bool) -0:304 isinf (global 4-component vector of bool) +0:304 isinf (temp 4-component vector of bool) 0:304 'inF0' (in 4-component vector of float) 0:305 Sequence 0:305 move second child to first child (temp 4-component vector of bool) 0:305 'r041' (temp 4-component vector of bool) -0:305 isnan (global 4-component vector of bool) +0:305 isnan (temp 4-component vector of bool) 0:305 'inF0' (in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child (temp 4-component vector of float) 0:306 'r042' (temp 4-component vector of float) -0:306 ldexp (global 4-component vector of float) +0:306 ldexp (temp 4-component vector of float) 0:306 'inF0' (in 4-component vector of float) 0:306 'inF1' (in 4-component vector of float) 0:307 Sequence 0:307 move second child to first child (temp 4-component vector of float) 0:307 'r039a' (temp 4-component vector of float) -0:307 mix (global 4-component vector of float) +0:307 mix (temp 4-component vector of float) 0:307 'inF0' (in 4-component vector of float) 0:307 'inF1' (in 4-component vector of float) 0:307 'inF2' (in 4-component vector of float) 0:308 Sequence 0:308 move second child to first child (temp float) 0:308 'r043' (temp float) -0:308 length (global float) +0:308 length (temp float) 0:308 'inF0' (in 4-component vector of float) 0:309 Sequence 0:309 move second child to first child (temp 4-component vector of float) 0:309 'r044' (temp 4-component vector of float) -0:309 log (global 4-component vector of float) +0:309 log (temp 4-component vector of float) 0:309 'inF0' (in 4-component vector of float) 0:310 Sequence 0:310 move second child to first child (temp 4-component vector of float) @@ -4217,35 +4217,35 @@ gl_FragCoord origin is upper left 0:311 Sequence 0:311 move second child to first child (temp 4-component vector of float) 0:311 'r046' (temp 4-component vector of float) -0:311 log2 (global 4-component vector of float) +0:311 log2 (temp 4-component vector of float) 0:311 'inF0' (in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child (temp 4-component vector of float) 0:312 'r047' (temp 4-component vector of float) -0:312 max (global 4-component vector of float) +0:312 max (temp 4-component vector of float) 0:312 'inF0' (in 4-component vector of float) 0:312 'inF1' (in 4-component vector of float) 0:313 Sequence 0:313 move second child to first child (temp 4-component vector of float) 0:313 'r048' (temp 4-component vector of float) -0:313 min (global 4-component vector of float) +0:313 min (temp 4-component vector of float) 0:313 'inF0' (in 4-component vector of float) 0:313 'inF1' (in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child (temp 4-component vector of float) 0:314 'r049' (temp 4-component vector of float) -0:314 normalize (global 4-component vector of float) +0:314 normalize (temp 4-component vector of float) 0:314 'inF0' (in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child (temp 4-component vector of float) 0:315 'r050' (temp 4-component vector of float) -0:315 pow (global 4-component vector of float) +0:315 pow (temp 4-component vector of float) 0:315 'inF0' (in 4-component vector of float) 0:315 'inF1' (in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child (temp 4-component vector of float) 0:316 'r051' (temp 4-component vector of float) -0:316 radians (global 4-component vector of float) +0:316 radians (temp 4-component vector of float) 0:316 'inF0' (in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child (temp 4-component vector of float) @@ -4257,13 +4257,13 @@ gl_FragCoord origin is upper left 0:318 Sequence 0:318 move second child to first child (temp 4-component vector of float) 0:318 'r053' (temp 4-component vector of float) -0:318 reflect (global 4-component vector of float) +0:318 reflect (temp 4-component vector of float) 0:318 'inF0' (in 4-component vector of float) 0:318 'inF1' (in 4-component vector of float) 0:319 Sequence 0:319 move second child to first child (temp 4-component vector of float) 0:319 'r054' (temp 4-component vector of float) -0:319 refract (global 4-component vector of float) +0:319 refract (temp 4-component vector of float) 0:319 'inF0' (in 4-component vector of float) 0:319 'inF1' (in 4-component vector of float) 0:319 Constant: @@ -4271,7 +4271,7 @@ gl_FragCoord origin is upper left 0:320 Sequence 0:320 move second child to first child (temp 4-component vector of uint) 0:320 'r055' (temp 4-component vector of uint) -0:? bitFieldReverse (global 4-component vector of uint) +0:? bitFieldReverse (temp 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) @@ -4280,12 +4280,12 @@ gl_FragCoord origin is upper left 0:321 Sequence 0:321 move second child to first child (temp 4-component vector of float) 0:321 'r056' (temp 4-component vector of float) -0:321 roundEven (global 4-component vector of float) +0:321 roundEven (temp 4-component vector of float) 0:321 'inF0' (in 4-component vector of float) 0:322 Sequence 0:322 move second child to first child (temp 4-component vector of float) 0:322 'r057' (temp 4-component vector of float) -0:322 inverse sqrt (global 4-component vector of float) +0:322 inverse sqrt (temp 4-component vector of float) 0:322 'inF0' (in 4-component vector of float) 0:323 Sequence 0:323 move second child to first child (temp 4-component vector of float) @@ -4299,12 +4299,12 @@ gl_FragCoord origin is upper left 0:324 Sequence 0:324 move second child to first child (temp 4-component vector of float) 0:324 'r059' (temp 4-component vector of float) -0:324 Sign (global 4-component vector of float) +0:324 Sign (temp 4-component vector of float) 0:324 'inF0' (in 4-component vector of float) 0:325 Sequence 0:325 move second child to first child (temp 4-component vector of float) 0:325 'r060' (temp 4-component vector of float) -0:325 sine (global 4-component vector of float) +0:325 sine (temp 4-component vector of float) 0:325 'inF0' (in 4-component vector of float) 0:326 Sequence 0:326 move second child to first child (temp 4-component vector of float) @@ -4318,40 +4318,40 @@ gl_FragCoord origin is upper left 0:327 Sequence 0:327 move second child to first child (temp 4-component vector of float) 0:327 'r061' (temp 4-component vector of float) -0:327 hyp. sine (global 4-component vector of float) +0:327 hyp. sine (temp 4-component vector of float) 0:327 'inF0' (in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child (temp 4-component vector of float) 0:328 'r062' (temp 4-component vector of float) -0:328 smoothstep (global 4-component vector of float) +0:328 smoothstep (temp 4-component vector of float) 0:328 'inF0' (in 4-component vector of float) 0:328 'inF1' (in 4-component vector of float) 0:328 'inF2' (in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child (temp 4-component vector of float) 0:329 'r063' (temp 4-component vector of float) -0:329 sqrt (global 4-component vector of float) +0:329 sqrt (temp 4-component vector of float) 0:329 'inF0' (in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child (temp 4-component vector of float) 0:330 'r064' (temp 4-component vector of float) -0:330 step (global 4-component vector of float) +0:330 step (temp 4-component vector of float) 0:330 'inF0' (in 4-component vector of float) 0:330 'inF1' (in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child (temp 4-component vector of float) 0:331 'r065' (temp 4-component vector of float) -0:331 tangent (global 4-component vector of float) +0:331 tangent (temp 4-component vector of float) 0:331 'inF0' (in 4-component vector of float) 0:332 Sequence 0:332 move second child to first child (temp 4-component vector of float) 0:332 'r066' (temp 4-component vector of float) -0:332 hyp. tangent (global 4-component vector of float) +0:332 hyp. tangent (temp 4-component vector of float) 0:332 'inF0' (in 4-component vector of float) 0:334 Sequence 0:334 move second child to first child (temp 4-component vector of float) 0:334 'r067' (temp 4-component vector of float) -0:334 trunc (global 4-component vector of float) +0:334 trunc (temp 4-component vector of float) 0:334 'inF0' (in 4-component vector of float) 0:337 Branch: Return with expression 0:? Constant: @@ -4368,40 +4368,40 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp bool) 0:403 'r000' (temp bool) -0:403 all (global bool) +0:403 all (temp bool) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r001' (temp 2X2 matrix of float) -0:403 Absolute value (global 2X2 matrix of float) +0:403 Absolute value (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) -0:403 arc cosine (global 2X2 matrix of float) +0:403 arc cosine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp bool) 0:403 'r003' (temp bool) -0:403 any (global bool) +0:403 any (temp bool) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r004' (temp 2X2 matrix of float) -0:403 arc sine (global 2X2 matrix of float) +0:403 arc sine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r005' (temp 2X2 matrix of float) -0:403 arc tangent (global 2X2 matrix of float) +0:403 arc tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r006' (temp 2X2 matrix of float) -0:403 arc tangent (global 2X2 matrix of float) +0:403 arc tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r007' (temp 2X2 matrix of float) -0:403 Ceiling (global 2X2 matrix of float) +0:403 Ceiling (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Test condition and select (temp void) 0:403 Condition @@ -4418,114 +4418,114 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r008' (temp 2X2 matrix of float) -0:403 clamp (global 2X2 matrix of float) +0:403 clamp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 'inF2' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r009' (temp 2X2 matrix of float) -0:403 cosine (global 2X2 matrix of float) +0:403 cosine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r010' (temp 2X2 matrix of float) -0:403 hyp. cosine (global 2X2 matrix of float) +0:403 hyp. cosine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r011' (temp 2X2 matrix of float) -0:403 dPdx (global 2X2 matrix of float) +0:403 dPdx (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r012' (temp 2X2 matrix of float) -0:403 dPdxCoarse (global 2X2 matrix of float) +0:403 dPdxCoarse (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r013' (temp 2X2 matrix of float) -0:403 dPdxFine (global 2X2 matrix of float) +0:403 dPdxFine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r014' (temp 2X2 matrix of float) -0:403 dPdy (global 2X2 matrix of float) +0:403 dPdy (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r015' (temp 2X2 matrix of float) -0:403 dPdyCoarse (global 2X2 matrix of float) +0:403 dPdyCoarse (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r016' (temp 2X2 matrix of float) -0:403 dPdyFine (global 2X2 matrix of float) +0:403 dPdyFine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r017' (temp 2X2 matrix of float) -0:403 degrees (global 2X2 matrix of float) +0:403 degrees (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp float) 0:403 'r018' (temp float) -0:403 determinant (global float) +0:403 determinant (temp float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r019' (temp 2X2 matrix of float) -0:403 exp (global 2X2 matrix of float) +0:403 exp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'R020' (temp 2X2 matrix of float) -0:403 exp2 (global 2X2 matrix of float) +0:403 exp2 (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r021' (temp 2X2 matrix of float) -0:403 Floor (global 2X2 matrix of float) +0:403 Floor (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r022' (temp 2X2 matrix of float) -0:403 mod (global 2X2 matrix of float) +0:403 mod (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r023' (temp 2X2 matrix of float) -0:403 Fraction (global 2X2 matrix of float) +0:403 Fraction (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r024' (temp 2X2 matrix of float) -0:403 frexp (global 2X2 matrix of float) +0:403 frexp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r025' (temp 2X2 matrix of float) -0:403 fwidth (global 2X2 matrix of float) +0:403 fwidth (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r026' (temp 2X2 matrix of float) -0:403 ldexp (global 2X2 matrix of float) +0:403 ldexp (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r026a' (temp 2X2 matrix of float) -0:403 mix (global 2X2 matrix of float) +0:403 mix (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 'inF2' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r027' (temp 2X2 matrix of float) -0:403 log (global 2X2 matrix of float) +0:403 log (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) @@ -4538,40 +4538,40 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r029' (temp 2X2 matrix of float) -0:403 log2 (global 2X2 matrix of float) +0:403 log2 (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r030' (temp 2X2 matrix of float) -0:403 max (global 2X2 matrix of float) +0:403 max (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r031' (temp 2X2 matrix of float) -0:403 min (global 2X2 matrix of float) +0:403 min (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r032' (temp 2X2 matrix of float) -0:403 pow (global 2X2 matrix of float) +0:403 pow (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r033' (temp 2X2 matrix of float) -0:403 radians (global 2X2 matrix of float) +0:403 radians (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r034' (temp 2X2 matrix of float) -0:403 roundEven (global 2X2 matrix of float) +0:403 roundEven (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r035' (temp 2X2 matrix of float) -0:403 inverse sqrt (global 2X2 matrix of float) +0:403 inverse sqrt (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) @@ -4585,12 +4585,12 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r037' (temp 2X2 matrix of float) -0:403 Sign (global 2X2 matrix of float) +0:403 Sign (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r038' (temp 2X2 matrix of float) -0:403 sine (global 2X2 matrix of float) +0:403 sine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) @@ -4604,42 +4604,42 @@ gl_FragCoord origin is upper left 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r039' (temp 2X2 matrix of float) -0:403 hyp. sine (global 2X2 matrix of float) +0:403 hyp. sine (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r049' (temp 2X2 matrix of float) -0:403 smoothstep (global 2X2 matrix of float) +0:403 smoothstep (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 'inF2' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r041' (temp 2X2 matrix of float) -0:403 sqrt (global 2X2 matrix of float) +0:403 sqrt (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r042' (temp 2X2 matrix of float) -0:403 step (global 2X2 matrix of float) +0:403 step (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 'inF1' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r043' (temp 2X2 matrix of float) -0:403 tangent (global 2X2 matrix of float) +0:403 tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r044' (temp 2X2 matrix of float) -0:403 hyp. tangent (global 2X2 matrix of float) +0:403 hyp. tangent (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) -0:403 transpose (global 2X2 matrix of float) +0:403 transpose (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:403 Sequence 0:403 move second child to first child (temp 2X2 matrix of float) 0:403 'r046' (temp 2X2 matrix of float) -0:403 trunc (global 2X2 matrix of float) +0:403 trunc (temp 2X2 matrix of float) 0:403 'inF0' (in 2X2 matrix of float) 0:406 Branch: Return with expression 0:? Constant: @@ -4656,40 +4656,40 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp bool) 0:412 'r000' (temp bool) -0:412 all (global bool) +0:412 all (temp bool) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r001' (temp 3X3 matrix of float) -0:412 Absolute value (global 3X3 matrix of float) +0:412 Absolute value (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) -0:412 arc cosine (global 3X3 matrix of float) +0:412 arc cosine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp bool) 0:412 'r003' (temp bool) -0:412 any (global bool) +0:412 any (temp bool) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r004' (temp 3X3 matrix of float) -0:412 arc sine (global 3X3 matrix of float) +0:412 arc sine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r005' (temp 3X3 matrix of float) -0:412 arc tangent (global 3X3 matrix of float) +0:412 arc tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r006' (temp 3X3 matrix of float) -0:412 arc tangent (global 3X3 matrix of float) +0:412 arc tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r007' (temp 3X3 matrix of float) -0:412 Ceiling (global 3X3 matrix of float) +0:412 Ceiling (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Test condition and select (temp void) 0:412 Condition @@ -4711,114 +4711,114 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r008' (temp 3X3 matrix of float) -0:412 clamp (global 3X3 matrix of float) +0:412 clamp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 'inF2' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r009' (temp 3X3 matrix of float) -0:412 cosine (global 3X3 matrix of float) +0:412 cosine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r010' (temp 3X3 matrix of float) -0:412 hyp. cosine (global 3X3 matrix of float) +0:412 hyp. cosine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r011' (temp 3X3 matrix of float) -0:412 dPdx (global 3X3 matrix of float) +0:412 dPdx (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r012' (temp 3X3 matrix of float) -0:412 dPdxCoarse (global 3X3 matrix of float) +0:412 dPdxCoarse (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r013' (temp 3X3 matrix of float) -0:412 dPdxFine (global 3X3 matrix of float) +0:412 dPdxFine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r014' (temp 3X3 matrix of float) -0:412 dPdy (global 3X3 matrix of float) +0:412 dPdy (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r015' (temp 3X3 matrix of float) -0:412 dPdyCoarse (global 3X3 matrix of float) +0:412 dPdyCoarse (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r016' (temp 3X3 matrix of float) -0:412 dPdyFine (global 3X3 matrix of float) +0:412 dPdyFine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r017' (temp 3X3 matrix of float) -0:412 degrees (global 3X3 matrix of float) +0:412 degrees (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp float) 0:412 'r018' (temp float) -0:412 determinant (global float) +0:412 determinant (temp float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r019' (temp 3X3 matrix of float) -0:412 exp (global 3X3 matrix of float) +0:412 exp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'R020' (temp 3X3 matrix of float) -0:412 exp2 (global 3X3 matrix of float) +0:412 exp2 (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r021' (temp 3X3 matrix of float) -0:412 Floor (global 3X3 matrix of float) +0:412 Floor (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r022' (temp 3X3 matrix of float) -0:412 mod (global 3X3 matrix of float) +0:412 mod (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r023' (temp 3X3 matrix of float) -0:412 Fraction (global 3X3 matrix of float) +0:412 Fraction (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r024' (temp 3X3 matrix of float) -0:412 frexp (global 3X3 matrix of float) +0:412 frexp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r025' (temp 3X3 matrix of float) -0:412 fwidth (global 3X3 matrix of float) +0:412 fwidth (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r026' (temp 3X3 matrix of float) -0:412 ldexp (global 3X3 matrix of float) +0:412 ldexp (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r026a' (temp 3X3 matrix of float) -0:412 mix (global 3X3 matrix of float) +0:412 mix (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 'inF2' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r027' (temp 3X3 matrix of float) -0:412 log (global 3X3 matrix of float) +0:412 log (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) @@ -4831,40 +4831,40 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r029' (temp 3X3 matrix of float) -0:412 log2 (global 3X3 matrix of float) +0:412 log2 (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r030' (temp 3X3 matrix of float) -0:412 max (global 3X3 matrix of float) +0:412 max (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r031' (temp 3X3 matrix of float) -0:412 min (global 3X3 matrix of float) +0:412 min (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r032' (temp 3X3 matrix of float) -0:412 pow (global 3X3 matrix of float) +0:412 pow (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r033' (temp 3X3 matrix of float) -0:412 radians (global 3X3 matrix of float) +0:412 radians (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r034' (temp 3X3 matrix of float) -0:412 roundEven (global 3X3 matrix of float) +0:412 roundEven (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r035' (temp 3X3 matrix of float) -0:412 inverse sqrt (global 3X3 matrix of float) +0:412 inverse sqrt (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) @@ -4878,12 +4878,12 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r037' (temp 3X3 matrix of float) -0:412 Sign (global 3X3 matrix of float) +0:412 Sign (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r038' (temp 3X3 matrix of float) -0:412 sine (global 3X3 matrix of float) +0:412 sine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) @@ -4897,42 +4897,42 @@ gl_FragCoord origin is upper left 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r039' (temp 3X3 matrix of float) -0:412 hyp. sine (global 3X3 matrix of float) +0:412 hyp. sine (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r049' (temp 3X3 matrix of float) -0:412 smoothstep (global 3X3 matrix of float) +0:412 smoothstep (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 'inF2' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r041' (temp 3X3 matrix of float) -0:412 sqrt (global 3X3 matrix of float) +0:412 sqrt (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r042' (temp 3X3 matrix of float) -0:412 step (global 3X3 matrix of float) +0:412 step (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 'inF1' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r043' (temp 3X3 matrix of float) -0:412 tangent (global 3X3 matrix of float) +0:412 tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r044' (temp 3X3 matrix of float) -0:412 hyp. tangent (global 3X3 matrix of float) +0:412 hyp. tangent (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) -0:412 transpose (global 3X3 matrix of float) +0:412 transpose (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:412 Sequence 0:412 move second child to first child (temp 3X3 matrix of float) 0:412 'r046' (temp 3X3 matrix of float) -0:412 trunc (global 3X3 matrix of float) +0:412 trunc (temp 3X3 matrix of float) 0:412 'inF0' (in 3X3 matrix of float) 0:415 Branch: Return with expression 0:? Constant: @@ -4954,40 +4954,40 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp bool) 0:421 'r000' (temp bool) -0:421 all (global bool) +0:421 all (temp bool) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r001' (temp 4X4 matrix of float) -0:421 Absolute value (global 4X4 matrix of float) +0:421 Absolute value (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) -0:421 arc cosine (global 4X4 matrix of float) +0:421 arc cosine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp bool) 0:421 'r003' (temp bool) -0:421 any (global bool) +0:421 any (temp bool) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r004' (temp 4X4 matrix of float) -0:421 arc sine (global 4X4 matrix of float) +0:421 arc sine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r005' (temp 4X4 matrix of float) -0:421 arc tangent (global 4X4 matrix of float) +0:421 arc tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r006' (temp 4X4 matrix of float) -0:421 arc tangent (global 4X4 matrix of float) +0:421 arc tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r007' (temp 4X4 matrix of float) -0:421 Ceiling (global 4X4 matrix of float) +0:421 Ceiling (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Test condition and select (temp void) 0:421 Condition @@ -5016,114 +5016,114 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r008' (temp 4X4 matrix of float) -0:421 clamp (global 4X4 matrix of float) +0:421 clamp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 'inF2' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r009' (temp 4X4 matrix of float) -0:421 cosine (global 4X4 matrix of float) +0:421 cosine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r010' (temp 4X4 matrix of float) -0:421 hyp. cosine (global 4X4 matrix of float) +0:421 hyp. cosine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r011' (temp 4X4 matrix of float) -0:421 dPdx (global 4X4 matrix of float) +0:421 dPdx (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r012' (temp 4X4 matrix of float) -0:421 dPdxCoarse (global 4X4 matrix of float) +0:421 dPdxCoarse (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r013' (temp 4X4 matrix of float) -0:421 dPdxFine (global 4X4 matrix of float) +0:421 dPdxFine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r014' (temp 4X4 matrix of float) -0:421 dPdy (global 4X4 matrix of float) +0:421 dPdy (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r015' (temp 4X4 matrix of float) -0:421 dPdyCoarse (global 4X4 matrix of float) +0:421 dPdyCoarse (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r016' (temp 4X4 matrix of float) -0:421 dPdyFine (global 4X4 matrix of float) +0:421 dPdyFine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r017' (temp 4X4 matrix of float) -0:421 degrees (global 4X4 matrix of float) +0:421 degrees (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp float) 0:421 'r018' (temp float) -0:421 determinant (global float) +0:421 determinant (temp float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r019' (temp 4X4 matrix of float) -0:421 exp (global 4X4 matrix of float) +0:421 exp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'R020' (temp 4X4 matrix of float) -0:421 exp2 (global 4X4 matrix of float) +0:421 exp2 (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r021' (temp 4X4 matrix of float) -0:421 Floor (global 4X4 matrix of float) +0:421 Floor (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r022' (temp 4X4 matrix of float) -0:421 mod (global 4X4 matrix of float) +0:421 mod (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r023' (temp 4X4 matrix of float) -0:421 Fraction (global 4X4 matrix of float) +0:421 Fraction (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r024' (temp 4X4 matrix of float) -0:421 frexp (global 4X4 matrix of float) +0:421 frexp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r025' (temp 4X4 matrix of float) -0:421 fwidth (global 4X4 matrix of float) +0:421 fwidth (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r026' (temp 4X4 matrix of float) -0:421 ldexp (global 4X4 matrix of float) +0:421 ldexp (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r026a' (temp 4X4 matrix of float) -0:421 mix (global 4X4 matrix of float) +0:421 mix (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 'inF2' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r027' (temp 4X4 matrix of float) -0:421 log (global 4X4 matrix of float) +0:421 log (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) @@ -5136,40 +5136,40 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r029' (temp 4X4 matrix of float) -0:421 log2 (global 4X4 matrix of float) +0:421 log2 (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r030' (temp 4X4 matrix of float) -0:421 max (global 4X4 matrix of float) +0:421 max (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r031' (temp 4X4 matrix of float) -0:421 min (global 4X4 matrix of float) +0:421 min (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r032' (temp 4X4 matrix of float) -0:421 pow (global 4X4 matrix of float) +0:421 pow (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r033' (temp 4X4 matrix of float) -0:421 radians (global 4X4 matrix of float) +0:421 radians (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r034' (temp 4X4 matrix of float) -0:421 roundEven (global 4X4 matrix of float) +0:421 roundEven (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r035' (temp 4X4 matrix of float) -0:421 inverse sqrt (global 4X4 matrix of float) +0:421 inverse sqrt (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) @@ -5183,12 +5183,12 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r037' (temp 4X4 matrix of float) -0:421 Sign (global 4X4 matrix of float) +0:421 Sign (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r038' (temp 4X4 matrix of float) -0:421 sine (global 4X4 matrix of float) +0:421 sine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) @@ -5202,42 +5202,42 @@ gl_FragCoord origin is upper left 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r039' (temp 4X4 matrix of float) -0:421 hyp. sine (global 4X4 matrix of float) +0:421 hyp. sine (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r049' (temp 4X4 matrix of float) -0:421 smoothstep (global 4X4 matrix of float) +0:421 smoothstep (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 'inF2' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r041' (temp 4X4 matrix of float) -0:421 sqrt (global 4X4 matrix of float) +0:421 sqrt (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r042' (temp 4X4 matrix of float) -0:421 step (global 4X4 matrix of float) +0:421 step (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 'inF1' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r043' (temp 4X4 matrix of float) -0:421 tangent (global 4X4 matrix of float) +0:421 tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r044' (temp 4X4 matrix of float) -0:421 hyp. tangent (global 4X4 matrix of float) +0:421 hyp. tangent (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) -0:421 transpose (global 4X4 matrix of float) +0:421 transpose (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:421 Sequence 0:421 move second child to first child (temp 4X4 matrix of float) 0:421 'r046' (temp 4X4 matrix of float) -0:421 trunc (global 4X4 matrix of float) +0:421 trunc (temp 4X4 matrix of float) 0:421 'inF0' (in 4X4 matrix of float) 0:424 Branch: Return with expression 0:? Constant: @@ -5287,7 +5287,7 @@ gl_FragCoord origin is upper left 0:443 Sequence 0:443 move second child to first child (temp float) 0:443 'r3' (temp float) -0:443 dot-product (global float) +0:443 dot-product (temp float) 0:443 'inFV0' (in 2-component vector of float) 0:443 'inFV1' (in 2-component vector of float) 0:443 Sequence @@ -5350,7 +5350,7 @@ gl_FragCoord origin is upper left 0:450 Sequence 0:450 move second child to first child (temp float) 0:450 'r3' (temp float) -0:450 dot-product (global float) +0:450 dot-product (temp float) 0:450 'inFV0' (in 3-component vector of float) 0:450 'inFV1' (in 3-component vector of float) 0:450 Sequence @@ -5413,7 +5413,7 @@ gl_FragCoord origin is upper left 0:457 Sequence 0:457 move second child to first child (temp float) 0:457 'r3' (temp float) -0:457 dot-product (global float) +0:457 dot-product (temp float) 0:457 'inFV0' (in 4-component vector of float) 0:457 'inFV1' (in 4-component vector of float) 0:457 Sequence @@ -5491,13 +5491,13 @@ gl_FragCoord origin is upper left 0:472 Sequence 0:472 move second child to first child (temp float) 0:472 'r05' (temp float) -0:472 dot-product (global float) +0:472 dot-product (temp float) 0:472 'inFV2' (in 2-component vector of float) 0:472 'inFV2' (in 2-component vector of float) 0:473 Sequence 0:473 move second child to first child (temp float) 0:473 'r06' (temp float) -0:473 dot-product (global float) +0:473 dot-product (temp float) 0:473 'inFV3' (in 3-component vector of float) 0:473 'inFV3' (in 3-component vector of float) 0:474 Sequence diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out index 29ee0095..e2750543 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.frag.out +++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out @@ -78,36 +78,36 @@ ERROR: node is still EOpNull! 0:5 'inF0' (in float) 0:5 Convert float to uint (temp uint) 0:5 'inF1' (in float) -0:6 Function Call: CheckAccessFullyMapped(u1; (global bool) +0:6 Function Call: CheckAccessFullyMapped(u1; (temp bool) 0:6 Constant: 0:6 3 (const uint) -0:7 bitCount (global uint) +0:7 bitCount (temp uint) 0:7 Convert float to uint (temp uint) 0:7 'inF0' (in float) -0:8 cross-product (global 3-component vector of float) +0:8 cross-product (temp 3-component vector of float) 0:8 Construct vec3 (in 3-component vector of float) 0:8 'inF0' (in float) 0:8 Construct vec3 (in 3-component vector of float) 0:8 'inF1' (in float) -0:9 Function Call: D3DCOLORtoUBYTE4(vf4; (global 4-component vector of int) +0:9 Function Call: D3DCOLORtoUBYTE4(vf4; (temp 4-component vector of int) 0:9 Construct vec4 (in 4-component vector of float) 0:9 'inF0' (in float) 0:10 Constant: 0:10 0.000000 0:12 ERROR: Bad unary op - (global float) + (temp float) 0:12 Convert float to uint (temp uint) 0:12 'inF0' (in float) -0:13 findMSB (global uint) +0:13 findMSB (temp uint) 0:13 Convert float to uint (temp uint) 0:13 'inF0' (in float) -0:14 findLSB (global uint) +0:14 findLSB (temp uint) 0:14 Convert float to uint (temp uint) 0:14 'inF0' (in float) -0:23 length (global float) +0:23 length (temp float) 0:23 Construct vec2 (in 2-component vector of float) 0:23 'inF0' (in float) -0:24 Function Call: msad4(u1;vu2;vu4; (global 4-component vector of uint) +0:24 Function Call: msad4(u1;vu2;vu4; (temp 4-component vector of uint) 0:24 Convert float to uint (temp uint) 0:24 'inF0' (in float) 0:24 Constant: @@ -118,15 +118,15 @@ ERROR: node is still EOpNull! 0:24 0 (const uint) 0:24 0 (const uint) 0:24 0 (const uint) -0:25 normalize (global 2-component vector of float) +0:25 normalize (temp 2-component vector of float) 0:25 Construct vec2 (in 2-component vector of float) 0:25 'inF0' (in float) -0:26 reflect (global 2-component vector of float) +0:26 reflect (temp 2-component vector of float) 0:26 Construct vec2 (in 2-component vector of float) 0:26 'inF0' (in float) 0:26 Construct vec2 (in 2-component vector of float) 0:26 'inF1' (in float) -0:27 refract (global 2-component vector of float) +0:27 refract (temp 2-component vector of float) 0:27 Construct vec2 (in 2-component vector of float) 0:27 'inF0' (in float) 0:27 Construct vec2 (in 2-component vector of float) @@ -134,7 +134,7 @@ ERROR: node is still EOpNull! 0:27 'inF2' (in float) 0:28 Constant: 0:28 0.000000 -0:29 bitFieldReverse (global uint) +0:29 bitFieldReverse (temp uint) 0:29 Convert float to uint (temp uint) 0:29 'inF0' (in float) 0:30 Constant: @@ -162,14 +162,14 @@ ERROR: node is still EOpNull! 0:45 'inI0' (in 2-component vector of int) 0:? Sequence 0:46 ERROR: Bad aggregation op - (global 2-component vector of double) + (temp 2-component vector of double) 0:46 Convert float to uint (temp 2-component vector of uint) 0:46 'inF0' (in 2-component vector of float) 0:46 Convert float to uint (temp 2-component vector of uint) 0:46 'inF1' (in 2-component vector of float) 0:47 Constant: 0:47 0.000000 -0:48 bitCount (global 2-component vector of uint) +0:48 bitCount (temp 2-component vector of uint) 0:48 Convert float to uint (temp 2-component vector of uint) 0:48 'inF0' (in 2-component vector of float) 0:49 Constant: @@ -179,16 +179,16 @@ ERROR: node is still EOpNull! 0:51 Constant: 0:51 0.000000 0:52 ERROR: Bad unary op - (global 2-component vector of float) + (temp 2-component vector of float) 0:52 Convert float to uint (temp 2-component vector of uint) 0:52 'inF0' (in 2-component vector of float) -0:53 findMSB (global 2-component vector of uint) +0:53 findMSB (temp 2-component vector of uint) 0:53 Convert float to uint (temp 2-component vector of uint) 0:53 'inF0' (in 2-component vector of float) -0:54 findLSB (global 2-component vector of uint) +0:54 findLSB (temp 2-component vector of uint) 0:54 Convert float to uint (temp 2-component vector of uint) 0:54 'inF0' (in 2-component vector of float) -0:56 bitFieldReverse (global 2-component vector of uint) +0:56 bitFieldReverse (temp 2-component vector of uint) 0:56 Convert float to uint (temp 2-component vector of uint) 0:56 'inF0' (in 2-component vector of float) 0:57 Constant: @@ -206,7 +206,7 @@ ERROR: node is still EOpNull! 0:? Sequence 0:64 Constant: 0:64 0.000000 -0:65 bitCount (global 3-component vector of uint) +0:65 bitCount (temp 3-component vector of uint) 0:65 Convert float to uint (temp 3-component vector of uint) 0:65 'inF0' (in 3-component vector of float) 0:66 Constant: @@ -214,16 +214,16 @@ ERROR: node is still EOpNull! 0:67 Constant: 0:67 0.000000 0:68 ERROR: Bad unary op - (global 3-component vector of float) + (temp 3-component vector of float) 0:68 Convert float to uint (temp 3-component vector of uint) 0:68 'inF0' (in 3-component vector of float) -0:69 findMSB (global 3-component vector of uint) +0:69 findMSB (temp 3-component vector of uint) 0:69 Convert float to uint (temp 3-component vector of uint) 0:69 'inF0' (in 3-component vector of float) -0:70 findLSB (global 3-component vector of uint) +0:70 findLSB (temp 3-component vector of uint) 0:70 Convert float to uint (temp 3-component vector of uint) 0:70 'inF0' (in 3-component vector of float) -0:72 bitFieldReverse (global 3-component vector of uint) +0:72 bitFieldReverse (temp 3-component vector of uint) 0:72 Convert float to uint (temp 3-component vector of uint) 0:72 'inF0' (in 3-component vector of float) 0:73 Constant: @@ -242,10 +242,10 @@ ERROR: node is still EOpNull! 0:? Sequence 0:81 Constant: 0:81 0.000000 -0:82 bitCount (global 4-component vector of uint) +0:82 bitCount (temp 4-component vector of uint) 0:82 Convert float to uint (temp 4-component vector of uint) 0:82 'inF0' (layout(location=0 ) in 4-component vector of float) -0:83 cross-product (global 3-component vector of float) +0:83 cross-product (temp 3-component vector of float) 0:83 Construct vec3 (in 3-component vector of float) 0:83 'inF0' (layout(location=0 ) in 4-component vector of float) 0:83 Construct vec3 (in 3-component vector of float) @@ -253,16 +253,16 @@ ERROR: node is still EOpNull! 0:84 Constant: 0:84 0.000000 0:85 ERROR: Bad unary op - (global 4-component vector of float) + (temp 4-component vector of float) 0:85 Convert float to uint (temp 4-component vector of uint) 0:85 'inF0' (layout(location=0 ) in 4-component vector of float) -0:86 findMSB (global 4-component vector of uint) +0:86 findMSB (temp 4-component vector of uint) 0:86 Convert float to uint (temp 4-component vector of uint) 0:86 'inF0' (layout(location=0 ) in 4-component vector of float) -0:87 findLSB (global 4-component vector of uint) +0:87 findLSB (temp 4-component vector of uint) 0:87 Convert float to uint (temp 4-component vector of uint) 0:87 'inF0' (layout(location=0 ) in 4-component vector of float) -0:89 bitFieldReverse (global 4-component vector of uint) +0:89 bitFieldReverse (temp 4-component vector of uint) 0:89 Convert float to uint (temp 4-component vector of uint) 0:89 'inF0' (layout(location=0 ) in 4-component vector of float) 0:90 Constant: @@ -434,36 +434,36 @@ ERROR: node is still EOpNull! 0:5 'inF0' (in float) 0:5 Convert float to uint (temp uint) 0:5 'inF1' (in float) -0:6 Function Call: CheckAccessFullyMapped(u1; (global bool) +0:6 Function Call: CheckAccessFullyMapped(u1; (temp bool) 0:6 Constant: 0:6 3 (const uint) -0:7 bitCount (global uint) +0:7 bitCount (temp uint) 0:7 Convert float to uint (temp uint) 0:7 'inF0' (in float) -0:8 cross-product (global 3-component vector of float) +0:8 cross-product (temp 3-component vector of float) 0:8 Construct vec3 (in 3-component vector of float) 0:8 'inF0' (in float) 0:8 Construct vec3 (in 3-component vector of float) 0:8 'inF1' (in float) -0:9 Function Call: D3DCOLORtoUBYTE4(vf4; (global 4-component vector of int) +0:9 Function Call: D3DCOLORtoUBYTE4(vf4; (temp 4-component vector of int) 0:9 Construct vec4 (in 4-component vector of float) 0:9 'inF0' (in float) 0:10 Constant: 0:10 0.000000 0:12 ERROR: Bad unary op - (global float) + (temp float) 0:12 Convert float to uint (temp uint) 0:12 'inF0' (in float) -0:13 findMSB (global uint) +0:13 findMSB (temp uint) 0:13 Convert float to uint (temp uint) 0:13 'inF0' (in float) -0:14 findLSB (global uint) +0:14 findLSB (temp uint) 0:14 Convert float to uint (temp uint) 0:14 'inF0' (in float) -0:23 length (global float) +0:23 length (temp float) 0:23 Construct vec2 (in 2-component vector of float) 0:23 'inF0' (in float) -0:24 Function Call: msad4(u1;vu2;vu4; (global 4-component vector of uint) +0:24 Function Call: msad4(u1;vu2;vu4; (temp 4-component vector of uint) 0:24 Convert float to uint (temp uint) 0:24 'inF0' (in float) 0:24 Constant: @@ -474,15 +474,15 @@ ERROR: node is still EOpNull! 0:24 0 (const uint) 0:24 0 (const uint) 0:24 0 (const uint) -0:25 normalize (global 2-component vector of float) +0:25 normalize (temp 2-component vector of float) 0:25 Construct vec2 (in 2-component vector of float) 0:25 'inF0' (in float) -0:26 reflect (global 2-component vector of float) +0:26 reflect (temp 2-component vector of float) 0:26 Construct vec2 (in 2-component vector of float) 0:26 'inF0' (in float) 0:26 Construct vec2 (in 2-component vector of float) 0:26 'inF1' (in float) -0:27 refract (global 2-component vector of float) +0:27 refract (temp 2-component vector of float) 0:27 Construct vec2 (in 2-component vector of float) 0:27 'inF0' (in float) 0:27 Construct vec2 (in 2-component vector of float) @@ -490,7 +490,7 @@ ERROR: node is still EOpNull! 0:27 'inF2' (in float) 0:28 Constant: 0:28 0.000000 -0:29 bitFieldReverse (global uint) +0:29 bitFieldReverse (temp uint) 0:29 Convert float to uint (temp uint) 0:29 'inF0' (in float) 0:30 Constant: @@ -518,14 +518,14 @@ ERROR: node is still EOpNull! 0:45 'inI0' (in 2-component vector of int) 0:? Sequence 0:46 ERROR: Bad aggregation op - (global 2-component vector of double) + (temp 2-component vector of double) 0:46 Convert float to uint (temp 2-component vector of uint) 0:46 'inF0' (in 2-component vector of float) 0:46 Convert float to uint (temp 2-component vector of uint) 0:46 'inF1' (in 2-component vector of float) 0:47 Constant: 0:47 0.000000 -0:48 bitCount (global 2-component vector of uint) +0:48 bitCount (temp 2-component vector of uint) 0:48 Convert float to uint (temp 2-component vector of uint) 0:48 'inF0' (in 2-component vector of float) 0:49 Constant: @@ -535,16 +535,16 @@ ERROR: node is still EOpNull! 0:51 Constant: 0:51 0.000000 0:52 ERROR: Bad unary op - (global 2-component vector of float) + (temp 2-component vector of float) 0:52 Convert float to uint (temp 2-component vector of uint) 0:52 'inF0' (in 2-component vector of float) -0:53 findMSB (global 2-component vector of uint) +0:53 findMSB (temp 2-component vector of uint) 0:53 Convert float to uint (temp 2-component vector of uint) 0:53 'inF0' (in 2-component vector of float) -0:54 findLSB (global 2-component vector of uint) +0:54 findLSB (temp 2-component vector of uint) 0:54 Convert float to uint (temp 2-component vector of uint) 0:54 'inF0' (in 2-component vector of float) -0:56 bitFieldReverse (global 2-component vector of uint) +0:56 bitFieldReverse (temp 2-component vector of uint) 0:56 Convert float to uint (temp 2-component vector of uint) 0:56 'inF0' (in 2-component vector of float) 0:57 Constant: @@ -562,7 +562,7 @@ ERROR: node is still EOpNull! 0:? Sequence 0:64 Constant: 0:64 0.000000 -0:65 bitCount (global 3-component vector of uint) +0:65 bitCount (temp 3-component vector of uint) 0:65 Convert float to uint (temp 3-component vector of uint) 0:65 'inF0' (in 3-component vector of float) 0:66 Constant: @@ -570,16 +570,16 @@ ERROR: node is still EOpNull! 0:67 Constant: 0:67 0.000000 0:68 ERROR: Bad unary op - (global 3-component vector of float) + (temp 3-component vector of float) 0:68 Convert float to uint (temp 3-component vector of uint) 0:68 'inF0' (in 3-component vector of float) -0:69 findMSB (global 3-component vector of uint) +0:69 findMSB (temp 3-component vector of uint) 0:69 Convert float to uint (temp 3-component vector of uint) 0:69 'inF0' (in 3-component vector of float) -0:70 findLSB (global 3-component vector of uint) +0:70 findLSB (temp 3-component vector of uint) 0:70 Convert float to uint (temp 3-component vector of uint) 0:70 'inF0' (in 3-component vector of float) -0:72 bitFieldReverse (global 3-component vector of uint) +0:72 bitFieldReverse (temp 3-component vector of uint) 0:72 Convert float to uint (temp 3-component vector of uint) 0:72 'inF0' (in 3-component vector of float) 0:73 Constant: @@ -598,10 +598,10 @@ ERROR: node is still EOpNull! 0:? Sequence 0:81 Constant: 0:81 0.000000 -0:82 bitCount (global 4-component vector of uint) +0:82 bitCount (temp 4-component vector of uint) 0:82 Convert float to uint (temp 4-component vector of uint) 0:82 'inF0' (layout(location=0 ) in 4-component vector of float) -0:83 cross-product (global 3-component vector of float) +0:83 cross-product (temp 3-component vector of float) 0:83 Construct vec3 (in 3-component vector of float) 0:83 'inF0' (layout(location=0 ) in 4-component vector of float) 0:83 Construct vec3 (in 3-component vector of float) @@ -609,16 +609,16 @@ ERROR: node is still EOpNull! 0:84 Constant: 0:84 0.000000 0:85 ERROR: Bad unary op - (global 4-component vector of float) + (temp 4-component vector of float) 0:85 Convert float to uint (temp 4-component vector of uint) 0:85 'inF0' (layout(location=0 ) in 4-component vector of float) -0:86 findMSB (global 4-component vector of uint) +0:86 findMSB (temp 4-component vector of uint) 0:86 Convert float to uint (temp 4-component vector of uint) 0:86 'inF0' (layout(location=0 ) in 4-component vector of float) -0:87 findLSB (global 4-component vector of uint) +0:87 findLSB (temp 4-component vector of uint) 0:87 Convert float to uint (temp 4-component vector of uint) 0:87 'inF0' (layout(location=0 ) in 4-component vector of float) -0:89 bitFieldReverse (global 4-component vector of uint) +0:89 bitFieldReverse (temp 4-component vector of uint) 0:89 Convert float to uint (temp 4-component vector of uint) 0:89 'inF0' (layout(location=0 ) in 4-component vector of float) 0:90 Constant: diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out index 811a752d..7e7a5119 100644 --- a/Test/baseResults/hlsl.intrinsics.vert.out +++ b/Test/baseResults/hlsl.intrinsics.vert.out @@ -9,99 +9,99 @@ Shader version: 450 0:2 'inU0' (in uint) 0:2 'inU1' (in uint) 0:? Sequence -0:3 all (global bool) +0:3 all (temp bool) 0:3 'inF0' (in float) -0:4 Absolute value (global float) +0:4 Absolute value (temp float) 0:4 'inF0' (in float) -0:5 arc cosine (global float) +0:5 arc cosine (temp float) 0:5 'inF0' (in float) -0:6 any (global bool) +0:6 any (temp bool) 0:6 'inF0' (in float) -0:7 arc sine (global float) +0:7 arc sine (temp float) 0:7 'inF0' (in float) -0:8 floatBitsToInt (global int) +0:8 floatBitsToInt (temp int) 0:8 'inF0' (in float) -0:9 floatBitsToUint (global uint) +0:9 floatBitsToUint (temp uint) 0:9 'inF0' (in float) -0:10 intBitsToFloat (global float) +0:10 intBitsToFloat (temp float) 0:10 'inU0' (in uint) -0:12 arc tangent (global float) +0:12 arc tangent (temp float) 0:12 'inF0' (in float) -0:13 arc tangent (global float) +0:13 arc tangent (temp float) 0:13 'inF0' (in float) 0:13 'inF1' (in float) -0:14 Ceiling (global float) +0:14 Ceiling (temp float) 0:14 'inF0' (in float) -0:15 clamp (global float) +0:15 clamp (temp float) 0:15 'inF0' (in float) 0:15 'inF1' (in float) 0:15 'inF2' (in float) -0:16 cosine (global float) +0:16 cosine (temp float) 0:16 'inF0' (in float) -0:17 hyp. cosine (global float) +0:17 hyp. cosine (temp float) 0:17 'inF0' (in float) -0:18 bitCount (global uint) +0:18 bitCount (temp uint) 0:18 Constant: 0:18 7 (const uint) -0:19 degrees (global float) +0:19 degrees (temp float) 0:19 'inF0' (in float) -0:23 exp (global float) +0:23 exp (temp float) 0:23 'inF0' (in float) -0:24 exp2 (global float) +0:24 exp2 (temp float) 0:24 'inF0' (in float) -0:25 findMSB (global int) +0:25 findMSB (temp int) 0:25 Constant: 0:25 7 (const int) -0:26 findLSB (global int) +0:26 findLSB (temp int) 0:26 Constant: 0:26 7 (const int) -0:27 Floor (global float) +0:27 Floor (temp float) 0:27 'inF0' (in float) -0:29 mod (global float) +0:29 mod (temp float) 0:29 'inF0' (in float) 0:29 'inF1' (in float) -0:30 Fraction (global float) +0:30 Fraction (temp float) 0:30 'inF0' (in float) -0:31 frexp (global float) +0:31 frexp (temp float) 0:31 'inF0' (in float) 0:31 'inF1' (in float) -0:32 isinf (global bool) +0:32 isinf (temp bool) 0:32 'inF0' (in float) -0:33 isnan (global bool) +0:33 isnan (temp bool) 0:33 'inF0' (in float) -0:34 ldexp (global float) +0:34 ldexp (temp float) 0:34 'inF0' (in float) 0:34 'inF1' (in float) -0:35 mix (global float) +0:35 mix (temp float) 0:35 'inF0' (in float) 0:35 'inF1' (in float) 0:35 'inF2' (in float) -0:36 log (global float) +0:36 log (temp float) 0:36 'inF0' (in float) 0:37 component-wise multiply (temp float) 0:37 log2 (temp float) 0:37 'inF0' (in float) 0:37 Constant: 0:37 0.301030 -0:38 log2 (global float) +0:38 log2 (temp float) 0:38 'inF0' (in float) -0:39 max (global float) +0:39 max (temp float) 0:39 'inF0' (in float) 0:39 'inF1' (in float) -0:40 min (global float) +0:40 min (temp float) 0:40 'inF0' (in float) 0:40 'inF1' (in float) -0:42 pow (global float) +0:42 pow (temp float) 0:42 'inF0' (in float) 0:42 'inF1' (in float) -0:43 radians (global float) +0:43 radians (temp float) 0:43 'inF0' (in float) -0:44 bitFieldReverse (global uint) +0:44 bitFieldReverse (temp uint) 0:44 Constant: 0:44 2 (const uint) -0:45 roundEven (global float) +0:45 roundEven (temp float) 0:45 'inF0' (in float) -0:46 inverse sqrt (global float) +0:46 inverse sqrt (temp float) 0:46 'inF0' (in float) 0:47 clamp (temp float) 0:47 'inF0' (in float) @@ -109,9 +109,9 @@ Shader version: 450 0:47 0.000000 0:47 Constant: 0:47 1.000000 -0:48 Sign (global float) +0:48 Sign (temp float) 0:48 'inF0' (in float) -0:49 sine (global float) +0:49 sine (temp float) 0:49 'inF0' (in float) 0:50 Sequence 0:50 move second child to first child (temp float) @@ -122,22 +122,22 @@ Shader version: 450 0:50 'inF2' (in float) 0:50 cosine (temp float) 0:50 'inF0' (in float) -0:51 hyp. sine (global float) +0:51 hyp. sine (temp float) 0:51 'inF0' (in float) -0:52 smoothstep (global float) +0:52 smoothstep (temp float) 0:52 'inF0' (in float) 0:52 'inF1' (in float) 0:52 'inF2' (in float) -0:53 sqrt (global float) +0:53 sqrt (temp float) 0:53 'inF0' (in float) -0:54 step (global float) +0:54 step (temp float) 0:54 'inF0' (in float) 0:54 'inF1' (in float) -0:55 tangent (global float) +0:55 tangent (temp float) 0:55 'inF0' (in float) -0:56 hyp. tangent (global float) +0:56 hyp. tangent (temp float) 0:56 'inF0' (in float) -0:58 trunc (global float) +0:58 trunc (temp float) 0:58 'inF0' (in float) 0:60 Branch: Return with expression 0:60 Constant: @@ -159,123 +159,123 @@ Shader version: 450 0:70 'inU0' (in 2-component vector of uint) 0:70 'inU1' (in 2-component vector of uint) 0:? Sequence -0:71 all (global bool) +0:71 all (temp bool) 0:71 'inF0' (in 2-component vector of float) -0:72 Absolute value (global 2-component vector of float) +0:72 Absolute value (temp 2-component vector of float) 0:72 'inF0' (in 2-component vector of float) -0:73 arc cosine (global 2-component vector of float) +0:73 arc cosine (temp 2-component vector of float) 0:73 'inF0' (in 2-component vector of float) -0:74 any (global bool) +0:74 any (temp bool) 0:74 'inF0' (in 2-component vector of float) -0:75 arc sine (global 2-component vector of float) +0:75 arc sine (temp 2-component vector of float) 0:75 'inF0' (in 2-component vector of float) -0:76 floatBitsToInt (global 2-component vector of int) +0:76 floatBitsToInt (temp 2-component vector of int) 0:76 'inF0' (in 2-component vector of float) -0:77 floatBitsToUint (global 2-component vector of uint) +0:77 floatBitsToUint (temp 2-component vector of uint) 0:77 'inF0' (in 2-component vector of float) -0:78 intBitsToFloat (global 2-component vector of float) +0:78 intBitsToFloat (temp 2-component vector of float) 0:78 'inU0' (in 2-component vector of uint) -0:80 arc tangent (global 2-component vector of float) +0:80 arc tangent (temp 2-component vector of float) 0:80 'inF0' (in 2-component vector of float) -0:81 arc tangent (global 2-component vector of float) +0:81 arc tangent (temp 2-component vector of float) 0:81 'inF0' (in 2-component vector of float) 0:81 'inF1' (in 2-component vector of float) -0:82 Ceiling (global 2-component vector of float) +0:82 Ceiling (temp 2-component vector of float) 0:82 'inF0' (in 2-component vector of float) -0:83 clamp (global 2-component vector of float) +0:83 clamp (temp 2-component vector of float) 0:83 'inF0' (in 2-component vector of float) 0:83 'inF1' (in 2-component vector of float) 0:83 'inF2' (in 2-component vector of float) -0:84 cosine (global 2-component vector of float) +0:84 cosine (temp 2-component vector of float) 0:84 'inF0' (in 2-component vector of float) -0:85 hyp. cosine (global 2-component vector of float) +0:85 hyp. cosine (temp 2-component vector of float) 0:85 'inF0' (in 2-component vector of float) -0:? bitCount (global 2-component vector of uint) +0:? bitCount (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) -0:87 degrees (global 2-component vector of float) +0:87 degrees (temp 2-component vector of float) 0:87 'inF0' (in 2-component vector of float) -0:88 distance (global float) +0:88 distance (temp float) 0:88 'inF0' (in 2-component vector of float) 0:88 'inF1' (in 2-component vector of float) -0:89 dot-product (global float) +0:89 dot-product (temp float) 0:89 'inF0' (in 2-component vector of float) 0:89 'inF1' (in 2-component vector of float) -0:93 exp (global 2-component vector of float) +0:93 exp (temp 2-component vector of float) 0:93 'inF0' (in 2-component vector of float) -0:94 exp2 (global 2-component vector of float) +0:94 exp2 (temp 2-component vector of float) 0:94 'inF0' (in 2-component vector of float) -0:95 face-forward (global 2-component vector of float) +0:95 face-forward (temp 2-component vector of float) 0:95 'inF0' (in 2-component vector of float) 0:95 'inF1' (in 2-component vector of float) 0:95 'inF2' (in 2-component vector of float) -0:96 findMSB (global int) +0:96 findMSB (temp int) 0:96 Constant: 0:96 7 (const int) -0:97 findLSB (global int) +0:97 findLSB (temp int) 0:97 Constant: 0:97 7 (const int) -0:98 Floor (global 2-component vector of float) +0:98 Floor (temp 2-component vector of float) 0:98 'inF0' (in 2-component vector of float) -0:100 mod (global 2-component vector of float) +0:100 mod (temp 2-component vector of float) 0:100 'inF0' (in 2-component vector of float) 0:100 'inF1' (in 2-component vector of float) -0:101 Fraction (global 2-component vector of float) +0:101 Fraction (temp 2-component vector of float) 0:101 'inF0' (in 2-component vector of float) -0:102 frexp (global 2-component vector of float) +0:102 frexp (temp 2-component vector of float) 0:102 'inF0' (in 2-component vector of float) 0:102 'inF1' (in 2-component vector of float) -0:103 isinf (global 2-component vector of bool) +0:103 isinf (temp 2-component vector of bool) 0:103 'inF0' (in 2-component vector of float) -0:104 isnan (global 2-component vector of bool) +0:104 isnan (temp 2-component vector of bool) 0:104 'inF0' (in 2-component vector of float) -0:105 ldexp (global 2-component vector of float) +0:105 ldexp (temp 2-component vector of float) 0:105 'inF0' (in 2-component vector of float) 0:105 'inF1' (in 2-component vector of float) -0:106 mix (global 2-component vector of float) +0:106 mix (temp 2-component vector of float) 0:106 'inF0' (in 2-component vector of float) 0:106 'inF1' (in 2-component vector of float) 0:106 'inF2' (in 2-component vector of float) -0:107 length (global float) +0:107 length (temp float) 0:107 'inF0' (in 2-component vector of float) -0:108 log (global 2-component vector of float) +0:108 log (temp 2-component vector of float) 0:108 'inF0' (in 2-component vector of float) 0:109 vector-scale (temp 2-component vector of float) 0:109 log2 (temp 2-component vector of float) 0:109 'inF0' (in 2-component vector of float) 0:109 Constant: 0:109 0.301030 -0:110 log2 (global 2-component vector of float) +0:110 log2 (temp 2-component vector of float) 0:110 'inF0' (in 2-component vector of float) -0:111 max (global 2-component vector of float) +0:111 max (temp 2-component vector of float) 0:111 'inF0' (in 2-component vector of float) 0:111 'inF1' (in 2-component vector of float) -0:112 min (global 2-component vector of float) +0:112 min (temp 2-component vector of float) 0:112 'inF0' (in 2-component vector of float) 0:112 'inF1' (in 2-component vector of float) -0:114 normalize (global 2-component vector of float) +0:114 normalize (temp 2-component vector of float) 0:114 'inF0' (in 2-component vector of float) -0:115 pow (global 2-component vector of float) +0:115 pow (temp 2-component vector of float) 0:115 'inF0' (in 2-component vector of float) 0:115 'inF1' (in 2-component vector of float) -0:116 radians (global 2-component vector of float) +0:116 radians (temp 2-component vector of float) 0:116 'inF0' (in 2-component vector of float) -0:117 reflect (global 2-component vector of float) +0:117 reflect (temp 2-component vector of float) 0:117 'inF0' (in 2-component vector of float) 0:117 'inF1' (in 2-component vector of float) -0:118 refract (global 2-component vector of float) +0:118 refract (temp 2-component vector of float) 0:118 'inF0' (in 2-component vector of float) 0:118 'inF1' (in 2-component vector of float) 0:118 Constant: 0:118 2.000000 -0:? bitFieldReverse (global 2-component vector of uint) +0:? bitFieldReverse (temp 2-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) -0:120 roundEven (global 2-component vector of float) +0:120 roundEven (temp 2-component vector of float) 0:120 'inF0' (in 2-component vector of float) -0:121 inverse sqrt (global 2-component vector of float) +0:121 inverse sqrt (temp 2-component vector of float) 0:121 'inF0' (in 2-component vector of float) 0:122 clamp (temp 2-component vector of float) 0:122 'inF0' (in 2-component vector of float) @@ -283,9 +283,9 @@ Shader version: 450 0:122 0.000000 0:122 Constant: 0:122 1.000000 -0:123 Sign (global 2-component vector of float) +0:123 Sign (temp 2-component vector of float) 0:123 'inF0' (in 2-component vector of float) -0:124 sine (global 2-component vector of float) +0:124 sine (temp 2-component vector of float) 0:124 'inF0' (in 2-component vector of float) 0:125 Sequence 0:125 move second child to first child (temp 2-component vector of float) @@ -296,22 +296,22 @@ Shader version: 450 0:125 'inF2' (in 2-component vector of float) 0:125 cosine (temp 2-component vector of float) 0:125 'inF0' (in 2-component vector of float) -0:126 hyp. sine (global 2-component vector of float) +0:126 hyp. sine (temp 2-component vector of float) 0:126 'inF0' (in 2-component vector of float) -0:127 smoothstep (global 2-component vector of float) +0:127 smoothstep (temp 2-component vector of float) 0:127 'inF0' (in 2-component vector of float) 0:127 'inF1' (in 2-component vector of float) 0:127 'inF2' (in 2-component vector of float) -0:128 sqrt (global 2-component vector of float) +0:128 sqrt (temp 2-component vector of float) 0:128 'inF0' (in 2-component vector of float) -0:129 step (global 2-component vector of float) +0:129 step (temp 2-component vector of float) 0:129 'inF0' (in 2-component vector of float) 0:129 'inF1' (in 2-component vector of float) -0:130 tangent (global 2-component vector of float) +0:130 tangent (temp 2-component vector of float) 0:130 'inF0' (in 2-component vector of float) -0:131 hyp. tangent (global 2-component vector of float) +0:131 hyp. tangent (temp 2-component vector of float) 0:131 'inF0' (in 2-component vector of float) -0:133 trunc (global 2-component vector of float) +0:133 trunc (temp 2-component vector of float) 0:133 'inF0' (in 2-component vector of float) 0:136 Branch: Return with expression 0:? Constant: @@ -325,128 +325,128 @@ Shader version: 450 0:140 'inU0' (in 3-component vector of uint) 0:140 'inU1' (in 3-component vector of uint) 0:? Sequence -0:141 all (global bool) +0:141 all (temp bool) 0:141 'inF0' (in 3-component vector of float) -0:142 Absolute value (global 3-component vector of float) +0:142 Absolute value (temp 3-component vector of float) 0:142 'inF0' (in 3-component vector of float) -0:143 arc cosine (global 3-component vector of float) +0:143 arc cosine (temp 3-component vector of float) 0:143 'inF0' (in 3-component vector of float) -0:144 any (global bool) +0:144 any (temp bool) 0:144 'inF0' (in 3-component vector of float) -0:145 arc sine (global 3-component vector of float) +0:145 arc sine (temp 3-component vector of float) 0:145 'inF0' (in 3-component vector of float) -0:146 floatBitsToInt (global 3-component vector of int) +0:146 floatBitsToInt (temp 3-component vector of int) 0:146 'inF0' (in 3-component vector of float) -0:147 floatBitsToUint (global 3-component vector of uint) +0:147 floatBitsToUint (temp 3-component vector of uint) 0:147 'inF0' (in 3-component vector of float) -0:148 intBitsToFloat (global 3-component vector of float) +0:148 intBitsToFloat (temp 3-component vector of float) 0:148 'inU0' (in 3-component vector of uint) -0:150 arc tangent (global 3-component vector of float) +0:150 arc tangent (temp 3-component vector of float) 0:150 'inF0' (in 3-component vector of float) -0:151 arc tangent (global 3-component vector of float) +0:151 arc tangent (temp 3-component vector of float) 0:151 'inF0' (in 3-component vector of float) 0:151 'inF1' (in 3-component vector of float) -0:152 Ceiling (global 3-component vector of float) +0:152 Ceiling (temp 3-component vector of float) 0:152 'inF0' (in 3-component vector of float) -0:153 clamp (global 3-component vector of float) +0:153 clamp (temp 3-component vector of float) 0:153 'inF0' (in 3-component vector of float) 0:153 'inF1' (in 3-component vector of float) 0:153 'inF2' (in 3-component vector of float) -0:154 cosine (global 3-component vector of float) +0:154 cosine (temp 3-component vector of float) 0:154 'inF0' (in 3-component vector of float) -0:155 hyp. cosine (global 3-component vector of float) +0:155 hyp. cosine (temp 3-component vector of float) 0:155 'inF0' (in 3-component vector of float) -0:? bitCount (global 3-component vector of uint) +0:? bitCount (temp 3-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) -0:157 cross-product (global 3-component vector of float) +0:157 cross-product (temp 3-component vector of float) 0:157 'inF0' (in 3-component vector of float) 0:157 'inF1' (in 3-component vector of float) -0:158 degrees (global 3-component vector of float) +0:158 degrees (temp 3-component vector of float) 0:158 'inF0' (in 3-component vector of float) -0:159 distance (global float) +0:159 distance (temp float) 0:159 'inF0' (in 3-component vector of float) 0:159 'inF1' (in 3-component vector of float) -0:160 dot-product (global float) +0:160 dot-product (temp float) 0:160 'inF0' (in 3-component vector of float) 0:160 'inF1' (in 3-component vector of float) -0:164 exp (global 3-component vector of float) +0:164 exp (temp 3-component vector of float) 0:164 'inF0' (in 3-component vector of float) -0:165 exp2 (global 3-component vector of float) +0:165 exp2 (temp 3-component vector of float) 0:165 'inF0' (in 3-component vector of float) -0:166 face-forward (global 3-component vector of float) +0:166 face-forward (temp 3-component vector of float) 0:166 'inF0' (in 3-component vector of float) 0:166 'inF1' (in 3-component vector of float) 0:166 'inF2' (in 3-component vector of float) -0:167 findMSB (global int) +0:167 findMSB (temp int) 0:167 Constant: 0:167 7 (const int) -0:168 findLSB (global int) +0:168 findLSB (temp int) 0:168 Constant: 0:168 7 (const int) -0:169 Floor (global 3-component vector of float) +0:169 Floor (temp 3-component vector of float) 0:169 'inF0' (in 3-component vector of float) -0:171 mod (global 3-component vector of float) +0:171 mod (temp 3-component vector of float) 0:171 'inF0' (in 3-component vector of float) 0:171 'inF1' (in 3-component vector of float) -0:172 Fraction (global 3-component vector of float) +0:172 Fraction (temp 3-component vector of float) 0:172 'inF0' (in 3-component vector of float) -0:173 frexp (global 3-component vector of float) +0:173 frexp (temp 3-component vector of float) 0:173 'inF0' (in 3-component vector of float) 0:173 'inF1' (in 3-component vector of float) -0:174 isinf (global 3-component vector of bool) +0:174 isinf (temp 3-component vector of bool) 0:174 'inF0' (in 3-component vector of float) -0:175 isnan (global 3-component vector of bool) +0:175 isnan (temp 3-component vector of bool) 0:175 'inF0' (in 3-component vector of float) -0:176 ldexp (global 3-component vector of float) +0:176 ldexp (temp 3-component vector of float) 0:176 'inF0' (in 3-component vector of float) 0:176 'inF1' (in 3-component vector of float) -0:177 mix (global 3-component vector of float) +0:177 mix (temp 3-component vector of float) 0:177 'inF0' (in 3-component vector of float) 0:177 'inF1' (in 3-component vector of float) 0:177 'inF2' (in 3-component vector of float) -0:178 length (global float) +0:178 length (temp float) 0:178 'inF0' (in 3-component vector of float) -0:179 log (global 3-component vector of float) +0:179 log (temp 3-component vector of float) 0:179 'inF0' (in 3-component vector of float) 0:180 vector-scale (temp 3-component vector of float) 0:180 log2 (temp 3-component vector of float) 0:180 'inF0' (in 3-component vector of float) 0:180 Constant: 0:180 0.301030 -0:181 log2 (global 3-component vector of float) +0:181 log2 (temp 3-component vector of float) 0:181 'inF0' (in 3-component vector of float) -0:182 max (global 3-component vector of float) +0:182 max (temp 3-component vector of float) 0:182 'inF0' (in 3-component vector of float) 0:182 'inF1' (in 3-component vector of float) -0:183 min (global 3-component vector of float) +0:183 min (temp 3-component vector of float) 0:183 'inF0' (in 3-component vector of float) 0:183 'inF1' (in 3-component vector of float) -0:185 normalize (global 3-component vector of float) +0:185 normalize (temp 3-component vector of float) 0:185 'inF0' (in 3-component vector of float) -0:186 pow (global 3-component vector of float) +0:186 pow (temp 3-component vector of float) 0:186 'inF0' (in 3-component vector of float) 0:186 'inF1' (in 3-component vector of float) -0:187 radians (global 3-component vector of float) +0:187 radians (temp 3-component vector of float) 0:187 'inF0' (in 3-component vector of float) -0:188 reflect (global 3-component vector of float) +0:188 reflect (temp 3-component vector of float) 0:188 'inF0' (in 3-component vector of float) 0:188 'inF1' (in 3-component vector of float) -0:189 refract (global 3-component vector of float) +0:189 refract (temp 3-component vector of float) 0:189 'inF0' (in 3-component vector of float) 0:189 'inF1' (in 3-component vector of float) 0:189 Constant: 0:189 2.000000 -0:? bitFieldReverse (global 3-component vector of uint) +0:? bitFieldReverse (temp 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) -0:191 roundEven (global 3-component vector of float) +0:191 roundEven (temp 3-component vector of float) 0:191 'inF0' (in 3-component vector of float) -0:192 inverse sqrt (global 3-component vector of float) +0:192 inverse sqrt (temp 3-component vector of float) 0:192 'inF0' (in 3-component vector of float) 0:193 clamp (temp 3-component vector of float) 0:193 'inF0' (in 3-component vector of float) @@ -454,9 +454,9 @@ Shader version: 450 0:193 0.000000 0:193 Constant: 0:193 1.000000 -0:194 Sign (global 3-component vector of float) +0:194 Sign (temp 3-component vector of float) 0:194 'inF0' (in 3-component vector of float) -0:195 sine (global 3-component vector of float) +0:195 sine (temp 3-component vector of float) 0:195 'inF0' (in 3-component vector of float) 0:196 Sequence 0:196 move second child to first child (temp 3-component vector of float) @@ -467,22 +467,22 @@ Shader version: 450 0:196 'inF2' (in 3-component vector of float) 0:196 cosine (temp 3-component vector of float) 0:196 'inF0' (in 3-component vector of float) -0:197 hyp. sine (global 3-component vector of float) +0:197 hyp. sine (temp 3-component vector of float) 0:197 'inF0' (in 3-component vector of float) -0:198 smoothstep (global 3-component vector of float) +0:198 smoothstep (temp 3-component vector of float) 0:198 'inF0' (in 3-component vector of float) 0:198 'inF1' (in 3-component vector of float) 0:198 'inF2' (in 3-component vector of float) -0:199 sqrt (global 3-component vector of float) +0:199 sqrt (temp 3-component vector of float) 0:199 'inF0' (in 3-component vector of float) -0:200 step (global 3-component vector of float) +0:200 step (temp 3-component vector of float) 0:200 'inF0' (in 3-component vector of float) 0:200 'inF1' (in 3-component vector of float) -0:201 tangent (global 3-component vector of float) +0:201 tangent (temp 3-component vector of float) 0:201 'inF0' (in 3-component vector of float) -0:202 hyp. tangent (global 3-component vector of float) +0:202 hyp. tangent (temp 3-component vector of float) 0:202 'inF0' (in 3-component vector of float) -0:204 trunc (global 3-component vector of float) +0:204 trunc (temp 3-component vector of float) 0:204 'inF0' (in 3-component vector of float) 0:207 Branch: Return with expression 0:? Constant: @@ -497,49 +497,49 @@ Shader version: 450 0:211 'inU0' (in 4-component vector of uint) 0:211 'inU1' (in 4-component vector of uint) 0:? Sequence -0:212 all (global bool) +0:212 all (temp bool) 0:212 'inF0' (in 4-component vector of float) -0:213 Absolute value (global 4-component vector of float) +0:213 Absolute value (temp 4-component vector of float) 0:213 'inF0' (in 4-component vector of float) -0:214 arc cosine (global 4-component vector of float) +0:214 arc cosine (temp 4-component vector of float) 0:214 'inF0' (in 4-component vector of float) -0:215 any (global bool) +0:215 any (temp bool) 0:215 'inF0' (in 4-component vector of float) -0:216 arc sine (global 4-component vector of float) +0:216 arc sine (temp 4-component vector of float) 0:216 'inF0' (in 4-component vector of float) -0:217 floatBitsToInt (global 4-component vector of int) +0:217 floatBitsToInt (temp 4-component vector of int) 0:217 'inF0' (in 4-component vector of float) -0:218 floatBitsToUint (global 4-component vector of uint) +0:218 floatBitsToUint (temp 4-component vector of uint) 0:218 'inF0' (in 4-component vector of float) -0:219 intBitsToFloat (global 4-component vector of float) +0:219 intBitsToFloat (temp 4-component vector of float) 0:219 'inU0' (in 4-component vector of uint) -0:221 arc tangent (global 4-component vector of float) +0:221 arc tangent (temp 4-component vector of float) 0:221 'inF0' (in 4-component vector of float) -0:222 arc tangent (global 4-component vector of float) +0:222 arc tangent (temp 4-component vector of float) 0:222 'inF0' (in 4-component vector of float) 0:222 'inF1' (in 4-component vector of float) -0:223 Ceiling (global 4-component vector of float) +0:223 Ceiling (temp 4-component vector of float) 0:223 'inF0' (in 4-component vector of float) -0:224 clamp (global 4-component vector of float) +0:224 clamp (temp 4-component vector of float) 0:224 'inF0' (in 4-component vector of float) 0:224 'inF1' (in 4-component vector of float) 0:224 'inF2' (in 4-component vector of float) -0:225 cosine (global 4-component vector of float) +0:225 cosine (temp 4-component vector of float) 0:225 'inF0' (in 4-component vector of float) -0:226 hyp. cosine (global 4-component vector of float) +0:226 hyp. cosine (temp 4-component vector of float) 0:226 'inF0' (in 4-component vector of float) -0:? bitCount (global 4-component vector of uint) +0:? bitCount (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) 0:? 2 (const uint) -0:228 degrees (global 4-component vector of float) +0:228 degrees (temp 4-component vector of float) 0:228 'inF0' (in 4-component vector of float) -0:229 distance (global float) +0:229 distance (temp float) 0:229 'inF0' (in 4-component vector of float) 0:229 'inF1' (in 4-component vector of float) -0:230 dot-product (global float) +0:230 dot-product (temp float) 0:230 'inF0' (in 4-component vector of float) 0:230 'inF1' (in 4-component vector of float) 0:231 Construct vec4 (temp 4-component vector of float) @@ -562,82 +562,82 @@ Shader version: 450 0:231 'inF1' (in 4-component vector of float) 0:231 Constant: 0:231 3 (const int) -0:235 exp (global 4-component vector of float) +0:235 exp (temp 4-component vector of float) 0:235 'inF0' (in 4-component vector of float) -0:236 exp2 (global 4-component vector of float) +0:236 exp2 (temp 4-component vector of float) 0:236 'inF0' (in 4-component vector of float) -0:237 face-forward (global 4-component vector of float) +0:237 face-forward (temp 4-component vector of float) 0:237 'inF0' (in 4-component vector of float) 0:237 'inF1' (in 4-component vector of float) 0:237 'inF2' (in 4-component vector of float) -0:238 findMSB (global int) +0:238 findMSB (temp int) 0:238 Constant: 0:238 7 (const int) -0:239 findLSB (global int) +0:239 findLSB (temp int) 0:239 Constant: 0:239 7 (const int) -0:240 Floor (global 4-component vector of float) +0:240 Floor (temp 4-component vector of float) 0:240 'inF0' (in 4-component vector of float) -0:242 mod (global 4-component vector of float) +0:242 mod (temp 4-component vector of float) 0:242 'inF0' (in 4-component vector of float) 0:242 'inF1' (in 4-component vector of float) -0:243 Fraction (global 4-component vector of float) +0:243 Fraction (temp 4-component vector of float) 0:243 'inF0' (in 4-component vector of float) -0:244 frexp (global 4-component vector of float) +0:244 frexp (temp 4-component vector of float) 0:244 'inF0' (in 4-component vector of float) 0:244 'inF1' (in 4-component vector of float) -0:245 isinf (global 4-component vector of bool) +0:245 isinf (temp 4-component vector of bool) 0:245 'inF0' (in 4-component vector of float) -0:246 isnan (global 4-component vector of bool) +0:246 isnan (temp 4-component vector of bool) 0:246 'inF0' (in 4-component vector of float) -0:247 ldexp (global 4-component vector of float) +0:247 ldexp (temp 4-component vector of float) 0:247 'inF0' (in 4-component vector of float) 0:247 'inF1' (in 4-component vector of float) -0:248 mix (global 4-component vector of float) +0:248 mix (temp 4-component vector of float) 0:248 'inF0' (in 4-component vector of float) 0:248 'inF1' (in 4-component vector of float) 0:248 'inF2' (in 4-component vector of float) -0:249 length (global float) +0:249 length (temp float) 0:249 'inF0' (in 4-component vector of float) -0:250 log (global 4-component vector of float) +0:250 log (temp 4-component vector of float) 0:250 'inF0' (in 4-component vector of float) 0:251 vector-scale (temp 4-component vector of float) 0:251 log2 (temp 4-component vector of float) 0:251 'inF0' (in 4-component vector of float) 0:251 Constant: 0:251 0.301030 -0:252 log2 (global 4-component vector of float) +0:252 log2 (temp 4-component vector of float) 0:252 'inF0' (in 4-component vector of float) -0:253 max (global 4-component vector of float) +0:253 max (temp 4-component vector of float) 0:253 'inF0' (in 4-component vector of float) 0:253 'inF1' (in 4-component vector of float) -0:254 min (global 4-component vector of float) +0:254 min (temp 4-component vector of float) 0:254 'inF0' (in 4-component vector of float) 0:254 'inF1' (in 4-component vector of float) -0:256 normalize (global 4-component vector of float) +0:256 normalize (temp 4-component vector of float) 0:256 'inF0' (in 4-component vector of float) -0:257 pow (global 4-component vector of float) +0:257 pow (temp 4-component vector of float) 0:257 'inF0' (in 4-component vector of float) 0:257 'inF1' (in 4-component vector of float) -0:258 radians (global 4-component vector of float) +0:258 radians (temp 4-component vector of float) 0:258 'inF0' (in 4-component vector of float) -0:259 reflect (global 4-component vector of float) +0:259 reflect (temp 4-component vector of float) 0:259 'inF0' (in 4-component vector of float) 0:259 'inF1' (in 4-component vector of float) -0:260 refract (global 4-component vector of float) +0:260 refract (temp 4-component vector of float) 0:260 'inF0' (in 4-component vector of float) 0:260 'inF1' (in 4-component vector of float) 0:260 Constant: 0:260 2.000000 -0:? bitFieldReverse (global 4-component vector of uint) +0:? bitFieldReverse (temp 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:262 roundEven (global 4-component vector of float) +0:262 roundEven (temp 4-component vector of float) 0:262 'inF0' (in 4-component vector of float) -0:263 inverse sqrt (global 4-component vector of float) +0:263 inverse sqrt (temp 4-component vector of float) 0:263 'inF0' (in 4-component vector of float) 0:264 clamp (temp 4-component vector of float) 0:264 'inF0' (in 4-component vector of float) @@ -645,9 +645,9 @@ Shader version: 450 0:264 0.000000 0:264 Constant: 0:264 1.000000 -0:265 Sign (global 4-component vector of float) +0:265 Sign (temp 4-component vector of float) 0:265 'inF0' (in 4-component vector of float) -0:266 sine (global 4-component vector of float) +0:266 sine (temp 4-component vector of float) 0:266 'inF0' (in 4-component vector of float) 0:267 Sequence 0:267 move second child to first child (temp 4-component vector of float) @@ -658,22 +658,22 @@ Shader version: 450 0:267 'inF2' (in 4-component vector of float) 0:267 cosine (temp 4-component vector of float) 0:267 'inF0' (in 4-component vector of float) -0:268 hyp. sine (global 4-component vector of float) +0:268 hyp. sine (temp 4-component vector of float) 0:268 'inF0' (in 4-component vector of float) -0:269 smoothstep (global 4-component vector of float) +0:269 smoothstep (temp 4-component vector of float) 0:269 'inF0' (in 4-component vector of float) 0:269 'inF1' (in 4-component vector of float) 0:269 'inF2' (in 4-component vector of float) -0:270 sqrt (global 4-component vector of float) +0:270 sqrt (temp 4-component vector of float) 0:270 'inF0' (in 4-component vector of float) -0:271 step (global 4-component vector of float) +0:271 step (temp 4-component vector of float) 0:271 'inF0' (in 4-component vector of float) 0:271 'inF1' (in 4-component vector of float) -0:272 tangent (global 4-component vector of float) +0:272 tangent (temp 4-component vector of float) 0:272 'inF0' (in 4-component vector of float) -0:273 hyp. tangent (global 4-component vector of float) +0:273 hyp. tangent (temp 4-component vector of float) 0:273 'inF0' (in 4-component vector of float) -0:275 trunc (global 4-component vector of float) +0:275 trunc (temp 4-component vector of float) 0:275 'inF0' (in 4-component vector of float) 0:278 Branch: Return with expression 0:? Constant: @@ -687,85 +687,85 @@ Shader version: 450 0:336 'inF1' (in 2X2 matrix of float) 0:336 'inF2' (in 2X2 matrix of float) 0:? Sequence -0:338 all (global bool) +0:338 all (temp bool) 0:338 'inF0' (in 2X2 matrix of float) -0:338 Absolute value (global 2X2 matrix of float) +0:338 Absolute value (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc cosine (global 2X2 matrix of float) +0:338 arc cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 any (global bool) +0:338 any (temp bool) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc sine (global 2X2 matrix of float) +0:338 arc sine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc tangent (global 2X2 matrix of float) +0:338 arc tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc tangent (global 2X2 matrix of float) +0:338 arc tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 Ceiling (global 2X2 matrix of float) +0:338 Ceiling (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 clamp (global 2X2 matrix of float) +0:338 clamp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) 0:338 'inF2' (in 2X2 matrix of float) -0:338 cosine (global 2X2 matrix of float) +0:338 cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 hyp. cosine (global 2X2 matrix of float) +0:338 hyp. cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 degrees (global 2X2 matrix of float) +0:338 degrees (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 determinant (global float) +0:338 determinant (temp float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 exp (global 2X2 matrix of float) +0:338 exp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 exp2 (global 2X2 matrix of float) +0:338 exp2 (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 findMSB (global int) +0:338 findMSB (temp int) 0:338 Constant: 0:338 7 (const int) -0:338 findLSB (global int) +0:338 findLSB (temp int) 0:338 Constant: 0:338 7 (const int) -0:338 Floor (global 2X2 matrix of float) +0:338 Floor (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 mod (global 2X2 matrix of float) +0:338 mod (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 Fraction (global 2X2 matrix of float) +0:338 Fraction (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 frexp (global 2X2 matrix of float) +0:338 frexp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 ldexp (global 2X2 matrix of float) +0:338 ldexp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 mix (global 2X2 matrix of float) +0:338 mix (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) 0:338 'inF2' (in 2X2 matrix of float) -0:338 log (global 2X2 matrix of float) +0:338 log (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 matrix-scale (temp 2X2 matrix of float) 0:338 log2 (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 Constant: 0:338 0.301030 -0:338 log2 (global 2X2 matrix of float) +0:338 log2 (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 max (global 2X2 matrix of float) +0:338 max (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 min (global 2X2 matrix of float) +0:338 min (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 pow (global 2X2 matrix of float) +0:338 pow (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 radians (global 2X2 matrix of float) +0:338 radians (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 roundEven (global 2X2 matrix of float) +0:338 roundEven (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 inverse sqrt (global 2X2 matrix of float) +0:338 inverse sqrt (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 clamp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) @@ -773,9 +773,9 @@ Shader version: 450 0:338 0.000000 0:338 Constant: 0:338 1.000000 -0:338 Sign (global 2X2 matrix of float) +0:338 Sign (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 sine (global 2X2 matrix of float) +0:338 sine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 Sequence 0:338 move second child to first child (temp 2X2 matrix of float) @@ -786,24 +786,24 @@ Shader version: 450 0:338 'inF2' (in 2X2 matrix of float) 0:338 cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 hyp. sine (global 2X2 matrix of float) +0:338 hyp. sine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 smoothstep (global 2X2 matrix of float) +0:338 smoothstep (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) 0:338 'inF2' (in 2X2 matrix of float) -0:338 sqrt (global 2X2 matrix of float) +0:338 sqrt (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 step (global 2X2 matrix of float) +0:338 step (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 tangent (global 2X2 matrix of float) +0:338 tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 hyp. tangent (global 2X2 matrix of float) +0:338 hyp. tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 transpose (global 2X2 matrix of float) +0:338 transpose (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 trunc (global 2X2 matrix of float) +0:338 trunc (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:341 Branch: Return with expression 0:? Constant: @@ -817,85 +817,85 @@ Shader version: 450 0:345 'inF1' (in 3X3 matrix of float) 0:345 'inF2' (in 3X3 matrix of float) 0:? Sequence -0:347 all (global bool) +0:347 all (temp bool) 0:347 'inF0' (in 3X3 matrix of float) -0:347 Absolute value (global 3X3 matrix of float) +0:347 Absolute value (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc cosine (global 3X3 matrix of float) +0:347 arc cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 any (global bool) +0:347 any (temp bool) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc sine (global 3X3 matrix of float) +0:347 arc sine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc tangent (global 3X3 matrix of float) +0:347 arc tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc tangent (global 3X3 matrix of float) +0:347 arc tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 Ceiling (global 3X3 matrix of float) +0:347 Ceiling (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 clamp (global 3X3 matrix of float) +0:347 clamp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) 0:347 'inF2' (in 3X3 matrix of float) -0:347 cosine (global 3X3 matrix of float) +0:347 cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 hyp. cosine (global 3X3 matrix of float) +0:347 hyp. cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 degrees (global 3X3 matrix of float) +0:347 degrees (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 determinant (global float) +0:347 determinant (temp float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 exp (global 3X3 matrix of float) +0:347 exp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 exp2 (global 3X3 matrix of float) +0:347 exp2 (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 findMSB (global int) +0:347 findMSB (temp int) 0:347 Constant: 0:347 7 (const int) -0:347 findLSB (global int) +0:347 findLSB (temp int) 0:347 Constant: 0:347 7 (const int) -0:347 Floor (global 3X3 matrix of float) +0:347 Floor (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 mod (global 3X3 matrix of float) +0:347 mod (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 Fraction (global 3X3 matrix of float) +0:347 Fraction (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 frexp (global 3X3 matrix of float) +0:347 frexp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 ldexp (global 3X3 matrix of float) +0:347 ldexp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 mix (global 3X3 matrix of float) +0:347 mix (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) 0:347 'inF2' (in 3X3 matrix of float) -0:347 log (global 3X3 matrix of float) +0:347 log (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 matrix-scale (temp 3X3 matrix of float) 0:347 log2 (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 Constant: 0:347 0.301030 -0:347 log2 (global 3X3 matrix of float) +0:347 log2 (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 max (global 3X3 matrix of float) +0:347 max (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 min (global 3X3 matrix of float) +0:347 min (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 pow (global 3X3 matrix of float) +0:347 pow (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 radians (global 3X3 matrix of float) +0:347 radians (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 roundEven (global 3X3 matrix of float) +0:347 roundEven (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 inverse sqrt (global 3X3 matrix of float) +0:347 inverse sqrt (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 clamp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) @@ -903,9 +903,9 @@ Shader version: 450 0:347 0.000000 0:347 Constant: 0:347 1.000000 -0:347 Sign (global 3X3 matrix of float) +0:347 Sign (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 sine (global 3X3 matrix of float) +0:347 sine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 Sequence 0:347 move second child to first child (temp 3X3 matrix of float) @@ -916,24 +916,24 @@ Shader version: 450 0:347 'inF2' (in 3X3 matrix of float) 0:347 cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 hyp. sine (global 3X3 matrix of float) +0:347 hyp. sine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 smoothstep (global 3X3 matrix of float) +0:347 smoothstep (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) 0:347 'inF2' (in 3X3 matrix of float) -0:347 sqrt (global 3X3 matrix of float) +0:347 sqrt (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 step (global 3X3 matrix of float) +0:347 step (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 tangent (global 3X3 matrix of float) +0:347 tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 hyp. tangent (global 3X3 matrix of float) +0:347 hyp. tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 transpose (global 3X3 matrix of float) +0:347 transpose (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 trunc (global 3X3 matrix of float) +0:347 trunc (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:350 Branch: Return with expression 0:? Constant: @@ -952,85 +952,85 @@ Shader version: 450 0:354 'inF1' (in 4X4 matrix of float) 0:354 'inF2' (in 4X4 matrix of float) 0:? Sequence -0:356 all (global bool) +0:356 all (temp bool) 0:356 'inF0' (in 4X4 matrix of float) -0:356 Absolute value (global 4X4 matrix of float) +0:356 Absolute value (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc cosine (global 4X4 matrix of float) +0:356 arc cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 any (global bool) +0:356 any (temp bool) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc sine (global 4X4 matrix of float) +0:356 arc sine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc tangent (global 4X4 matrix of float) +0:356 arc tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc tangent (global 4X4 matrix of float) +0:356 arc tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 Ceiling (global 4X4 matrix of float) +0:356 Ceiling (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 clamp (global 4X4 matrix of float) +0:356 clamp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) 0:356 'inF2' (in 4X4 matrix of float) -0:356 cosine (global 4X4 matrix of float) +0:356 cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 hyp. cosine (global 4X4 matrix of float) +0:356 hyp. cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 degrees (global 4X4 matrix of float) +0:356 degrees (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 determinant (global float) +0:356 determinant (temp float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 exp (global 4X4 matrix of float) +0:356 exp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 exp2 (global 4X4 matrix of float) +0:356 exp2 (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 findMSB (global int) +0:356 findMSB (temp int) 0:356 Constant: 0:356 7 (const int) -0:356 findLSB (global int) +0:356 findLSB (temp int) 0:356 Constant: 0:356 7 (const int) -0:356 Floor (global 4X4 matrix of float) +0:356 Floor (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 mod (global 4X4 matrix of float) +0:356 mod (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 Fraction (global 4X4 matrix of float) +0:356 Fraction (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 frexp (global 4X4 matrix of float) +0:356 frexp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 ldexp (global 4X4 matrix of float) +0:356 ldexp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 mix (global 4X4 matrix of float) +0:356 mix (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) 0:356 'inF2' (in 4X4 matrix of float) -0:356 log (global 4X4 matrix of float) +0:356 log (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 matrix-scale (temp 4X4 matrix of float) 0:356 log2 (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 Constant: 0:356 0.301030 -0:356 log2 (global 4X4 matrix of float) +0:356 log2 (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 max (global 4X4 matrix of float) +0:356 max (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 min (global 4X4 matrix of float) +0:356 min (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 pow (global 4X4 matrix of float) +0:356 pow (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 radians (global 4X4 matrix of float) +0:356 radians (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 roundEven (global 4X4 matrix of float) +0:356 roundEven (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 inverse sqrt (global 4X4 matrix of float) +0:356 inverse sqrt (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 clamp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) @@ -1038,9 +1038,9 @@ Shader version: 450 0:356 0.000000 0:356 Constant: 0:356 1.000000 -0:356 Sign (global 4X4 matrix of float) +0:356 Sign (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 sine (global 4X4 matrix of float) +0:356 sine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 Sequence 0:356 move second child to first child (temp 4X4 matrix of float) @@ -1051,24 +1051,24 @@ Shader version: 450 0:356 'inF2' (in 4X4 matrix of float) 0:356 cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 hyp. sine (global 4X4 matrix of float) +0:356 hyp. sine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 smoothstep (global 4X4 matrix of float) +0:356 smoothstep (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) 0:356 'inF2' (in 4X4 matrix of float) -0:356 sqrt (global 4X4 matrix of float) +0:356 sqrt (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 step (global 4X4 matrix of float) +0:356 step (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 tangent (global 4X4 matrix of float) +0:356 tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 hyp. tangent (global 4X4 matrix of float) +0:356 hyp. tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 transpose (global 4X4 matrix of float) +0:356 transpose (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 trunc (global 4X4 matrix of float) +0:356 trunc (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:359 Branch: Return with expression 0:? Constant: @@ -1118,7 +1118,7 @@ Shader version: 450 0:378 Sequence 0:378 move second child to first child (temp float) 0:378 'r3' (temp float) -0:378 dot-product (global float) +0:378 dot-product (temp float) 0:378 'inFV0' (in 2-component vector of float) 0:378 'inFV1' (in 2-component vector of float) 0:378 Sequence @@ -1181,7 +1181,7 @@ Shader version: 450 0:385 Sequence 0:385 move second child to first child (temp float) 0:385 'r3' (temp float) -0:385 dot-product (global float) +0:385 dot-product (temp float) 0:385 'inFV0' (in 3-component vector of float) 0:385 'inFV1' (in 3-component vector of float) 0:385 Sequence @@ -1244,7 +1244,7 @@ Shader version: 450 0:392 Sequence 0:392 move second child to first child (temp float) 0:392 'r3' (temp float) -0:392 dot-product (global float) +0:392 dot-product (temp float) 0:392 'inFV0' (in 4-component vector of float) 0:392 'inFV1' (in 4-component vector of float) 0:392 Sequence @@ -1322,13 +1322,13 @@ Shader version: 450 0:407 Sequence 0:407 move second child to first child (temp float) 0:407 'r05' (temp float) -0:407 dot-product (global float) +0:407 dot-product (temp float) 0:407 'inFV2' (in 2-component vector of float) 0:407 'inFV2' (in 2-component vector of float) 0:408 Sequence 0:408 move second child to first child (temp float) 0:408 'r06' (temp float) -0:408 dot-product (global float) +0:408 dot-product (temp float) 0:408 'inFV3' (in 3-component vector of float) 0:408 'inFV3' (in 3-component vector of float) 0:409 Sequence @@ -1407,99 +1407,99 @@ Shader version: 450 0:2 'inU0' (in uint) 0:2 'inU1' (in uint) 0:? Sequence -0:3 all (global bool) +0:3 all (temp bool) 0:3 'inF0' (in float) -0:4 Absolute value (global float) +0:4 Absolute value (temp float) 0:4 'inF0' (in float) -0:5 arc cosine (global float) +0:5 arc cosine (temp float) 0:5 'inF0' (in float) -0:6 any (global bool) +0:6 any (temp bool) 0:6 'inF0' (in float) -0:7 arc sine (global float) +0:7 arc sine (temp float) 0:7 'inF0' (in float) -0:8 floatBitsToInt (global int) +0:8 floatBitsToInt (temp int) 0:8 'inF0' (in float) -0:9 floatBitsToUint (global uint) +0:9 floatBitsToUint (temp uint) 0:9 'inF0' (in float) -0:10 intBitsToFloat (global float) +0:10 intBitsToFloat (temp float) 0:10 'inU0' (in uint) -0:12 arc tangent (global float) +0:12 arc tangent (temp float) 0:12 'inF0' (in float) -0:13 arc tangent (global float) +0:13 arc tangent (temp float) 0:13 'inF0' (in float) 0:13 'inF1' (in float) -0:14 Ceiling (global float) +0:14 Ceiling (temp float) 0:14 'inF0' (in float) -0:15 clamp (global float) +0:15 clamp (temp float) 0:15 'inF0' (in float) 0:15 'inF1' (in float) 0:15 'inF2' (in float) -0:16 cosine (global float) +0:16 cosine (temp float) 0:16 'inF0' (in float) -0:17 hyp. cosine (global float) +0:17 hyp. cosine (temp float) 0:17 'inF0' (in float) -0:18 bitCount (global uint) +0:18 bitCount (temp uint) 0:18 Constant: 0:18 7 (const uint) -0:19 degrees (global float) +0:19 degrees (temp float) 0:19 'inF0' (in float) -0:23 exp (global float) +0:23 exp (temp float) 0:23 'inF0' (in float) -0:24 exp2 (global float) +0:24 exp2 (temp float) 0:24 'inF0' (in float) -0:25 findMSB (global int) +0:25 findMSB (temp int) 0:25 Constant: 0:25 7 (const int) -0:26 findLSB (global int) +0:26 findLSB (temp int) 0:26 Constant: 0:26 7 (const int) -0:27 Floor (global float) +0:27 Floor (temp float) 0:27 'inF0' (in float) -0:29 mod (global float) +0:29 mod (temp float) 0:29 'inF0' (in float) 0:29 'inF1' (in float) -0:30 Fraction (global float) +0:30 Fraction (temp float) 0:30 'inF0' (in float) -0:31 frexp (global float) +0:31 frexp (temp float) 0:31 'inF0' (in float) 0:31 'inF1' (in float) -0:32 isinf (global bool) +0:32 isinf (temp bool) 0:32 'inF0' (in float) -0:33 isnan (global bool) +0:33 isnan (temp bool) 0:33 'inF0' (in float) -0:34 ldexp (global float) +0:34 ldexp (temp float) 0:34 'inF0' (in float) 0:34 'inF1' (in float) -0:35 mix (global float) +0:35 mix (temp float) 0:35 'inF0' (in float) 0:35 'inF1' (in float) 0:35 'inF2' (in float) -0:36 log (global float) +0:36 log (temp float) 0:36 'inF0' (in float) 0:37 component-wise multiply (temp float) 0:37 log2 (temp float) 0:37 'inF0' (in float) 0:37 Constant: 0:37 0.301030 -0:38 log2 (global float) +0:38 log2 (temp float) 0:38 'inF0' (in float) -0:39 max (global float) +0:39 max (temp float) 0:39 'inF0' (in float) 0:39 'inF1' (in float) -0:40 min (global float) +0:40 min (temp float) 0:40 'inF0' (in float) 0:40 'inF1' (in float) -0:42 pow (global float) +0:42 pow (temp float) 0:42 'inF0' (in float) 0:42 'inF1' (in float) -0:43 radians (global float) +0:43 radians (temp float) 0:43 'inF0' (in float) -0:44 bitFieldReverse (global uint) +0:44 bitFieldReverse (temp uint) 0:44 Constant: 0:44 2 (const uint) -0:45 roundEven (global float) +0:45 roundEven (temp float) 0:45 'inF0' (in float) -0:46 inverse sqrt (global float) +0:46 inverse sqrt (temp float) 0:46 'inF0' (in float) 0:47 clamp (temp float) 0:47 'inF0' (in float) @@ -1507,9 +1507,9 @@ Shader version: 450 0:47 0.000000 0:47 Constant: 0:47 1.000000 -0:48 Sign (global float) +0:48 Sign (temp float) 0:48 'inF0' (in float) -0:49 sine (global float) +0:49 sine (temp float) 0:49 'inF0' (in float) 0:50 Sequence 0:50 move second child to first child (temp float) @@ -1520,22 +1520,22 @@ Shader version: 450 0:50 'inF2' (in float) 0:50 cosine (temp float) 0:50 'inF0' (in float) -0:51 hyp. sine (global float) +0:51 hyp. sine (temp float) 0:51 'inF0' (in float) -0:52 smoothstep (global float) +0:52 smoothstep (temp float) 0:52 'inF0' (in float) 0:52 'inF1' (in float) 0:52 'inF2' (in float) -0:53 sqrt (global float) +0:53 sqrt (temp float) 0:53 'inF0' (in float) -0:54 step (global float) +0:54 step (temp float) 0:54 'inF0' (in float) 0:54 'inF1' (in float) -0:55 tangent (global float) +0:55 tangent (temp float) 0:55 'inF0' (in float) -0:56 hyp. tangent (global float) +0:56 hyp. tangent (temp float) 0:56 'inF0' (in float) -0:58 trunc (global float) +0:58 trunc (temp float) 0:58 'inF0' (in float) 0:60 Branch: Return with expression 0:60 Constant: @@ -1557,123 +1557,123 @@ Shader version: 450 0:70 'inU0' (in 2-component vector of uint) 0:70 'inU1' (in 2-component vector of uint) 0:? Sequence -0:71 all (global bool) +0:71 all (temp bool) 0:71 'inF0' (in 2-component vector of float) -0:72 Absolute value (global 2-component vector of float) +0:72 Absolute value (temp 2-component vector of float) 0:72 'inF0' (in 2-component vector of float) -0:73 arc cosine (global 2-component vector of float) +0:73 arc cosine (temp 2-component vector of float) 0:73 'inF0' (in 2-component vector of float) -0:74 any (global bool) +0:74 any (temp bool) 0:74 'inF0' (in 2-component vector of float) -0:75 arc sine (global 2-component vector of float) +0:75 arc sine (temp 2-component vector of float) 0:75 'inF0' (in 2-component vector of float) -0:76 floatBitsToInt (global 2-component vector of int) +0:76 floatBitsToInt (temp 2-component vector of int) 0:76 'inF0' (in 2-component vector of float) -0:77 floatBitsToUint (global 2-component vector of uint) +0:77 floatBitsToUint (temp 2-component vector of uint) 0:77 'inF0' (in 2-component vector of float) -0:78 intBitsToFloat (global 2-component vector of float) +0:78 intBitsToFloat (temp 2-component vector of float) 0:78 'inU0' (in 2-component vector of uint) -0:80 arc tangent (global 2-component vector of float) +0:80 arc tangent (temp 2-component vector of float) 0:80 'inF0' (in 2-component vector of float) -0:81 arc tangent (global 2-component vector of float) +0:81 arc tangent (temp 2-component vector of float) 0:81 'inF0' (in 2-component vector of float) 0:81 'inF1' (in 2-component vector of float) -0:82 Ceiling (global 2-component vector of float) +0:82 Ceiling (temp 2-component vector of float) 0:82 'inF0' (in 2-component vector of float) -0:83 clamp (global 2-component vector of float) +0:83 clamp (temp 2-component vector of float) 0:83 'inF0' (in 2-component vector of float) 0:83 'inF1' (in 2-component vector of float) 0:83 'inF2' (in 2-component vector of float) -0:84 cosine (global 2-component vector of float) +0:84 cosine (temp 2-component vector of float) 0:84 'inF0' (in 2-component vector of float) -0:85 hyp. cosine (global 2-component vector of float) +0:85 hyp. cosine (temp 2-component vector of float) 0:85 'inF0' (in 2-component vector of float) -0:? bitCount (global 2-component vector of uint) +0:? bitCount (temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) -0:87 degrees (global 2-component vector of float) +0:87 degrees (temp 2-component vector of float) 0:87 'inF0' (in 2-component vector of float) -0:88 distance (global float) +0:88 distance (temp float) 0:88 'inF0' (in 2-component vector of float) 0:88 'inF1' (in 2-component vector of float) -0:89 dot-product (global float) +0:89 dot-product (temp float) 0:89 'inF0' (in 2-component vector of float) 0:89 'inF1' (in 2-component vector of float) -0:93 exp (global 2-component vector of float) +0:93 exp (temp 2-component vector of float) 0:93 'inF0' (in 2-component vector of float) -0:94 exp2 (global 2-component vector of float) +0:94 exp2 (temp 2-component vector of float) 0:94 'inF0' (in 2-component vector of float) -0:95 face-forward (global 2-component vector of float) +0:95 face-forward (temp 2-component vector of float) 0:95 'inF0' (in 2-component vector of float) 0:95 'inF1' (in 2-component vector of float) 0:95 'inF2' (in 2-component vector of float) -0:96 findMSB (global int) +0:96 findMSB (temp int) 0:96 Constant: 0:96 7 (const int) -0:97 findLSB (global int) +0:97 findLSB (temp int) 0:97 Constant: 0:97 7 (const int) -0:98 Floor (global 2-component vector of float) +0:98 Floor (temp 2-component vector of float) 0:98 'inF0' (in 2-component vector of float) -0:100 mod (global 2-component vector of float) +0:100 mod (temp 2-component vector of float) 0:100 'inF0' (in 2-component vector of float) 0:100 'inF1' (in 2-component vector of float) -0:101 Fraction (global 2-component vector of float) +0:101 Fraction (temp 2-component vector of float) 0:101 'inF0' (in 2-component vector of float) -0:102 frexp (global 2-component vector of float) +0:102 frexp (temp 2-component vector of float) 0:102 'inF0' (in 2-component vector of float) 0:102 'inF1' (in 2-component vector of float) -0:103 isinf (global 2-component vector of bool) +0:103 isinf (temp 2-component vector of bool) 0:103 'inF0' (in 2-component vector of float) -0:104 isnan (global 2-component vector of bool) +0:104 isnan (temp 2-component vector of bool) 0:104 'inF0' (in 2-component vector of float) -0:105 ldexp (global 2-component vector of float) +0:105 ldexp (temp 2-component vector of float) 0:105 'inF0' (in 2-component vector of float) 0:105 'inF1' (in 2-component vector of float) -0:106 mix (global 2-component vector of float) +0:106 mix (temp 2-component vector of float) 0:106 'inF0' (in 2-component vector of float) 0:106 'inF1' (in 2-component vector of float) 0:106 'inF2' (in 2-component vector of float) -0:107 length (global float) +0:107 length (temp float) 0:107 'inF0' (in 2-component vector of float) -0:108 log (global 2-component vector of float) +0:108 log (temp 2-component vector of float) 0:108 'inF0' (in 2-component vector of float) 0:109 vector-scale (temp 2-component vector of float) 0:109 log2 (temp 2-component vector of float) 0:109 'inF0' (in 2-component vector of float) 0:109 Constant: 0:109 0.301030 -0:110 log2 (global 2-component vector of float) +0:110 log2 (temp 2-component vector of float) 0:110 'inF0' (in 2-component vector of float) -0:111 max (global 2-component vector of float) +0:111 max (temp 2-component vector of float) 0:111 'inF0' (in 2-component vector of float) 0:111 'inF1' (in 2-component vector of float) -0:112 min (global 2-component vector of float) +0:112 min (temp 2-component vector of float) 0:112 'inF0' (in 2-component vector of float) 0:112 'inF1' (in 2-component vector of float) -0:114 normalize (global 2-component vector of float) +0:114 normalize (temp 2-component vector of float) 0:114 'inF0' (in 2-component vector of float) -0:115 pow (global 2-component vector of float) +0:115 pow (temp 2-component vector of float) 0:115 'inF0' (in 2-component vector of float) 0:115 'inF1' (in 2-component vector of float) -0:116 radians (global 2-component vector of float) +0:116 radians (temp 2-component vector of float) 0:116 'inF0' (in 2-component vector of float) -0:117 reflect (global 2-component vector of float) +0:117 reflect (temp 2-component vector of float) 0:117 'inF0' (in 2-component vector of float) 0:117 'inF1' (in 2-component vector of float) -0:118 refract (global 2-component vector of float) +0:118 refract (temp 2-component vector of float) 0:118 'inF0' (in 2-component vector of float) 0:118 'inF1' (in 2-component vector of float) 0:118 Constant: 0:118 2.000000 -0:? bitFieldReverse (global 2-component vector of uint) +0:? bitFieldReverse (temp 2-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) -0:120 roundEven (global 2-component vector of float) +0:120 roundEven (temp 2-component vector of float) 0:120 'inF0' (in 2-component vector of float) -0:121 inverse sqrt (global 2-component vector of float) +0:121 inverse sqrt (temp 2-component vector of float) 0:121 'inF0' (in 2-component vector of float) 0:122 clamp (temp 2-component vector of float) 0:122 'inF0' (in 2-component vector of float) @@ -1681,9 +1681,9 @@ Shader version: 450 0:122 0.000000 0:122 Constant: 0:122 1.000000 -0:123 Sign (global 2-component vector of float) +0:123 Sign (temp 2-component vector of float) 0:123 'inF0' (in 2-component vector of float) -0:124 sine (global 2-component vector of float) +0:124 sine (temp 2-component vector of float) 0:124 'inF0' (in 2-component vector of float) 0:125 Sequence 0:125 move second child to first child (temp 2-component vector of float) @@ -1694,22 +1694,22 @@ Shader version: 450 0:125 'inF2' (in 2-component vector of float) 0:125 cosine (temp 2-component vector of float) 0:125 'inF0' (in 2-component vector of float) -0:126 hyp. sine (global 2-component vector of float) +0:126 hyp. sine (temp 2-component vector of float) 0:126 'inF0' (in 2-component vector of float) -0:127 smoothstep (global 2-component vector of float) +0:127 smoothstep (temp 2-component vector of float) 0:127 'inF0' (in 2-component vector of float) 0:127 'inF1' (in 2-component vector of float) 0:127 'inF2' (in 2-component vector of float) -0:128 sqrt (global 2-component vector of float) +0:128 sqrt (temp 2-component vector of float) 0:128 'inF0' (in 2-component vector of float) -0:129 step (global 2-component vector of float) +0:129 step (temp 2-component vector of float) 0:129 'inF0' (in 2-component vector of float) 0:129 'inF1' (in 2-component vector of float) -0:130 tangent (global 2-component vector of float) +0:130 tangent (temp 2-component vector of float) 0:130 'inF0' (in 2-component vector of float) -0:131 hyp. tangent (global 2-component vector of float) +0:131 hyp. tangent (temp 2-component vector of float) 0:131 'inF0' (in 2-component vector of float) -0:133 trunc (global 2-component vector of float) +0:133 trunc (temp 2-component vector of float) 0:133 'inF0' (in 2-component vector of float) 0:136 Branch: Return with expression 0:? Constant: @@ -1723,128 +1723,128 @@ Shader version: 450 0:140 'inU0' (in 3-component vector of uint) 0:140 'inU1' (in 3-component vector of uint) 0:? Sequence -0:141 all (global bool) +0:141 all (temp bool) 0:141 'inF0' (in 3-component vector of float) -0:142 Absolute value (global 3-component vector of float) +0:142 Absolute value (temp 3-component vector of float) 0:142 'inF0' (in 3-component vector of float) -0:143 arc cosine (global 3-component vector of float) +0:143 arc cosine (temp 3-component vector of float) 0:143 'inF0' (in 3-component vector of float) -0:144 any (global bool) +0:144 any (temp bool) 0:144 'inF0' (in 3-component vector of float) -0:145 arc sine (global 3-component vector of float) +0:145 arc sine (temp 3-component vector of float) 0:145 'inF0' (in 3-component vector of float) -0:146 floatBitsToInt (global 3-component vector of int) +0:146 floatBitsToInt (temp 3-component vector of int) 0:146 'inF0' (in 3-component vector of float) -0:147 floatBitsToUint (global 3-component vector of uint) +0:147 floatBitsToUint (temp 3-component vector of uint) 0:147 'inF0' (in 3-component vector of float) -0:148 intBitsToFloat (global 3-component vector of float) +0:148 intBitsToFloat (temp 3-component vector of float) 0:148 'inU0' (in 3-component vector of uint) -0:150 arc tangent (global 3-component vector of float) +0:150 arc tangent (temp 3-component vector of float) 0:150 'inF0' (in 3-component vector of float) -0:151 arc tangent (global 3-component vector of float) +0:151 arc tangent (temp 3-component vector of float) 0:151 'inF0' (in 3-component vector of float) 0:151 'inF1' (in 3-component vector of float) -0:152 Ceiling (global 3-component vector of float) +0:152 Ceiling (temp 3-component vector of float) 0:152 'inF0' (in 3-component vector of float) -0:153 clamp (global 3-component vector of float) +0:153 clamp (temp 3-component vector of float) 0:153 'inF0' (in 3-component vector of float) 0:153 'inF1' (in 3-component vector of float) 0:153 'inF2' (in 3-component vector of float) -0:154 cosine (global 3-component vector of float) +0:154 cosine (temp 3-component vector of float) 0:154 'inF0' (in 3-component vector of float) -0:155 hyp. cosine (global 3-component vector of float) +0:155 hyp. cosine (temp 3-component vector of float) 0:155 'inF0' (in 3-component vector of float) -0:? bitCount (global 3-component vector of uint) +0:? bitCount (temp 3-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) -0:157 cross-product (global 3-component vector of float) +0:157 cross-product (temp 3-component vector of float) 0:157 'inF0' (in 3-component vector of float) 0:157 'inF1' (in 3-component vector of float) -0:158 degrees (global 3-component vector of float) +0:158 degrees (temp 3-component vector of float) 0:158 'inF0' (in 3-component vector of float) -0:159 distance (global float) +0:159 distance (temp float) 0:159 'inF0' (in 3-component vector of float) 0:159 'inF1' (in 3-component vector of float) -0:160 dot-product (global float) +0:160 dot-product (temp float) 0:160 'inF0' (in 3-component vector of float) 0:160 'inF1' (in 3-component vector of float) -0:164 exp (global 3-component vector of float) +0:164 exp (temp 3-component vector of float) 0:164 'inF0' (in 3-component vector of float) -0:165 exp2 (global 3-component vector of float) +0:165 exp2 (temp 3-component vector of float) 0:165 'inF0' (in 3-component vector of float) -0:166 face-forward (global 3-component vector of float) +0:166 face-forward (temp 3-component vector of float) 0:166 'inF0' (in 3-component vector of float) 0:166 'inF1' (in 3-component vector of float) 0:166 'inF2' (in 3-component vector of float) -0:167 findMSB (global int) +0:167 findMSB (temp int) 0:167 Constant: 0:167 7 (const int) -0:168 findLSB (global int) +0:168 findLSB (temp int) 0:168 Constant: 0:168 7 (const int) -0:169 Floor (global 3-component vector of float) +0:169 Floor (temp 3-component vector of float) 0:169 'inF0' (in 3-component vector of float) -0:171 mod (global 3-component vector of float) +0:171 mod (temp 3-component vector of float) 0:171 'inF0' (in 3-component vector of float) 0:171 'inF1' (in 3-component vector of float) -0:172 Fraction (global 3-component vector of float) +0:172 Fraction (temp 3-component vector of float) 0:172 'inF0' (in 3-component vector of float) -0:173 frexp (global 3-component vector of float) +0:173 frexp (temp 3-component vector of float) 0:173 'inF0' (in 3-component vector of float) 0:173 'inF1' (in 3-component vector of float) -0:174 isinf (global 3-component vector of bool) +0:174 isinf (temp 3-component vector of bool) 0:174 'inF0' (in 3-component vector of float) -0:175 isnan (global 3-component vector of bool) +0:175 isnan (temp 3-component vector of bool) 0:175 'inF0' (in 3-component vector of float) -0:176 ldexp (global 3-component vector of float) +0:176 ldexp (temp 3-component vector of float) 0:176 'inF0' (in 3-component vector of float) 0:176 'inF1' (in 3-component vector of float) -0:177 mix (global 3-component vector of float) +0:177 mix (temp 3-component vector of float) 0:177 'inF0' (in 3-component vector of float) 0:177 'inF1' (in 3-component vector of float) 0:177 'inF2' (in 3-component vector of float) -0:178 length (global float) +0:178 length (temp float) 0:178 'inF0' (in 3-component vector of float) -0:179 log (global 3-component vector of float) +0:179 log (temp 3-component vector of float) 0:179 'inF0' (in 3-component vector of float) 0:180 vector-scale (temp 3-component vector of float) 0:180 log2 (temp 3-component vector of float) 0:180 'inF0' (in 3-component vector of float) 0:180 Constant: 0:180 0.301030 -0:181 log2 (global 3-component vector of float) +0:181 log2 (temp 3-component vector of float) 0:181 'inF0' (in 3-component vector of float) -0:182 max (global 3-component vector of float) +0:182 max (temp 3-component vector of float) 0:182 'inF0' (in 3-component vector of float) 0:182 'inF1' (in 3-component vector of float) -0:183 min (global 3-component vector of float) +0:183 min (temp 3-component vector of float) 0:183 'inF0' (in 3-component vector of float) 0:183 'inF1' (in 3-component vector of float) -0:185 normalize (global 3-component vector of float) +0:185 normalize (temp 3-component vector of float) 0:185 'inF0' (in 3-component vector of float) -0:186 pow (global 3-component vector of float) +0:186 pow (temp 3-component vector of float) 0:186 'inF0' (in 3-component vector of float) 0:186 'inF1' (in 3-component vector of float) -0:187 radians (global 3-component vector of float) +0:187 radians (temp 3-component vector of float) 0:187 'inF0' (in 3-component vector of float) -0:188 reflect (global 3-component vector of float) +0:188 reflect (temp 3-component vector of float) 0:188 'inF0' (in 3-component vector of float) 0:188 'inF1' (in 3-component vector of float) -0:189 refract (global 3-component vector of float) +0:189 refract (temp 3-component vector of float) 0:189 'inF0' (in 3-component vector of float) 0:189 'inF1' (in 3-component vector of float) 0:189 Constant: 0:189 2.000000 -0:? bitFieldReverse (global 3-component vector of uint) +0:? bitFieldReverse (temp 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) -0:191 roundEven (global 3-component vector of float) +0:191 roundEven (temp 3-component vector of float) 0:191 'inF0' (in 3-component vector of float) -0:192 inverse sqrt (global 3-component vector of float) +0:192 inverse sqrt (temp 3-component vector of float) 0:192 'inF0' (in 3-component vector of float) 0:193 clamp (temp 3-component vector of float) 0:193 'inF0' (in 3-component vector of float) @@ -1852,9 +1852,9 @@ Shader version: 450 0:193 0.000000 0:193 Constant: 0:193 1.000000 -0:194 Sign (global 3-component vector of float) +0:194 Sign (temp 3-component vector of float) 0:194 'inF0' (in 3-component vector of float) -0:195 sine (global 3-component vector of float) +0:195 sine (temp 3-component vector of float) 0:195 'inF0' (in 3-component vector of float) 0:196 Sequence 0:196 move second child to first child (temp 3-component vector of float) @@ -1865,22 +1865,22 @@ Shader version: 450 0:196 'inF2' (in 3-component vector of float) 0:196 cosine (temp 3-component vector of float) 0:196 'inF0' (in 3-component vector of float) -0:197 hyp. sine (global 3-component vector of float) +0:197 hyp. sine (temp 3-component vector of float) 0:197 'inF0' (in 3-component vector of float) -0:198 smoothstep (global 3-component vector of float) +0:198 smoothstep (temp 3-component vector of float) 0:198 'inF0' (in 3-component vector of float) 0:198 'inF1' (in 3-component vector of float) 0:198 'inF2' (in 3-component vector of float) -0:199 sqrt (global 3-component vector of float) +0:199 sqrt (temp 3-component vector of float) 0:199 'inF0' (in 3-component vector of float) -0:200 step (global 3-component vector of float) +0:200 step (temp 3-component vector of float) 0:200 'inF0' (in 3-component vector of float) 0:200 'inF1' (in 3-component vector of float) -0:201 tangent (global 3-component vector of float) +0:201 tangent (temp 3-component vector of float) 0:201 'inF0' (in 3-component vector of float) -0:202 hyp. tangent (global 3-component vector of float) +0:202 hyp. tangent (temp 3-component vector of float) 0:202 'inF0' (in 3-component vector of float) -0:204 trunc (global 3-component vector of float) +0:204 trunc (temp 3-component vector of float) 0:204 'inF0' (in 3-component vector of float) 0:207 Branch: Return with expression 0:? Constant: @@ -1895,49 +1895,49 @@ Shader version: 450 0:211 'inU0' (in 4-component vector of uint) 0:211 'inU1' (in 4-component vector of uint) 0:? Sequence -0:212 all (global bool) +0:212 all (temp bool) 0:212 'inF0' (in 4-component vector of float) -0:213 Absolute value (global 4-component vector of float) +0:213 Absolute value (temp 4-component vector of float) 0:213 'inF0' (in 4-component vector of float) -0:214 arc cosine (global 4-component vector of float) +0:214 arc cosine (temp 4-component vector of float) 0:214 'inF0' (in 4-component vector of float) -0:215 any (global bool) +0:215 any (temp bool) 0:215 'inF0' (in 4-component vector of float) -0:216 arc sine (global 4-component vector of float) +0:216 arc sine (temp 4-component vector of float) 0:216 'inF0' (in 4-component vector of float) -0:217 floatBitsToInt (global 4-component vector of int) +0:217 floatBitsToInt (temp 4-component vector of int) 0:217 'inF0' (in 4-component vector of float) -0:218 floatBitsToUint (global 4-component vector of uint) +0:218 floatBitsToUint (temp 4-component vector of uint) 0:218 'inF0' (in 4-component vector of float) -0:219 intBitsToFloat (global 4-component vector of float) +0:219 intBitsToFloat (temp 4-component vector of float) 0:219 'inU0' (in 4-component vector of uint) -0:221 arc tangent (global 4-component vector of float) +0:221 arc tangent (temp 4-component vector of float) 0:221 'inF0' (in 4-component vector of float) -0:222 arc tangent (global 4-component vector of float) +0:222 arc tangent (temp 4-component vector of float) 0:222 'inF0' (in 4-component vector of float) 0:222 'inF1' (in 4-component vector of float) -0:223 Ceiling (global 4-component vector of float) +0:223 Ceiling (temp 4-component vector of float) 0:223 'inF0' (in 4-component vector of float) -0:224 clamp (global 4-component vector of float) +0:224 clamp (temp 4-component vector of float) 0:224 'inF0' (in 4-component vector of float) 0:224 'inF1' (in 4-component vector of float) 0:224 'inF2' (in 4-component vector of float) -0:225 cosine (global 4-component vector of float) +0:225 cosine (temp 4-component vector of float) 0:225 'inF0' (in 4-component vector of float) -0:226 hyp. cosine (global 4-component vector of float) +0:226 hyp. cosine (temp 4-component vector of float) 0:226 'inF0' (in 4-component vector of float) -0:? bitCount (global 4-component vector of uint) +0:? bitCount (temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) 0:? 2 (const uint) -0:228 degrees (global 4-component vector of float) +0:228 degrees (temp 4-component vector of float) 0:228 'inF0' (in 4-component vector of float) -0:229 distance (global float) +0:229 distance (temp float) 0:229 'inF0' (in 4-component vector of float) 0:229 'inF1' (in 4-component vector of float) -0:230 dot-product (global float) +0:230 dot-product (temp float) 0:230 'inF0' (in 4-component vector of float) 0:230 'inF1' (in 4-component vector of float) 0:231 Construct vec4 (temp 4-component vector of float) @@ -1960,82 +1960,82 @@ Shader version: 450 0:231 'inF1' (in 4-component vector of float) 0:231 Constant: 0:231 3 (const int) -0:235 exp (global 4-component vector of float) +0:235 exp (temp 4-component vector of float) 0:235 'inF0' (in 4-component vector of float) -0:236 exp2 (global 4-component vector of float) +0:236 exp2 (temp 4-component vector of float) 0:236 'inF0' (in 4-component vector of float) -0:237 face-forward (global 4-component vector of float) +0:237 face-forward (temp 4-component vector of float) 0:237 'inF0' (in 4-component vector of float) 0:237 'inF1' (in 4-component vector of float) 0:237 'inF2' (in 4-component vector of float) -0:238 findMSB (global int) +0:238 findMSB (temp int) 0:238 Constant: 0:238 7 (const int) -0:239 findLSB (global int) +0:239 findLSB (temp int) 0:239 Constant: 0:239 7 (const int) -0:240 Floor (global 4-component vector of float) +0:240 Floor (temp 4-component vector of float) 0:240 'inF0' (in 4-component vector of float) -0:242 mod (global 4-component vector of float) +0:242 mod (temp 4-component vector of float) 0:242 'inF0' (in 4-component vector of float) 0:242 'inF1' (in 4-component vector of float) -0:243 Fraction (global 4-component vector of float) +0:243 Fraction (temp 4-component vector of float) 0:243 'inF0' (in 4-component vector of float) -0:244 frexp (global 4-component vector of float) +0:244 frexp (temp 4-component vector of float) 0:244 'inF0' (in 4-component vector of float) 0:244 'inF1' (in 4-component vector of float) -0:245 isinf (global 4-component vector of bool) +0:245 isinf (temp 4-component vector of bool) 0:245 'inF0' (in 4-component vector of float) -0:246 isnan (global 4-component vector of bool) +0:246 isnan (temp 4-component vector of bool) 0:246 'inF0' (in 4-component vector of float) -0:247 ldexp (global 4-component vector of float) +0:247 ldexp (temp 4-component vector of float) 0:247 'inF0' (in 4-component vector of float) 0:247 'inF1' (in 4-component vector of float) -0:248 mix (global 4-component vector of float) +0:248 mix (temp 4-component vector of float) 0:248 'inF0' (in 4-component vector of float) 0:248 'inF1' (in 4-component vector of float) 0:248 'inF2' (in 4-component vector of float) -0:249 length (global float) +0:249 length (temp float) 0:249 'inF0' (in 4-component vector of float) -0:250 log (global 4-component vector of float) +0:250 log (temp 4-component vector of float) 0:250 'inF0' (in 4-component vector of float) 0:251 vector-scale (temp 4-component vector of float) 0:251 log2 (temp 4-component vector of float) 0:251 'inF0' (in 4-component vector of float) 0:251 Constant: 0:251 0.301030 -0:252 log2 (global 4-component vector of float) +0:252 log2 (temp 4-component vector of float) 0:252 'inF0' (in 4-component vector of float) -0:253 max (global 4-component vector of float) +0:253 max (temp 4-component vector of float) 0:253 'inF0' (in 4-component vector of float) 0:253 'inF1' (in 4-component vector of float) -0:254 min (global 4-component vector of float) +0:254 min (temp 4-component vector of float) 0:254 'inF0' (in 4-component vector of float) 0:254 'inF1' (in 4-component vector of float) -0:256 normalize (global 4-component vector of float) +0:256 normalize (temp 4-component vector of float) 0:256 'inF0' (in 4-component vector of float) -0:257 pow (global 4-component vector of float) +0:257 pow (temp 4-component vector of float) 0:257 'inF0' (in 4-component vector of float) 0:257 'inF1' (in 4-component vector of float) -0:258 radians (global 4-component vector of float) +0:258 radians (temp 4-component vector of float) 0:258 'inF0' (in 4-component vector of float) -0:259 reflect (global 4-component vector of float) +0:259 reflect (temp 4-component vector of float) 0:259 'inF0' (in 4-component vector of float) 0:259 'inF1' (in 4-component vector of float) -0:260 refract (global 4-component vector of float) +0:260 refract (temp 4-component vector of float) 0:260 'inF0' (in 4-component vector of float) 0:260 'inF1' (in 4-component vector of float) 0:260 Constant: 0:260 2.000000 -0:? bitFieldReverse (global 4-component vector of uint) +0:? bitFieldReverse (temp 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:262 roundEven (global 4-component vector of float) +0:262 roundEven (temp 4-component vector of float) 0:262 'inF0' (in 4-component vector of float) -0:263 inverse sqrt (global 4-component vector of float) +0:263 inverse sqrt (temp 4-component vector of float) 0:263 'inF0' (in 4-component vector of float) 0:264 clamp (temp 4-component vector of float) 0:264 'inF0' (in 4-component vector of float) @@ -2043,9 +2043,9 @@ Shader version: 450 0:264 0.000000 0:264 Constant: 0:264 1.000000 -0:265 Sign (global 4-component vector of float) +0:265 Sign (temp 4-component vector of float) 0:265 'inF0' (in 4-component vector of float) -0:266 sine (global 4-component vector of float) +0:266 sine (temp 4-component vector of float) 0:266 'inF0' (in 4-component vector of float) 0:267 Sequence 0:267 move second child to first child (temp 4-component vector of float) @@ -2056,22 +2056,22 @@ Shader version: 450 0:267 'inF2' (in 4-component vector of float) 0:267 cosine (temp 4-component vector of float) 0:267 'inF0' (in 4-component vector of float) -0:268 hyp. sine (global 4-component vector of float) +0:268 hyp. sine (temp 4-component vector of float) 0:268 'inF0' (in 4-component vector of float) -0:269 smoothstep (global 4-component vector of float) +0:269 smoothstep (temp 4-component vector of float) 0:269 'inF0' (in 4-component vector of float) 0:269 'inF1' (in 4-component vector of float) 0:269 'inF2' (in 4-component vector of float) -0:270 sqrt (global 4-component vector of float) +0:270 sqrt (temp 4-component vector of float) 0:270 'inF0' (in 4-component vector of float) -0:271 step (global 4-component vector of float) +0:271 step (temp 4-component vector of float) 0:271 'inF0' (in 4-component vector of float) 0:271 'inF1' (in 4-component vector of float) -0:272 tangent (global 4-component vector of float) +0:272 tangent (temp 4-component vector of float) 0:272 'inF0' (in 4-component vector of float) -0:273 hyp. tangent (global 4-component vector of float) +0:273 hyp. tangent (temp 4-component vector of float) 0:273 'inF0' (in 4-component vector of float) -0:275 trunc (global 4-component vector of float) +0:275 trunc (temp 4-component vector of float) 0:275 'inF0' (in 4-component vector of float) 0:278 Branch: Return with expression 0:? Constant: @@ -2085,85 +2085,85 @@ Shader version: 450 0:336 'inF1' (in 2X2 matrix of float) 0:336 'inF2' (in 2X2 matrix of float) 0:? Sequence -0:338 all (global bool) +0:338 all (temp bool) 0:338 'inF0' (in 2X2 matrix of float) -0:338 Absolute value (global 2X2 matrix of float) +0:338 Absolute value (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc cosine (global 2X2 matrix of float) +0:338 arc cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 any (global bool) +0:338 any (temp bool) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc sine (global 2X2 matrix of float) +0:338 arc sine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc tangent (global 2X2 matrix of float) +0:338 arc tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 arc tangent (global 2X2 matrix of float) +0:338 arc tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 Ceiling (global 2X2 matrix of float) +0:338 Ceiling (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 clamp (global 2X2 matrix of float) +0:338 clamp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) 0:338 'inF2' (in 2X2 matrix of float) -0:338 cosine (global 2X2 matrix of float) +0:338 cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 hyp. cosine (global 2X2 matrix of float) +0:338 hyp. cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 degrees (global 2X2 matrix of float) +0:338 degrees (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 determinant (global float) +0:338 determinant (temp float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 exp (global 2X2 matrix of float) +0:338 exp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 exp2 (global 2X2 matrix of float) +0:338 exp2 (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 findMSB (global int) +0:338 findMSB (temp int) 0:338 Constant: 0:338 7 (const int) -0:338 findLSB (global int) +0:338 findLSB (temp int) 0:338 Constant: 0:338 7 (const int) -0:338 Floor (global 2X2 matrix of float) +0:338 Floor (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 mod (global 2X2 matrix of float) +0:338 mod (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 Fraction (global 2X2 matrix of float) +0:338 Fraction (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 frexp (global 2X2 matrix of float) +0:338 frexp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 ldexp (global 2X2 matrix of float) +0:338 ldexp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 mix (global 2X2 matrix of float) +0:338 mix (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) 0:338 'inF2' (in 2X2 matrix of float) -0:338 log (global 2X2 matrix of float) +0:338 log (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 matrix-scale (temp 2X2 matrix of float) 0:338 log2 (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 Constant: 0:338 0.301030 -0:338 log2 (global 2X2 matrix of float) +0:338 log2 (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 max (global 2X2 matrix of float) +0:338 max (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 min (global 2X2 matrix of float) +0:338 min (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 pow (global 2X2 matrix of float) +0:338 pow (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 radians (global 2X2 matrix of float) +0:338 radians (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 roundEven (global 2X2 matrix of float) +0:338 roundEven (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 inverse sqrt (global 2X2 matrix of float) +0:338 inverse sqrt (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 clamp (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) @@ -2171,9 +2171,9 @@ Shader version: 450 0:338 0.000000 0:338 Constant: 0:338 1.000000 -0:338 Sign (global 2X2 matrix of float) +0:338 Sign (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 sine (global 2X2 matrix of float) +0:338 sine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 Sequence 0:338 move second child to first child (temp 2X2 matrix of float) @@ -2184,24 +2184,24 @@ Shader version: 450 0:338 'inF2' (in 2X2 matrix of float) 0:338 cosine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 hyp. sine (global 2X2 matrix of float) +0:338 hyp. sine (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 smoothstep (global 2X2 matrix of float) +0:338 smoothstep (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) 0:338 'inF2' (in 2X2 matrix of float) -0:338 sqrt (global 2X2 matrix of float) +0:338 sqrt (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 step (global 2X2 matrix of float) +0:338 step (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:338 'inF1' (in 2X2 matrix of float) -0:338 tangent (global 2X2 matrix of float) +0:338 tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 hyp. tangent (global 2X2 matrix of float) +0:338 hyp. tangent (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 transpose (global 2X2 matrix of float) +0:338 transpose (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) -0:338 trunc (global 2X2 matrix of float) +0:338 trunc (temp 2X2 matrix of float) 0:338 'inF0' (in 2X2 matrix of float) 0:341 Branch: Return with expression 0:? Constant: @@ -2215,85 +2215,85 @@ Shader version: 450 0:345 'inF1' (in 3X3 matrix of float) 0:345 'inF2' (in 3X3 matrix of float) 0:? Sequence -0:347 all (global bool) +0:347 all (temp bool) 0:347 'inF0' (in 3X3 matrix of float) -0:347 Absolute value (global 3X3 matrix of float) +0:347 Absolute value (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc cosine (global 3X3 matrix of float) +0:347 arc cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 any (global bool) +0:347 any (temp bool) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc sine (global 3X3 matrix of float) +0:347 arc sine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc tangent (global 3X3 matrix of float) +0:347 arc tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 arc tangent (global 3X3 matrix of float) +0:347 arc tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 Ceiling (global 3X3 matrix of float) +0:347 Ceiling (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 clamp (global 3X3 matrix of float) +0:347 clamp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) 0:347 'inF2' (in 3X3 matrix of float) -0:347 cosine (global 3X3 matrix of float) +0:347 cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 hyp. cosine (global 3X3 matrix of float) +0:347 hyp. cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 degrees (global 3X3 matrix of float) +0:347 degrees (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 determinant (global float) +0:347 determinant (temp float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 exp (global 3X3 matrix of float) +0:347 exp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 exp2 (global 3X3 matrix of float) +0:347 exp2 (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 findMSB (global int) +0:347 findMSB (temp int) 0:347 Constant: 0:347 7 (const int) -0:347 findLSB (global int) +0:347 findLSB (temp int) 0:347 Constant: 0:347 7 (const int) -0:347 Floor (global 3X3 matrix of float) +0:347 Floor (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 mod (global 3X3 matrix of float) +0:347 mod (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 Fraction (global 3X3 matrix of float) +0:347 Fraction (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 frexp (global 3X3 matrix of float) +0:347 frexp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 ldexp (global 3X3 matrix of float) +0:347 ldexp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 mix (global 3X3 matrix of float) +0:347 mix (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) 0:347 'inF2' (in 3X3 matrix of float) -0:347 log (global 3X3 matrix of float) +0:347 log (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 matrix-scale (temp 3X3 matrix of float) 0:347 log2 (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 Constant: 0:347 0.301030 -0:347 log2 (global 3X3 matrix of float) +0:347 log2 (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 max (global 3X3 matrix of float) +0:347 max (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 min (global 3X3 matrix of float) +0:347 min (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 pow (global 3X3 matrix of float) +0:347 pow (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 radians (global 3X3 matrix of float) +0:347 radians (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 roundEven (global 3X3 matrix of float) +0:347 roundEven (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 inverse sqrt (global 3X3 matrix of float) +0:347 inverse sqrt (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 clamp (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) @@ -2301,9 +2301,9 @@ Shader version: 450 0:347 0.000000 0:347 Constant: 0:347 1.000000 -0:347 Sign (global 3X3 matrix of float) +0:347 Sign (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 sine (global 3X3 matrix of float) +0:347 sine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 Sequence 0:347 move second child to first child (temp 3X3 matrix of float) @@ -2314,24 +2314,24 @@ Shader version: 450 0:347 'inF2' (in 3X3 matrix of float) 0:347 cosine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 hyp. sine (global 3X3 matrix of float) +0:347 hyp. sine (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 smoothstep (global 3X3 matrix of float) +0:347 smoothstep (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) 0:347 'inF2' (in 3X3 matrix of float) -0:347 sqrt (global 3X3 matrix of float) +0:347 sqrt (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 step (global 3X3 matrix of float) +0:347 step (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:347 'inF1' (in 3X3 matrix of float) -0:347 tangent (global 3X3 matrix of float) +0:347 tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 hyp. tangent (global 3X3 matrix of float) +0:347 hyp. tangent (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 transpose (global 3X3 matrix of float) +0:347 transpose (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) -0:347 trunc (global 3X3 matrix of float) +0:347 trunc (temp 3X3 matrix of float) 0:347 'inF0' (in 3X3 matrix of float) 0:350 Branch: Return with expression 0:? Constant: @@ -2350,85 +2350,85 @@ Shader version: 450 0:354 'inF1' (in 4X4 matrix of float) 0:354 'inF2' (in 4X4 matrix of float) 0:? Sequence -0:356 all (global bool) +0:356 all (temp bool) 0:356 'inF0' (in 4X4 matrix of float) -0:356 Absolute value (global 4X4 matrix of float) +0:356 Absolute value (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc cosine (global 4X4 matrix of float) +0:356 arc cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 any (global bool) +0:356 any (temp bool) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc sine (global 4X4 matrix of float) +0:356 arc sine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc tangent (global 4X4 matrix of float) +0:356 arc tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 arc tangent (global 4X4 matrix of float) +0:356 arc tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 Ceiling (global 4X4 matrix of float) +0:356 Ceiling (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 clamp (global 4X4 matrix of float) +0:356 clamp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) 0:356 'inF2' (in 4X4 matrix of float) -0:356 cosine (global 4X4 matrix of float) +0:356 cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 hyp. cosine (global 4X4 matrix of float) +0:356 hyp. cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 degrees (global 4X4 matrix of float) +0:356 degrees (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 determinant (global float) +0:356 determinant (temp float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 exp (global 4X4 matrix of float) +0:356 exp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 exp2 (global 4X4 matrix of float) +0:356 exp2 (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 findMSB (global int) +0:356 findMSB (temp int) 0:356 Constant: 0:356 7 (const int) -0:356 findLSB (global int) +0:356 findLSB (temp int) 0:356 Constant: 0:356 7 (const int) -0:356 Floor (global 4X4 matrix of float) +0:356 Floor (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 mod (global 4X4 matrix of float) +0:356 mod (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 Fraction (global 4X4 matrix of float) +0:356 Fraction (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 frexp (global 4X4 matrix of float) +0:356 frexp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 ldexp (global 4X4 matrix of float) +0:356 ldexp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 mix (global 4X4 matrix of float) +0:356 mix (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) 0:356 'inF2' (in 4X4 matrix of float) -0:356 log (global 4X4 matrix of float) +0:356 log (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 matrix-scale (temp 4X4 matrix of float) 0:356 log2 (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 Constant: 0:356 0.301030 -0:356 log2 (global 4X4 matrix of float) +0:356 log2 (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 max (global 4X4 matrix of float) +0:356 max (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 min (global 4X4 matrix of float) +0:356 min (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 pow (global 4X4 matrix of float) +0:356 pow (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 radians (global 4X4 matrix of float) +0:356 radians (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 roundEven (global 4X4 matrix of float) +0:356 roundEven (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 inverse sqrt (global 4X4 matrix of float) +0:356 inverse sqrt (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 clamp (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) @@ -2436,9 +2436,9 @@ Shader version: 450 0:356 0.000000 0:356 Constant: 0:356 1.000000 -0:356 Sign (global 4X4 matrix of float) +0:356 Sign (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 sine (global 4X4 matrix of float) +0:356 sine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 Sequence 0:356 move second child to first child (temp 4X4 matrix of float) @@ -2449,24 +2449,24 @@ Shader version: 450 0:356 'inF2' (in 4X4 matrix of float) 0:356 cosine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 hyp. sine (global 4X4 matrix of float) +0:356 hyp. sine (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 smoothstep (global 4X4 matrix of float) +0:356 smoothstep (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) 0:356 'inF2' (in 4X4 matrix of float) -0:356 sqrt (global 4X4 matrix of float) +0:356 sqrt (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 step (global 4X4 matrix of float) +0:356 step (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:356 'inF1' (in 4X4 matrix of float) -0:356 tangent (global 4X4 matrix of float) +0:356 tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 hyp. tangent (global 4X4 matrix of float) +0:356 hyp. tangent (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 transpose (global 4X4 matrix of float) +0:356 transpose (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) -0:356 trunc (global 4X4 matrix of float) +0:356 trunc (temp 4X4 matrix of float) 0:356 'inF0' (in 4X4 matrix of float) 0:359 Branch: Return with expression 0:? Constant: @@ -2516,7 +2516,7 @@ Shader version: 450 0:378 Sequence 0:378 move second child to first child (temp float) 0:378 'r3' (temp float) -0:378 dot-product (global float) +0:378 dot-product (temp float) 0:378 'inFV0' (in 2-component vector of float) 0:378 'inFV1' (in 2-component vector of float) 0:378 Sequence @@ -2579,7 +2579,7 @@ Shader version: 450 0:385 Sequence 0:385 move second child to first child (temp float) 0:385 'r3' (temp float) -0:385 dot-product (global float) +0:385 dot-product (temp float) 0:385 'inFV0' (in 3-component vector of float) 0:385 'inFV1' (in 3-component vector of float) 0:385 Sequence @@ -2642,7 +2642,7 @@ Shader version: 450 0:392 Sequence 0:392 move second child to first child (temp float) 0:392 'r3' (temp float) -0:392 dot-product (global float) +0:392 dot-product (temp float) 0:392 'inFV0' (in 4-component vector of float) 0:392 'inFV1' (in 4-component vector of float) 0:392 Sequence @@ -2720,13 +2720,13 @@ Shader version: 450 0:407 Sequence 0:407 move second child to first child (temp float) 0:407 'r05' (temp float) -0:407 dot-product (global float) +0:407 dot-product (temp float) 0:407 'inFV2' (in 2-component vector of float) 0:407 'inFV2' (in 2-component vector of float) 0:408 Sequence 0:408 move second child to first child (temp float) 0:408 'r06' (temp float) -0:408 dot-product (global float) +0:408 dot-product (temp float) 0:408 'inFV3' (in 3-component vector of float) 0:408 'inFV3' (in 3-component vector of float) 0:409 Sequence diff --git a/Test/baseResults/hlsl.matNx1.frag.out b/Test/baseResults/hlsl.matNx1.frag.out new file mode 100644 index 00000000..f9dd65f9 --- /dev/null +++ b/Test/baseResults/hlsl.matNx1.frag.out @@ -0,0 +1,261 @@ +hlsl.matNx1.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: TestMatNx1( (temp void) +0:3 Function Parameters: +0:? Sequence +0:13 Sequence +0:13 move second child to first child (temp 1X1 matrix of float) +0:13 'r00' (temp 1X1 matrix of float) +0:13 transpose (temp 1X1 matrix of float) +0:13 'f1x1' (temp 1X1 matrix of float) +0:14 Sequence +0:14 move second child to first child (temp 1X2 matrix of float) +0:14 'r01' (temp 1X2 matrix of float) +0:14 transpose (temp 1X2 matrix of float) +0:14 'f2x1' (temp 2X1 matrix of float) +0:15 Sequence +0:15 move second child to first child (temp 1X3 matrix of float) +0:15 'r02' (temp 1X3 matrix of float) +0:15 transpose (temp 1X3 matrix of float) +0:15 'f3x1' (temp 3X1 matrix of float) +0:16 Sequence +0:16 move second child to first child (temp 1X4 matrix of float) +0:16 'r03' (temp 1X4 matrix of float) +0:16 transpose (temp 1X4 matrix of float) +0:16 'f4x1' (temp 4X1 matrix of float) +0:18 Sequence +0:18 move second child to first child (temp 1X1 matrix of float) +0:18 'r10' (temp 1X1 matrix of float) +0:18 transpose (temp 1X1 matrix of float) +0:18 'f1x1' (temp 1X1 matrix of float) +0:19 Sequence +0:19 move second child to first child (temp 2X1 matrix of float) +0:19 'r11' (temp 2X1 matrix of float) +0:19 transpose (temp 2X1 matrix of float) +0:19 'f1x2' (temp 1X2 matrix of float) +0:20 Sequence +0:20 move second child to first child (temp 3X1 matrix of float) +0:20 'r12' (temp 3X1 matrix of float) +0:20 transpose (temp 3X1 matrix of float) +0:20 'f1x3' (temp 1X3 matrix of float) +0:21 Sequence +0:21 move second child to first child (temp 4X1 matrix of float) +0:21 'r13' (temp 4X1 matrix of float) +0:21 transpose (temp 4X1 matrix of float) +0:21 'f1x4' (temp 1X4 matrix of float) +0:27 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:27 Function Parameters: +0:? Sequence +0:29 move second child to first child (temp 4-component vector of float) +0:29 color: direct index for structure (temp 4-component vector of float) +0:29 'ps_output' (temp structure{temp 4-component vector of float color}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:30 Sequence +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (temp structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: TestMatNx1( (temp void) +0:3 Function Parameters: +0:? Sequence +0:13 Sequence +0:13 move second child to first child (temp 1X1 matrix of float) +0:13 'r00' (temp 1X1 matrix of float) +0:13 transpose (temp 1X1 matrix of float) +0:13 'f1x1' (temp 1X1 matrix of float) +0:14 Sequence +0:14 move second child to first child (temp 1X2 matrix of float) +0:14 'r01' (temp 1X2 matrix of float) +0:14 transpose (temp 1X2 matrix of float) +0:14 'f2x1' (temp 2X1 matrix of float) +0:15 Sequence +0:15 move second child to first child (temp 1X3 matrix of float) +0:15 'r02' (temp 1X3 matrix of float) +0:15 transpose (temp 1X3 matrix of float) +0:15 'f3x1' (temp 3X1 matrix of float) +0:16 Sequence +0:16 move second child to first child (temp 1X4 matrix of float) +0:16 'r03' (temp 1X4 matrix of float) +0:16 transpose (temp 1X4 matrix of float) +0:16 'f4x1' (temp 4X1 matrix of float) +0:18 Sequence +0:18 move second child to first child (temp 1X1 matrix of float) +0:18 'r10' (temp 1X1 matrix of float) +0:18 transpose (temp 1X1 matrix of float) +0:18 'f1x1' (temp 1X1 matrix of float) +0:19 Sequence +0:19 move second child to first child (temp 2X1 matrix of float) +0:19 'r11' (temp 2X1 matrix of float) +0:19 transpose (temp 2X1 matrix of float) +0:19 'f1x2' (temp 1X2 matrix of float) +0:20 Sequence +0:20 move second child to first child (temp 3X1 matrix of float) +0:20 'r12' (temp 3X1 matrix of float) +0:20 transpose (temp 3X1 matrix of float) +0:20 'f1x3' (temp 1X3 matrix of float) +0:21 Sequence +0:21 move second child to first child (temp 4X1 matrix of float) +0:21 'r13' (temp 4X1 matrix of float) +0:21 transpose (temp 4X1 matrix of float) +0:21 'f1x4' (temp 1X4 matrix of float) +0:27 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:27 Function Parameters: +0:? Sequence +0:29 move second child to first child (temp 4-component vector of float) +0:29 color: direct index for structure (temp 4-component vector of float) +0:29 'ps_output' (temp structure{temp 4-component vector of float color}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:30 Sequence +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (temp structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 72 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 68 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 6 "TestMatNx1(" + Name 12 "r00" + Name 13 "f1x1" + Name 19 "r01" + Name 22 "f2x1" + Name 28 "r02" + Name 31 "f3x1" + Name 37 "r03" + Name 40 "f4x1" + Name 43 "r10" + Name 46 "r11" + Name 47 "f1x2" + Name 50 "r12" + Name 51 "f1x3" + Name 54 "r13" + Name 55 "f1x4" + Name 58 "PS_OUTPUT" + MemberName 58(PS_OUTPUT) 0 "color" + Name 60 "ps_output" + Name 68 "color" + Decorate 68(color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeFloat 32 + 9: TypeVector 8(float) 1 + 10: TypeMatrix 9(fvec) 1 + 11: TypePointer Function 10 + 16: TypeVector 8(float) 2 + 17: TypeMatrix 16(fvec2) 1 + 18: TypePointer Function 17 + 20: TypeMatrix 9(fvec) 2 + 21: TypePointer Function 20 + 25: TypeVector 8(float) 3 + 26: TypeMatrix 25(fvec3) 1 + 27: TypePointer Function 26 + 29: TypeMatrix 9(fvec) 3 + 30: TypePointer Function 29 + 34: TypeVector 8(float) 4 + 35: TypeMatrix 34(fvec4) 1 + 36: TypePointer Function 35 + 38: TypeMatrix 9(fvec) 4 + 39: TypePointer Function 38 + 58(PS_OUTPUT): TypeStruct 34(fvec4) + 59: TypePointer Function 58(PS_OUTPUT) + 61: TypeInt 32 1 + 62: 61(int) Constant 0 + 63: 8(float) Constant 1065353216 + 64: 34(fvec4) ConstantComposite 63 63 63 63 + 65: TypePointer Function 34(fvec4) + 67: TypePointer Output 34(fvec4) + 68(color): 67(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 60(ps_output): 59(ptr) Variable Function + 66: 65(ptr) AccessChain 60(ps_output) 62 + Store 66 64 + 69: 65(ptr) AccessChain 60(ps_output) 62 + 70: 34(fvec4) Load 69 + Store 68(color) 70 + Return + FunctionEnd + 6(TestMatNx1(): 2 Function None 3 + 7: Label + 12(r00): 11(ptr) Variable Function + 13(f1x1): 11(ptr) Variable Function + 19(r01): 18(ptr) Variable Function + 22(f2x1): 21(ptr) Variable Function + 28(r02): 27(ptr) Variable Function + 31(f3x1): 30(ptr) Variable Function + 37(r03): 36(ptr) Variable Function + 40(f4x1): 39(ptr) Variable Function + 43(r10): 11(ptr) Variable Function + 46(r11): 21(ptr) Variable Function + 47(f1x2): 18(ptr) Variable Function + 50(r12): 30(ptr) Variable Function + 51(f1x3): 27(ptr) Variable Function + 54(r13): 39(ptr) Variable Function + 55(f1x4): 36(ptr) Variable Function + 14: 10 Load 13(f1x1) + 15: 10 Transpose 14 + Store 12(r00) 15 + 23: 20 Load 22(f2x1) + 24: 17 Transpose 23 + Store 19(r01) 24 + 32: 29 Load 31(f3x1) + 33: 26 Transpose 32 + Store 28(r02) 33 + 41: 38 Load 40(f4x1) + 42: 35 Transpose 41 + Store 37(r03) 42 + 44: 10 Load 13(f1x1) + 45: 10 Transpose 44 + Store 43(r10) 45 + 48: 17 Load 47(f1x2) + 49: 20 Transpose 48 + Store 46(r11) 49 + 52: 26 Load 51(f1x3) + 53: 29 Transpose 52 + Store 50(r12) 53 + 56: 35 Load 55(f1x4) + 57: 38 Transpose 56 + Store 54(r13) 57 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.matType.bool.frag.out b/Test/baseResults/hlsl.matType.bool.frag.out new file mode 100644 index 00000000..e24c8784 --- /dev/null +++ b/Test/baseResults/hlsl.matType.bool.frag.out @@ -0,0 +1,419 @@ +hlsl.matType.bool.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: TestBoolMatTypes( (temp void) +0:3 Function Parameters: +0:? Sequence +0:25 Sequence +0:25 move second child to first child (temp 1X1 matrix of bool) +0:25 'r00' (temp 1X1 matrix of bool) +0:25 transpose (temp 1X1 matrix of bool) +0:25 'b1x1' (temp 1X1 matrix of bool) +0:26 Sequence +0:26 move second child to first child (temp 1X2 matrix of bool) +0:26 'r01' (temp 1X2 matrix of bool) +0:26 transpose (temp 1X2 matrix of bool) +0:26 'b2x1' (temp 2X1 matrix of bool) +0:27 Sequence +0:27 move second child to first child (temp 1X3 matrix of bool) +0:27 'r02' (temp 1X3 matrix of bool) +0:27 transpose (temp 1X3 matrix of bool) +0:27 'b3x1' (temp 3X1 matrix of bool) +0:28 Sequence +0:28 move second child to first child (temp 1X4 matrix of bool) +0:28 'r03' (temp 1X4 matrix of bool) +0:28 transpose (temp 1X4 matrix of bool) +0:28 'b4x1' (temp 4X1 matrix of bool) +0:30 Sequence +0:30 move second child to first child (temp 2X1 matrix of bool) +0:30 'r10' (temp 2X1 matrix of bool) +0:30 transpose (temp 2X1 matrix of bool) +0:30 'b1x2' (temp 1X2 matrix of bool) +0:31 Sequence +0:31 move second child to first child (temp 2X2 matrix of bool) +0:31 'r11' (temp 2X2 matrix of bool) +0:31 transpose (temp 2X2 matrix of bool) +0:31 'b2x2' (temp 2X2 matrix of bool) +0:32 Sequence +0:32 move second child to first child (temp 2X3 matrix of bool) +0:32 'r12' (temp 2X3 matrix of bool) +0:32 transpose (temp 2X3 matrix of bool) +0:32 'b3x2' (temp 3X2 matrix of bool) +0:33 Sequence +0:33 move second child to first child (temp 2X4 matrix of bool) +0:33 'r13' (temp 2X4 matrix of bool) +0:33 transpose (temp 2X4 matrix of bool) +0:33 'b4x2' (temp 4X2 matrix of bool) +0:35 Sequence +0:35 move second child to first child (temp 3X1 matrix of bool) +0:35 'r20' (temp 3X1 matrix of bool) +0:35 transpose (temp 3X1 matrix of bool) +0:35 'b1x3' (temp 1X3 matrix of bool) +0:36 Sequence +0:36 move second child to first child (temp 3X2 matrix of bool) +0:36 'r21' (temp 3X2 matrix of bool) +0:36 transpose (temp 3X2 matrix of bool) +0:36 'b2x3' (temp 2X3 matrix of bool) +0:37 Sequence +0:37 move second child to first child (temp 3X3 matrix of bool) +0:37 'r22' (temp 3X3 matrix of bool) +0:37 transpose (temp 3X3 matrix of bool) +0:37 'b3x3' (temp 3X3 matrix of bool) +0:38 Sequence +0:38 move second child to first child (temp 3X4 matrix of bool) +0:38 'r23' (temp 3X4 matrix of bool) +0:38 transpose (temp 3X4 matrix of bool) +0:38 'b4x3' (temp 4X3 matrix of bool) +0:40 Sequence +0:40 move second child to first child (temp 4X1 matrix of bool) +0:40 'r30' (temp 4X1 matrix of bool) +0:40 transpose (temp 4X1 matrix of bool) +0:40 'b1x4' (temp 1X4 matrix of bool) +0:41 Sequence +0:41 move second child to first child (temp 4X2 matrix of bool) +0:41 'r31' (temp 4X2 matrix of bool) +0:41 transpose (temp 4X2 matrix of bool) +0:41 'b2x4' (temp 2X4 matrix of bool) +0:42 Sequence +0:42 move second child to first child (temp 4X3 matrix of bool) +0:42 'r32' (temp 4X3 matrix of bool) +0:42 transpose (temp 4X3 matrix of bool) +0:42 'b3x4' (temp 3X4 matrix of bool) +0:43 Sequence +0:43 move second child to first child (temp 4X4 matrix of bool) +0:43 'r33' (temp 4X4 matrix of bool) +0:43 transpose (temp 4X4 matrix of bool) +0:43 'b4x4' (temp 4X4 matrix of bool) +0:49 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:49 Function Parameters: +0:? Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 color: direct index for structure (temp 4-component vector of float) +0:51 'ps_output' (temp structure{temp 4-component vector of float color}) +0:51 Constant: +0:51 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:52 Sequence +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:52 color: direct index for structure (temp 4-component vector of float) +0:52 'ps_output' (temp structure{temp 4-component vector of float color}) +0:52 Constant: +0:52 0 (const int) +0:52 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: TestBoolMatTypes( (temp void) +0:3 Function Parameters: +0:? Sequence +0:25 Sequence +0:25 move second child to first child (temp 1X1 matrix of bool) +0:25 'r00' (temp 1X1 matrix of bool) +0:25 transpose (temp 1X1 matrix of bool) +0:25 'b1x1' (temp 1X1 matrix of bool) +0:26 Sequence +0:26 move second child to first child (temp 1X2 matrix of bool) +0:26 'r01' (temp 1X2 matrix of bool) +0:26 transpose (temp 1X2 matrix of bool) +0:26 'b2x1' (temp 2X1 matrix of bool) +0:27 Sequence +0:27 move second child to first child (temp 1X3 matrix of bool) +0:27 'r02' (temp 1X3 matrix of bool) +0:27 transpose (temp 1X3 matrix of bool) +0:27 'b3x1' (temp 3X1 matrix of bool) +0:28 Sequence +0:28 move second child to first child (temp 1X4 matrix of bool) +0:28 'r03' (temp 1X4 matrix of bool) +0:28 transpose (temp 1X4 matrix of bool) +0:28 'b4x1' (temp 4X1 matrix of bool) +0:30 Sequence +0:30 move second child to first child (temp 2X1 matrix of bool) +0:30 'r10' (temp 2X1 matrix of bool) +0:30 transpose (temp 2X1 matrix of bool) +0:30 'b1x2' (temp 1X2 matrix of bool) +0:31 Sequence +0:31 move second child to first child (temp 2X2 matrix of bool) +0:31 'r11' (temp 2X2 matrix of bool) +0:31 transpose (temp 2X2 matrix of bool) +0:31 'b2x2' (temp 2X2 matrix of bool) +0:32 Sequence +0:32 move second child to first child (temp 2X3 matrix of bool) +0:32 'r12' (temp 2X3 matrix of bool) +0:32 transpose (temp 2X3 matrix of bool) +0:32 'b3x2' (temp 3X2 matrix of bool) +0:33 Sequence +0:33 move second child to first child (temp 2X4 matrix of bool) +0:33 'r13' (temp 2X4 matrix of bool) +0:33 transpose (temp 2X4 matrix of bool) +0:33 'b4x2' (temp 4X2 matrix of bool) +0:35 Sequence +0:35 move second child to first child (temp 3X1 matrix of bool) +0:35 'r20' (temp 3X1 matrix of bool) +0:35 transpose (temp 3X1 matrix of bool) +0:35 'b1x3' (temp 1X3 matrix of bool) +0:36 Sequence +0:36 move second child to first child (temp 3X2 matrix of bool) +0:36 'r21' (temp 3X2 matrix of bool) +0:36 transpose (temp 3X2 matrix of bool) +0:36 'b2x3' (temp 2X3 matrix of bool) +0:37 Sequence +0:37 move second child to first child (temp 3X3 matrix of bool) +0:37 'r22' (temp 3X3 matrix of bool) +0:37 transpose (temp 3X3 matrix of bool) +0:37 'b3x3' (temp 3X3 matrix of bool) +0:38 Sequence +0:38 move second child to first child (temp 3X4 matrix of bool) +0:38 'r23' (temp 3X4 matrix of bool) +0:38 transpose (temp 3X4 matrix of bool) +0:38 'b4x3' (temp 4X3 matrix of bool) +0:40 Sequence +0:40 move second child to first child (temp 4X1 matrix of bool) +0:40 'r30' (temp 4X1 matrix of bool) +0:40 transpose (temp 4X1 matrix of bool) +0:40 'b1x4' (temp 1X4 matrix of bool) +0:41 Sequence +0:41 move second child to first child (temp 4X2 matrix of bool) +0:41 'r31' (temp 4X2 matrix of bool) +0:41 transpose (temp 4X2 matrix of bool) +0:41 'b2x4' (temp 2X4 matrix of bool) +0:42 Sequence +0:42 move second child to first child (temp 4X3 matrix of bool) +0:42 'r32' (temp 4X3 matrix of bool) +0:42 transpose (temp 4X3 matrix of bool) +0:42 'b3x4' (temp 3X4 matrix of bool) +0:43 Sequence +0:43 move second child to first child (temp 4X4 matrix of bool) +0:43 'r33' (temp 4X4 matrix of bool) +0:43 transpose (temp 4X4 matrix of bool) +0:43 'b4x4' (temp 4X4 matrix of bool) +0:49 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:49 Function Parameters: +0:? Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 color: direct index for structure (temp 4-component vector of float) +0:51 'ps_output' (temp structure{temp 4-component vector of float color}) +0:51 Constant: +0:51 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:52 Sequence +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:52 color: direct index for structure (temp 4-component vector of float) +0:52 'ps_output' (temp structure{temp 4-component vector of float color}) +0:52 Constant: +0:52 0 (const int) +0:52 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 125 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 121 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 6 "TestBoolMatTypes(" + Name 12 "r00" + Name 13 "b1x1" + Name 19 "r01" + Name 22 "b2x1" + Name 28 "r02" + Name 31 "b3x1" + Name 37 "r03" + Name 40 "b4x1" + Name 43 "r10" + Name 44 "b1x2" + Name 49 "r11" + Name 50 "b2x2" + Name 55 "r12" + Name 58 "b3x2" + Name 63 "r13" + Name 66 "b4x2" + Name 69 "r20" + Name 70 "b1x3" + Name 73 "r21" + Name 74 "b2x3" + Name 79 "r22" + Name 80 "b3x3" + Name 85 "r23" + Name 88 "b4x3" + Name 91 "r30" + Name 92 "b1x4" + Name 95 "r31" + Name 96 "b2x4" + Name 99 "r32" + Name 100 "b3x4" + Name 105 "r33" + Name 106 "b4x4" + Name 111 "PS_OUTPUT" + MemberName 111(PS_OUTPUT) 0 "color" + Name 113 "ps_output" + Name 121 "color" + Decorate 121(color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeBool + 9: TypeVector 8(bool) 1 + 10: TypeMatrix 9(bvec) 1 + 11: TypePointer Function 10 + 16: TypeVector 8(bool) 2 + 17: TypeMatrix 16(bvec2) 1 + 18: TypePointer Function 17 + 20: TypeMatrix 9(bvec) 2 + 21: TypePointer Function 20 + 25: TypeVector 8(bool) 3 + 26: TypeMatrix 25(bvec3) 1 + 27: TypePointer Function 26 + 29: TypeMatrix 9(bvec) 3 + 30: TypePointer Function 29 + 34: TypeVector 8(bool) 4 + 35: TypeMatrix 34(bvec4) 1 + 36: TypePointer Function 35 + 38: TypeMatrix 9(bvec) 4 + 39: TypePointer Function 38 + 47: TypeMatrix 16(bvec2) 2 + 48: TypePointer Function 47 + 53: TypeMatrix 25(bvec3) 2 + 54: TypePointer Function 53 + 56: TypeMatrix 16(bvec2) 3 + 57: TypePointer Function 56 + 61: TypeMatrix 34(bvec4) 2 + 62: TypePointer Function 61 + 64: TypeMatrix 16(bvec2) 4 + 65: TypePointer Function 64 + 77: TypeMatrix 25(bvec3) 3 + 78: TypePointer Function 77 + 83: TypeMatrix 34(bvec4) 3 + 84: TypePointer Function 83 + 86: TypeMatrix 25(bvec3) 4 + 87: TypePointer Function 86 + 103: TypeMatrix 34(bvec4) 4 + 104: TypePointer Function 103 + 109: TypeFloat 32 + 110: TypeVector 109(float) 4 + 111(PS_OUTPUT): TypeStruct 110(fvec4) + 112: TypePointer Function 111(PS_OUTPUT) + 114: TypeInt 32 1 + 115: 114(int) Constant 0 + 116: 109(float) Constant 0 + 117: 110(fvec4) ConstantComposite 116 116 116 116 + 118: TypePointer Function 110(fvec4) + 120: TypePointer Output 110(fvec4) + 121(color): 120(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 113(ps_output): 112(ptr) Variable Function + 119: 118(ptr) AccessChain 113(ps_output) 115 + Store 119 117 + 122: 118(ptr) AccessChain 113(ps_output) 115 + 123: 110(fvec4) Load 122 + Store 121(color) 123 + Return + FunctionEnd +6(TestBoolMatTypes(): 2 Function None 3 + 7: Label + 12(r00): 11(ptr) Variable Function + 13(b1x1): 11(ptr) Variable Function + 19(r01): 18(ptr) Variable Function + 22(b2x1): 21(ptr) Variable Function + 28(r02): 27(ptr) Variable Function + 31(b3x1): 30(ptr) Variable Function + 37(r03): 36(ptr) Variable Function + 40(b4x1): 39(ptr) Variable Function + 43(r10): 21(ptr) Variable Function + 44(b1x2): 18(ptr) Variable Function + 49(r11): 48(ptr) Variable Function + 50(b2x2): 48(ptr) Variable Function + 55(r12): 54(ptr) Variable Function + 58(b3x2): 57(ptr) Variable Function + 63(r13): 62(ptr) Variable Function + 66(b4x2): 65(ptr) Variable Function + 69(r20): 30(ptr) Variable Function + 70(b1x3): 27(ptr) Variable Function + 73(r21): 57(ptr) Variable Function + 74(b2x3): 54(ptr) Variable Function + 79(r22): 78(ptr) Variable Function + 80(b3x3): 78(ptr) Variable Function + 85(r23): 84(ptr) Variable Function + 88(b4x3): 87(ptr) Variable Function + 91(r30): 39(ptr) Variable Function + 92(b1x4): 36(ptr) Variable Function + 95(r31): 65(ptr) Variable Function + 96(b2x4): 62(ptr) Variable Function + 99(r32): 87(ptr) Variable Function + 100(b3x4): 84(ptr) Variable Function + 105(r33): 104(ptr) Variable Function + 106(b4x4): 104(ptr) Variable Function + 14: 10 Load 13(b1x1) + 15: 10 Transpose 14 + Store 12(r00) 15 + 23: 20 Load 22(b2x1) + 24: 17 Transpose 23 + Store 19(r01) 24 + 32: 29 Load 31(b3x1) + 33: 26 Transpose 32 + Store 28(r02) 33 + 41: 38 Load 40(b4x1) + 42: 35 Transpose 41 + Store 37(r03) 42 + 45: 17 Load 44(b1x2) + 46: 20 Transpose 45 + Store 43(r10) 46 + 51: 47 Load 50(b2x2) + 52: 47 Transpose 51 + Store 49(r11) 52 + 59: 56 Load 58(b3x2) + 60: 53 Transpose 59 + Store 55(r12) 60 + 67: 64 Load 66(b4x2) + 68: 61 Transpose 67 + Store 63(r13) 68 + 71: 26 Load 70(b1x3) + 72: 29 Transpose 71 + Store 69(r20) 72 + 75: 53 Load 74(b2x3) + 76: 56 Transpose 75 + Store 73(r21) 76 + 81: 77 Load 80(b3x3) + 82: 77 Transpose 81 + Store 79(r22) 82 + 89: 86 Load 88(b4x3) + 90: 83 Transpose 89 + Store 85(r23) 90 + 93: 35 Load 92(b1x4) + 94: 38 Transpose 93 + Store 91(r30) 94 + 97: 61 Load 96(b2x4) + 98: 64 Transpose 97 + Store 95(r31) 98 + 101: 83 Load 100(b3x4) + 102: 86 Transpose 101 + Store 99(r32) 102 + 107: 103 Load 106(b4x4) + 108: 103 Transpose 107 + Store 105(r33) 108 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.matType.int.frag.out b/Test/baseResults/hlsl.matType.int.frag.out new file mode 100644 index 00000000..d7ffb0f7 --- /dev/null +++ b/Test/baseResults/hlsl.matType.int.frag.out @@ -0,0 +1,738 @@ +hlsl.matType.int.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: TestIntMatTypes( (temp void) +0:3 Function Parameters: +0:? Sequence +0:25 Sequence +0:25 move second child to first child (temp 1X1 matrix of int) +0:25 'r00' (temp 1X1 matrix of int) +0:25 transpose (temp 1X1 matrix of int) +0:25 'i1x1' (temp 1X1 matrix of int) +0:26 Sequence +0:26 move second child to first child (temp 1X2 matrix of int) +0:26 'r01' (temp 1X2 matrix of int) +0:26 transpose (temp 1X2 matrix of int) +0:26 'i2x1' (temp 2X1 matrix of int) +0:27 Sequence +0:27 move second child to first child (temp 1X3 matrix of int) +0:27 'r02' (temp 1X3 matrix of int) +0:27 transpose (temp 1X3 matrix of int) +0:27 'i3x1' (temp 3X1 matrix of int) +0:28 Sequence +0:28 move second child to first child (temp 1X4 matrix of int) +0:28 'r03' (temp 1X4 matrix of int) +0:28 transpose (temp 1X4 matrix of int) +0:28 'i4x1' (temp 4X1 matrix of int) +0:30 Sequence +0:30 move second child to first child (temp 2X1 matrix of int) +0:30 'r10' (temp 2X1 matrix of int) +0:30 transpose (temp 2X1 matrix of int) +0:30 'i1x2' (temp 1X2 matrix of int) +0:31 Sequence +0:31 move second child to first child (temp 2X2 matrix of int) +0:31 'r11' (temp 2X2 matrix of int) +0:31 transpose (temp 2X2 matrix of int) +0:31 'i2x2' (temp 2X2 matrix of int) +0:32 Sequence +0:32 move second child to first child (temp 2X3 matrix of int) +0:32 'r12' (temp 2X3 matrix of int) +0:32 transpose (temp 2X3 matrix of int) +0:32 'i3x2' (temp 3X2 matrix of int) +0:33 Sequence +0:33 move second child to first child (temp 2X4 matrix of int) +0:33 'r13' (temp 2X4 matrix of int) +0:33 transpose (temp 2X4 matrix of int) +0:33 'i4x2' (temp 4X2 matrix of int) +0:35 Sequence +0:35 move second child to first child (temp 3X1 matrix of int) +0:35 'r20' (temp 3X1 matrix of int) +0:35 transpose (temp 3X1 matrix of int) +0:35 'i1x3' (temp 1X3 matrix of int) +0:36 Sequence +0:36 move second child to first child (temp 3X2 matrix of int) +0:36 'r21' (temp 3X2 matrix of int) +0:36 transpose (temp 3X2 matrix of int) +0:36 'i2x3' (temp 2X3 matrix of int) +0:37 Sequence +0:37 move second child to first child (temp 3X3 matrix of int) +0:37 'r22' (temp 3X3 matrix of int) +0:37 transpose (temp 3X3 matrix of int) +0:37 'i3x3' (temp 3X3 matrix of int) +0:38 Sequence +0:38 move second child to first child (temp 3X4 matrix of int) +0:38 'r23' (temp 3X4 matrix of int) +0:38 transpose (temp 3X4 matrix of int) +0:38 'i4x3' (temp 4X3 matrix of int) +0:40 Sequence +0:40 move second child to first child (temp 4X1 matrix of int) +0:40 'r30' (temp 4X1 matrix of int) +0:40 transpose (temp 4X1 matrix of int) +0:40 'i1x4' (temp 1X4 matrix of int) +0:41 Sequence +0:41 move second child to first child (temp 4X2 matrix of int) +0:41 'r31' (temp 4X2 matrix of int) +0:41 transpose (temp 4X2 matrix of int) +0:41 'i2x4' (temp 2X4 matrix of int) +0:42 Sequence +0:42 move second child to first child (temp 4X3 matrix of int) +0:42 'r32' (temp 4X3 matrix of int) +0:42 transpose (temp 4X3 matrix of int) +0:42 'i3x4' (temp 3X4 matrix of int) +0:43 Sequence +0:43 move second child to first child (temp 4X4 matrix of int) +0:43 'r33' (temp 4X4 matrix of int) +0:43 transpose (temp 4X4 matrix of int) +0:43 'i4x4' (temp 4X4 matrix of int) +0:47 Function Definition: TestUintMatTypes( (temp void) +0:47 Function Parameters: +0:? Sequence +0:69 Sequence +0:69 move second child to first child (temp 1X1 matrix of uint) +0:69 'r00' (temp 1X1 matrix of uint) +0:69 transpose (temp 1X1 matrix of uint) +0:69 'u1x1' (temp 1X1 matrix of uint) +0:70 Sequence +0:70 move second child to first child (temp 1X2 matrix of uint) +0:70 'r01' (temp 1X2 matrix of uint) +0:70 transpose (temp 1X2 matrix of uint) +0:70 'u2x1' (temp 2X1 matrix of uint) +0:71 Sequence +0:71 move second child to first child (temp 1X3 matrix of uint) +0:71 'r02' (temp 1X3 matrix of uint) +0:71 transpose (temp 1X3 matrix of uint) +0:71 'u3x1' (temp 3X1 matrix of uint) +0:72 Sequence +0:72 move second child to first child (temp 1X4 matrix of uint) +0:72 'r03' (temp 1X4 matrix of uint) +0:72 transpose (temp 1X4 matrix of uint) +0:72 'u4x1' (temp 4X1 matrix of uint) +0:74 Sequence +0:74 move second child to first child (temp 2X1 matrix of uint) +0:74 'r10' (temp 2X1 matrix of uint) +0:74 transpose (temp 2X1 matrix of uint) +0:74 'u1x2' (temp 1X2 matrix of uint) +0:75 Sequence +0:75 move second child to first child (temp 2X2 matrix of uint) +0:75 'r11' (temp 2X2 matrix of uint) +0:75 transpose (temp 2X2 matrix of uint) +0:75 'u2x2' (temp 2X2 matrix of uint) +0:76 Sequence +0:76 move second child to first child (temp 2X3 matrix of uint) +0:76 'r12' (temp 2X3 matrix of uint) +0:76 transpose (temp 2X3 matrix of uint) +0:76 'u3x2' (temp 3X2 matrix of uint) +0:77 Sequence +0:77 move second child to first child (temp 2X4 matrix of uint) +0:77 'r13' (temp 2X4 matrix of uint) +0:77 transpose (temp 2X4 matrix of uint) +0:77 'u4x2' (temp 4X2 matrix of uint) +0:79 Sequence +0:79 move second child to first child (temp 3X1 matrix of uint) +0:79 'r20' (temp 3X1 matrix of uint) +0:79 transpose (temp 3X1 matrix of uint) +0:79 'u1x3' (temp 1X3 matrix of uint) +0:80 Sequence +0:80 move second child to first child (temp 3X2 matrix of uint) +0:80 'r21' (temp 3X2 matrix of uint) +0:80 transpose (temp 3X2 matrix of uint) +0:80 'u2x3' (temp 2X3 matrix of uint) +0:81 Sequence +0:81 move second child to first child (temp 3X3 matrix of uint) +0:81 'r22' (temp 3X3 matrix of uint) +0:81 transpose (temp 3X3 matrix of uint) +0:81 'u3x3' (temp 3X3 matrix of uint) +0:82 Sequence +0:82 move second child to first child (temp 3X4 matrix of uint) +0:82 'r23' (temp 3X4 matrix of uint) +0:82 transpose (temp 3X4 matrix of uint) +0:82 'u4x3' (temp 4X3 matrix of uint) +0:84 Sequence +0:84 move second child to first child (temp 4X1 matrix of uint) +0:84 'r30' (temp 4X1 matrix of uint) +0:84 transpose (temp 4X1 matrix of uint) +0:84 'u1x4' (temp 1X4 matrix of uint) +0:85 Sequence +0:85 move second child to first child (temp 4X2 matrix of uint) +0:85 'r31' (temp 4X2 matrix of uint) +0:85 transpose (temp 4X2 matrix of uint) +0:85 'u2x4' (temp 2X4 matrix of uint) +0:86 Sequence +0:86 move second child to first child (temp 4X3 matrix of uint) +0:86 'r32' (temp 4X3 matrix of uint) +0:86 transpose (temp 4X3 matrix of uint) +0:86 'u3x4' (temp 3X4 matrix of uint) +0:87 Sequence +0:87 move second child to first child (temp 4X4 matrix of uint) +0:87 'r33' (temp 4X4 matrix of uint) +0:87 transpose (temp 4X4 matrix of uint) +0:87 'u4x4' (temp 4X4 matrix of uint) +0:93 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:93 Function Parameters: +0:? Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:95 color: direct index for structure (temp 4-component vector of float) +0:95 'ps_output' (temp structure{temp 4-component vector of float color}) +0:95 Constant: +0:95 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:96 Sequence +0:96 Sequence +0:96 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:96 color: direct index for structure (temp 4-component vector of float) +0:96 'ps_output' (temp structure{temp 4-component vector of float color}) +0:96 Constant: +0:96 0 (const int) +0:96 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: TestIntMatTypes( (temp void) +0:3 Function Parameters: +0:? Sequence +0:25 Sequence +0:25 move second child to first child (temp 1X1 matrix of int) +0:25 'r00' (temp 1X1 matrix of int) +0:25 transpose (temp 1X1 matrix of int) +0:25 'i1x1' (temp 1X1 matrix of int) +0:26 Sequence +0:26 move second child to first child (temp 1X2 matrix of int) +0:26 'r01' (temp 1X2 matrix of int) +0:26 transpose (temp 1X2 matrix of int) +0:26 'i2x1' (temp 2X1 matrix of int) +0:27 Sequence +0:27 move second child to first child (temp 1X3 matrix of int) +0:27 'r02' (temp 1X3 matrix of int) +0:27 transpose (temp 1X3 matrix of int) +0:27 'i3x1' (temp 3X1 matrix of int) +0:28 Sequence +0:28 move second child to first child (temp 1X4 matrix of int) +0:28 'r03' (temp 1X4 matrix of int) +0:28 transpose (temp 1X4 matrix of int) +0:28 'i4x1' (temp 4X1 matrix of int) +0:30 Sequence +0:30 move second child to first child (temp 2X1 matrix of int) +0:30 'r10' (temp 2X1 matrix of int) +0:30 transpose (temp 2X1 matrix of int) +0:30 'i1x2' (temp 1X2 matrix of int) +0:31 Sequence +0:31 move second child to first child (temp 2X2 matrix of int) +0:31 'r11' (temp 2X2 matrix of int) +0:31 transpose (temp 2X2 matrix of int) +0:31 'i2x2' (temp 2X2 matrix of int) +0:32 Sequence +0:32 move second child to first child (temp 2X3 matrix of int) +0:32 'r12' (temp 2X3 matrix of int) +0:32 transpose (temp 2X3 matrix of int) +0:32 'i3x2' (temp 3X2 matrix of int) +0:33 Sequence +0:33 move second child to first child (temp 2X4 matrix of int) +0:33 'r13' (temp 2X4 matrix of int) +0:33 transpose (temp 2X4 matrix of int) +0:33 'i4x2' (temp 4X2 matrix of int) +0:35 Sequence +0:35 move second child to first child (temp 3X1 matrix of int) +0:35 'r20' (temp 3X1 matrix of int) +0:35 transpose (temp 3X1 matrix of int) +0:35 'i1x3' (temp 1X3 matrix of int) +0:36 Sequence +0:36 move second child to first child (temp 3X2 matrix of int) +0:36 'r21' (temp 3X2 matrix of int) +0:36 transpose (temp 3X2 matrix of int) +0:36 'i2x3' (temp 2X3 matrix of int) +0:37 Sequence +0:37 move second child to first child (temp 3X3 matrix of int) +0:37 'r22' (temp 3X3 matrix of int) +0:37 transpose (temp 3X3 matrix of int) +0:37 'i3x3' (temp 3X3 matrix of int) +0:38 Sequence +0:38 move second child to first child (temp 3X4 matrix of int) +0:38 'r23' (temp 3X4 matrix of int) +0:38 transpose (temp 3X4 matrix of int) +0:38 'i4x3' (temp 4X3 matrix of int) +0:40 Sequence +0:40 move second child to first child (temp 4X1 matrix of int) +0:40 'r30' (temp 4X1 matrix of int) +0:40 transpose (temp 4X1 matrix of int) +0:40 'i1x4' (temp 1X4 matrix of int) +0:41 Sequence +0:41 move second child to first child (temp 4X2 matrix of int) +0:41 'r31' (temp 4X2 matrix of int) +0:41 transpose (temp 4X2 matrix of int) +0:41 'i2x4' (temp 2X4 matrix of int) +0:42 Sequence +0:42 move second child to first child (temp 4X3 matrix of int) +0:42 'r32' (temp 4X3 matrix of int) +0:42 transpose (temp 4X3 matrix of int) +0:42 'i3x4' (temp 3X4 matrix of int) +0:43 Sequence +0:43 move second child to first child (temp 4X4 matrix of int) +0:43 'r33' (temp 4X4 matrix of int) +0:43 transpose (temp 4X4 matrix of int) +0:43 'i4x4' (temp 4X4 matrix of int) +0:47 Function Definition: TestUintMatTypes( (temp void) +0:47 Function Parameters: +0:? Sequence +0:69 Sequence +0:69 move second child to first child (temp 1X1 matrix of uint) +0:69 'r00' (temp 1X1 matrix of uint) +0:69 transpose (temp 1X1 matrix of uint) +0:69 'u1x1' (temp 1X1 matrix of uint) +0:70 Sequence +0:70 move second child to first child (temp 1X2 matrix of uint) +0:70 'r01' (temp 1X2 matrix of uint) +0:70 transpose (temp 1X2 matrix of uint) +0:70 'u2x1' (temp 2X1 matrix of uint) +0:71 Sequence +0:71 move second child to first child (temp 1X3 matrix of uint) +0:71 'r02' (temp 1X3 matrix of uint) +0:71 transpose (temp 1X3 matrix of uint) +0:71 'u3x1' (temp 3X1 matrix of uint) +0:72 Sequence +0:72 move second child to first child (temp 1X4 matrix of uint) +0:72 'r03' (temp 1X4 matrix of uint) +0:72 transpose (temp 1X4 matrix of uint) +0:72 'u4x1' (temp 4X1 matrix of uint) +0:74 Sequence +0:74 move second child to first child (temp 2X1 matrix of uint) +0:74 'r10' (temp 2X1 matrix of uint) +0:74 transpose (temp 2X1 matrix of uint) +0:74 'u1x2' (temp 1X2 matrix of uint) +0:75 Sequence +0:75 move second child to first child (temp 2X2 matrix of uint) +0:75 'r11' (temp 2X2 matrix of uint) +0:75 transpose (temp 2X2 matrix of uint) +0:75 'u2x2' (temp 2X2 matrix of uint) +0:76 Sequence +0:76 move second child to first child (temp 2X3 matrix of uint) +0:76 'r12' (temp 2X3 matrix of uint) +0:76 transpose (temp 2X3 matrix of uint) +0:76 'u3x2' (temp 3X2 matrix of uint) +0:77 Sequence +0:77 move second child to first child (temp 2X4 matrix of uint) +0:77 'r13' (temp 2X4 matrix of uint) +0:77 transpose (temp 2X4 matrix of uint) +0:77 'u4x2' (temp 4X2 matrix of uint) +0:79 Sequence +0:79 move second child to first child (temp 3X1 matrix of uint) +0:79 'r20' (temp 3X1 matrix of uint) +0:79 transpose (temp 3X1 matrix of uint) +0:79 'u1x3' (temp 1X3 matrix of uint) +0:80 Sequence +0:80 move second child to first child (temp 3X2 matrix of uint) +0:80 'r21' (temp 3X2 matrix of uint) +0:80 transpose (temp 3X2 matrix of uint) +0:80 'u2x3' (temp 2X3 matrix of uint) +0:81 Sequence +0:81 move second child to first child (temp 3X3 matrix of uint) +0:81 'r22' (temp 3X3 matrix of uint) +0:81 transpose (temp 3X3 matrix of uint) +0:81 'u3x3' (temp 3X3 matrix of uint) +0:82 Sequence +0:82 move second child to first child (temp 3X4 matrix of uint) +0:82 'r23' (temp 3X4 matrix of uint) +0:82 transpose (temp 3X4 matrix of uint) +0:82 'u4x3' (temp 4X3 matrix of uint) +0:84 Sequence +0:84 move second child to first child (temp 4X1 matrix of uint) +0:84 'r30' (temp 4X1 matrix of uint) +0:84 transpose (temp 4X1 matrix of uint) +0:84 'u1x4' (temp 1X4 matrix of uint) +0:85 Sequence +0:85 move second child to first child (temp 4X2 matrix of uint) +0:85 'r31' (temp 4X2 matrix of uint) +0:85 transpose (temp 4X2 matrix of uint) +0:85 'u2x4' (temp 2X4 matrix of uint) +0:86 Sequence +0:86 move second child to first child (temp 4X3 matrix of uint) +0:86 'r32' (temp 4X3 matrix of uint) +0:86 transpose (temp 4X3 matrix of uint) +0:86 'u3x4' (temp 3X4 matrix of uint) +0:87 Sequence +0:87 move second child to first child (temp 4X4 matrix of uint) +0:87 'r33' (temp 4X4 matrix of uint) +0:87 transpose (temp 4X4 matrix of uint) +0:87 'u4x4' (temp 4X4 matrix of uint) +0:93 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:93 Function Parameters: +0:? Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:95 color: direct index for structure (temp 4-component vector of float) +0:95 'ps_output' (temp structure{temp 4-component vector of float color}) +0:95 Constant: +0:95 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:96 Sequence +0:96 Sequence +0:96 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:96 color: direct index for structure (temp 4-component vector of float) +0:96 'ps_output' (temp structure{temp 4-component vector of float color}) +0:96 Constant: +0:96 0 (const int) +0:96 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 227 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 223 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 6 "TestIntMatTypes(" + Name 8 "TestUintMatTypes(" + Name 14 "r00" + Name 15 "i1x1" + Name 21 "r01" + Name 24 "i2x1" + Name 30 "r02" + Name 33 "i3x1" + Name 39 "r03" + Name 42 "i4x1" + Name 45 "r10" + Name 46 "i1x2" + Name 51 "r11" + Name 52 "i2x2" + Name 57 "r12" + Name 60 "i3x2" + Name 65 "r13" + Name 68 "i4x2" + Name 71 "r20" + Name 72 "i1x3" + Name 75 "r21" + Name 76 "i2x3" + Name 81 "r22" + Name 82 "i3x3" + Name 87 "r23" + Name 90 "i4x3" + Name 93 "r30" + Name 94 "i1x4" + Name 97 "r31" + Name 98 "i2x4" + Name 101 "r32" + Name 102 "i3x4" + Name 107 "r33" + Name 108 "i4x4" + Name 115 "r00" + Name 116 "u1x1" + Name 122 "r01" + Name 125 "u2x1" + Name 131 "r02" + Name 134 "u3x1" + Name 140 "r03" + Name 143 "u4x1" + Name 146 "r10" + Name 147 "u1x2" + Name 152 "r11" + Name 153 "u2x2" + Name 158 "r12" + Name 161 "u3x2" + Name 166 "r13" + Name 169 "u4x2" + Name 172 "r20" + Name 173 "u1x3" + Name 176 "r21" + Name 177 "u2x3" + Name 182 "r22" + Name 183 "u3x3" + Name 188 "r23" + Name 191 "u4x3" + Name 194 "r30" + Name 195 "u1x4" + Name 198 "r31" + Name 199 "u2x4" + Name 202 "r32" + Name 203 "u3x4" + Name 208 "r33" + Name 209 "u4x4" + Name 214 "PS_OUTPUT" + MemberName 214(PS_OUTPUT) 0 "color" + Name 216 "ps_output" + Name 223 "color" + Decorate 223(color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 10: TypeInt 32 1 + 11: TypeVector 10(int) 1 + 12: TypeMatrix 11(ivec) 1 + 13: TypePointer Function 12 + 18: TypeVector 10(int) 2 + 19: TypeMatrix 18(ivec2) 1 + 20: TypePointer Function 19 + 22: TypeMatrix 11(ivec) 2 + 23: TypePointer Function 22 + 27: TypeVector 10(int) 3 + 28: TypeMatrix 27(ivec3) 1 + 29: TypePointer Function 28 + 31: TypeMatrix 11(ivec) 3 + 32: TypePointer Function 31 + 36: TypeVector 10(int) 4 + 37: TypeMatrix 36(ivec4) 1 + 38: TypePointer Function 37 + 40: TypeMatrix 11(ivec) 4 + 41: TypePointer Function 40 + 49: TypeMatrix 18(ivec2) 2 + 50: TypePointer Function 49 + 55: TypeMatrix 27(ivec3) 2 + 56: TypePointer Function 55 + 58: TypeMatrix 18(ivec2) 3 + 59: TypePointer Function 58 + 63: TypeMatrix 36(ivec4) 2 + 64: TypePointer Function 63 + 66: TypeMatrix 18(ivec2) 4 + 67: TypePointer Function 66 + 79: TypeMatrix 27(ivec3) 3 + 80: TypePointer Function 79 + 85: TypeMatrix 36(ivec4) 3 + 86: TypePointer Function 85 + 88: TypeMatrix 27(ivec3) 4 + 89: TypePointer Function 88 + 105: TypeMatrix 36(ivec4) 4 + 106: TypePointer Function 105 + 111: TypeInt 32 0 + 112: TypeVector 111(int) 1 + 113: TypeMatrix 112(ivec) 1 + 114: TypePointer Function 113 + 119: TypeVector 111(int) 2 + 120: TypeMatrix 119(ivec2) 1 + 121: TypePointer Function 120 + 123: TypeMatrix 112(ivec) 2 + 124: TypePointer Function 123 + 128: TypeVector 111(int) 3 + 129: TypeMatrix 128(ivec3) 1 + 130: TypePointer Function 129 + 132: TypeMatrix 112(ivec) 3 + 133: TypePointer Function 132 + 137: TypeVector 111(int) 4 + 138: TypeMatrix 137(ivec4) 1 + 139: TypePointer Function 138 + 141: TypeMatrix 112(ivec) 4 + 142: TypePointer Function 141 + 150: TypeMatrix 119(ivec2) 2 + 151: TypePointer Function 150 + 156: TypeMatrix 128(ivec3) 2 + 157: TypePointer Function 156 + 159: TypeMatrix 119(ivec2) 3 + 160: TypePointer Function 159 + 164: TypeMatrix 137(ivec4) 2 + 165: TypePointer Function 164 + 167: TypeMatrix 119(ivec2) 4 + 168: TypePointer Function 167 + 180: TypeMatrix 128(ivec3) 3 + 181: TypePointer Function 180 + 186: TypeMatrix 137(ivec4) 3 + 187: TypePointer Function 186 + 189: TypeMatrix 128(ivec3) 4 + 190: TypePointer Function 189 + 206: TypeMatrix 137(ivec4) 4 + 207: TypePointer Function 206 + 212: TypeFloat 32 + 213: TypeVector 212(float) 4 + 214(PS_OUTPUT): TypeStruct 213(fvec4) + 215: TypePointer Function 214(PS_OUTPUT) + 217: 10(int) Constant 0 + 218: 212(float) Constant 0 + 219: 213(fvec4) ConstantComposite 218 218 218 218 + 220: TypePointer Function 213(fvec4) + 222: TypePointer Output 213(fvec4) + 223(color): 222(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 216(ps_output): 215(ptr) Variable Function + 221: 220(ptr) AccessChain 216(ps_output) 217 + Store 221 219 + 224: 220(ptr) AccessChain 216(ps_output) 217 + 225: 213(fvec4) Load 224 + Store 223(color) 225 + Return + FunctionEnd +6(TestIntMatTypes(): 2 Function None 3 + 7: Label + 14(r00): 13(ptr) Variable Function + 15(i1x1): 13(ptr) Variable Function + 21(r01): 20(ptr) Variable Function + 24(i2x1): 23(ptr) Variable Function + 30(r02): 29(ptr) Variable Function + 33(i3x1): 32(ptr) Variable Function + 39(r03): 38(ptr) Variable Function + 42(i4x1): 41(ptr) Variable Function + 45(r10): 23(ptr) Variable Function + 46(i1x2): 20(ptr) Variable Function + 51(r11): 50(ptr) Variable Function + 52(i2x2): 50(ptr) Variable Function + 57(r12): 56(ptr) Variable Function + 60(i3x2): 59(ptr) Variable Function + 65(r13): 64(ptr) Variable Function + 68(i4x2): 67(ptr) Variable Function + 71(r20): 32(ptr) Variable Function + 72(i1x3): 29(ptr) Variable Function + 75(r21): 59(ptr) Variable Function + 76(i2x3): 56(ptr) Variable Function + 81(r22): 80(ptr) Variable Function + 82(i3x3): 80(ptr) Variable Function + 87(r23): 86(ptr) Variable Function + 90(i4x3): 89(ptr) Variable Function + 93(r30): 41(ptr) Variable Function + 94(i1x4): 38(ptr) Variable Function + 97(r31): 67(ptr) Variable Function + 98(i2x4): 64(ptr) Variable Function + 101(r32): 89(ptr) Variable Function + 102(i3x4): 86(ptr) Variable Function + 107(r33): 106(ptr) Variable Function + 108(i4x4): 106(ptr) Variable Function + 16: 12 Load 15(i1x1) + 17: 12 Transpose 16 + Store 14(r00) 17 + 25: 22 Load 24(i2x1) + 26: 19 Transpose 25 + Store 21(r01) 26 + 34: 31 Load 33(i3x1) + 35: 28 Transpose 34 + Store 30(r02) 35 + 43: 40 Load 42(i4x1) + 44: 37 Transpose 43 + Store 39(r03) 44 + 47: 19 Load 46(i1x2) + 48: 22 Transpose 47 + Store 45(r10) 48 + 53: 49 Load 52(i2x2) + 54: 49 Transpose 53 + Store 51(r11) 54 + 61: 58 Load 60(i3x2) + 62: 55 Transpose 61 + Store 57(r12) 62 + 69: 66 Load 68(i4x2) + 70: 63 Transpose 69 + Store 65(r13) 70 + 73: 28 Load 72(i1x3) + 74: 31 Transpose 73 + Store 71(r20) 74 + 77: 55 Load 76(i2x3) + 78: 58 Transpose 77 + Store 75(r21) 78 + 83: 79 Load 82(i3x3) + 84: 79 Transpose 83 + Store 81(r22) 84 + 91: 88 Load 90(i4x3) + 92: 85 Transpose 91 + Store 87(r23) 92 + 95: 37 Load 94(i1x4) + 96: 40 Transpose 95 + Store 93(r30) 96 + 99: 63 Load 98(i2x4) + 100: 66 Transpose 99 + Store 97(r31) 100 + 103: 85 Load 102(i3x4) + 104: 88 Transpose 103 + Store 101(r32) 104 + 109: 105 Load 108(i4x4) + 110: 105 Transpose 109 + Store 107(r33) 110 + Return + FunctionEnd +8(TestUintMatTypes(): 2 Function None 3 + 9: Label + 115(r00): 114(ptr) Variable Function + 116(u1x1): 114(ptr) Variable Function + 122(r01): 121(ptr) Variable Function + 125(u2x1): 124(ptr) Variable Function + 131(r02): 130(ptr) Variable Function + 134(u3x1): 133(ptr) Variable Function + 140(r03): 139(ptr) Variable Function + 143(u4x1): 142(ptr) Variable Function + 146(r10): 124(ptr) Variable Function + 147(u1x2): 121(ptr) Variable Function + 152(r11): 151(ptr) Variable Function + 153(u2x2): 151(ptr) Variable Function + 158(r12): 157(ptr) Variable Function + 161(u3x2): 160(ptr) Variable Function + 166(r13): 165(ptr) Variable Function + 169(u4x2): 168(ptr) Variable Function + 172(r20): 133(ptr) Variable Function + 173(u1x3): 130(ptr) Variable Function + 176(r21): 160(ptr) Variable Function + 177(u2x3): 157(ptr) Variable Function + 182(r22): 181(ptr) Variable Function + 183(u3x3): 181(ptr) Variable Function + 188(r23): 187(ptr) Variable Function + 191(u4x3): 190(ptr) Variable Function + 194(r30): 142(ptr) Variable Function + 195(u1x4): 139(ptr) Variable Function + 198(r31): 168(ptr) Variable Function + 199(u2x4): 165(ptr) Variable Function + 202(r32): 190(ptr) Variable Function + 203(u3x4): 187(ptr) Variable Function + 208(r33): 207(ptr) Variable Function + 209(u4x4): 207(ptr) Variable Function + 117: 113 Load 116(u1x1) + 118: 113 Transpose 117 + Store 115(r00) 118 + 126: 123 Load 125(u2x1) + 127: 120 Transpose 126 + Store 122(r01) 127 + 135: 132 Load 134(u3x1) + 136: 129 Transpose 135 + Store 131(r02) 136 + 144: 141 Load 143(u4x1) + 145: 138 Transpose 144 + Store 140(r03) 145 + 148: 120 Load 147(u1x2) + 149: 123 Transpose 148 + Store 146(r10) 149 + 154: 150 Load 153(u2x2) + 155: 150 Transpose 154 + Store 152(r11) 155 + 162: 159 Load 161(u3x2) + 163: 156 Transpose 162 + Store 158(r12) 163 + 170: 167 Load 169(u4x2) + 171: 164 Transpose 170 + Store 166(r13) 171 + 174: 129 Load 173(u1x3) + 175: 132 Transpose 174 + Store 172(r20) 175 + 178: 156 Load 177(u2x3) + 179: 159 Transpose 178 + Store 176(r21) 179 + 184: 180 Load 183(u3x3) + 185: 180 Transpose 184 + Store 182(r22) 185 + 192: 189 Load 191(u4x3) + 193: 186 Transpose 192 + Store 188(r23) 193 + 196: 138 Load 195(u1x4) + 197: 141 Transpose 196 + Store 194(r30) 197 + 200: 164 Load 199(u2x4) + 201: 167 Transpose 200 + Store 198(r31) 201 + 204: 186 Load 203(u3x4) + 205: 189 Transpose 204 + Store 202(r32) 205 + 210: 206 Load 209(u4x4) + 211: 206 Transpose 210 + Store 208(r33) 211 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out index 53646bb1..8995af35 100755 --- a/Test/baseResults/hlsl.max.frag.out +++ b/Test/baseResults/hlsl.max.frag.out @@ -10,7 +10,7 @@ gl_FragCoord origin is upper left 0:3 Sequence 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 max (global 4-component vector of float) +0:3 max (temp 4-component vector of float) 0:3 'input1' (layout(location=0 ) in 4-component vector of float) 0:3 'input2' (layout(location=1 ) in 4-component vector of float) 0:3 Branch: Return @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:3 Sequence 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 max (global 4-component vector of float) +0:3 max (temp 4-component vector of float) 0:3 'input1' (layout(location=0 ) in 4-component vector of float) 0:3 'input2' (layout(location=1 ) in 4-component vector of float) 0:3 Branch: Return diff --git a/Test/baseResults/hlsl.promote.vec1.frag.out b/Test/baseResults/hlsl.promote.vec1.frag.out index 3b684504..9179dbcc 100644 --- a/Test/baseResults/hlsl.promote.vec1.frag.out +++ b/Test/baseResults/hlsl.promote.vec1.frag.out @@ -13,13 +13,13 @@ gl_FragCoord origin is upper left 0:8 'f1b' (temp 1-component vector of float) 0:8 Construct float (temp 1-component vector of float) 0:8 'f1a' (temp float) -0:11 step (global 3-component vector of float) +0:11 step (temp 3-component vector of float) 0:11 Constant: 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 'f3' (temp 3-component vector of float) -0:13 sine (global float) +0:13 sine (temp float) 0:13 Construct float (in float) 0:13 'f1b' (temp 1-component vector of float) 0:15 Sequence @@ -52,13 +52,13 @@ gl_FragCoord origin is upper left 0:8 'f1b' (temp 1-component vector of float) 0:8 Construct float (temp 1-component vector of float) 0:8 'f1a' (temp float) -0:11 step (global 3-component vector of float) +0:11 step (temp 3-component vector of float) 0:11 Constant: 0:11 0.000000 0:11 0.000000 0:11 0.000000 0:11 'f3' (temp 3-component vector of float) -0:13 sine (global float) +0:13 sine (temp float) 0:13 Construct float (in float) 0:13 'f1b' (temp 1-component vector of float) 0:15 Sequence diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index a1acd797..c4f5d11c 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r10' (temp float) -0:42 texture (global float) +0:42 texture (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -21,7 +21,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r12' (temp float) -0:43 texture (global float) +0:43 texture (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -34,7 +34,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r14' (temp float) -0:44 texture (global float) +0:44 texture (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r30' (temp float) -0:47 texture (global float) +0:47 texture (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -61,7 +61,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r32' (temp float) -0:48 texture (global float) +0:48 texture (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -75,7 +75,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r34' (temp float) -0:49 texture (global float) +0:49 texture (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -89,7 +89,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp float) 0:52 'r60' (temp float) -0:52 texture (global float) +0:52 texture (temp float) 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r62' (temp float) -0:53 texture (global float) +0:53 texture (temp float) 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r64' (temp float) -0:54 texture (global float) +0:54 texture (temp float) 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -202,7 +202,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r10' (temp float) -0:42 texture (global float) +0:42 texture (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -215,7 +215,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r12' (temp float) -0:43 texture (global float) +0:43 texture (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -228,7 +228,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r14' (temp float) -0:44 texture (global float) +0:44 texture (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -241,7 +241,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r30' (temp float) -0:47 texture (global float) +0:47 texture (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -255,7 +255,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r32' (temp float) -0:48 texture (global float) +0:48 texture (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -269,7 +269,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r34' (temp float) -0:49 texture (global float) +0:49 texture (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -283,7 +283,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp float) 0:52 'r60' (temp float) -0:52 texture (global float) +0:52 texture (temp float) 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -298,7 +298,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r62' (temp float) -0:53 texture (global float) +0:53 texture (temp float) 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -313,7 +313,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r64' (temp float) -0:54 texture (global float) +0:54 texture (temp float) 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index 08f3b400..acd24b8b 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r00' (temp float) -0:42 texture (global float) +0:42 texture (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -20,7 +20,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r02' (temp float) -0:43 texture (global float) +0:43 texture (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -32,7 +32,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r04' (temp float) -0:44 texture (global float) +0:44 texture (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r20' (temp float) -0:47 texture (global float) +0:47 texture (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -57,7 +57,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r22' (temp float) -0:48 texture (global float) +0:48 texture (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r24' (temp float) -0:49 texture (global float) +0:49 texture (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -83,7 +83,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r50' (temp float) -0:53 texture (global float) +0:53 texture (temp float) 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -97,7 +97,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r52' (temp float) -0:54 texture (global float) +0:54 texture (temp float) 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -111,7 +111,7 @@ gl_FragCoord origin is upper left 0:55 Sequence 0:55 move second child to first child (temp float) 0:55 'r54' (temp float) -0:55 texture (global float) +0:55 texture (temp float) 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -193,7 +193,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r00' (temp float) -0:42 texture (global float) +0:42 texture (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -205,7 +205,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r02' (temp float) -0:43 texture (global float) +0:43 texture (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -217,7 +217,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r04' (temp float) -0:44 texture (global float) +0:44 texture (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -229,7 +229,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r20' (temp float) -0:47 texture (global float) +0:47 texture (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -242,7 +242,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r22' (temp float) -0:48 texture (global float) +0:48 texture (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -255,7 +255,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r24' (temp float) -0:49 texture (global float) +0:49 texture (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -268,7 +268,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r50' (temp float) -0:53 texture (global float) +0:53 texture (temp float) 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -282,7 +282,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r52' (temp float) -0:54 texture (global float) +0:54 texture (temp float) 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -296,7 +296,7 @@ gl_FragCoord origin is upper left 0:55 Sequence 0:55 move second child to first child (temp float) 0:55 'r54' (temp float) -0:55 texture (global float) +0:55 texture (temp float) 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index 70670a0f..fe2c74f5 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r01' (temp float) -0:42 textureOffset (global float) +0:42 textureOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r03' (temp float) -0:43 textureOffset (global float) +0:43 textureOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -36,7 +36,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r05' (temp float) -0:44 textureOffset (global float) +0:44 textureOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r21' (temp float) -0:47 textureOffset (global float) +0:47 textureOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -66,7 +66,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r23' (temp float) -0:48 textureOffset (global float) +0:48 textureOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -82,7 +82,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r25' (temp float) -0:49 textureOffset (global float) +0:49 textureOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -166,7 +166,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r01' (temp float) -0:42 textureOffset (global float) +0:42 textureOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -180,7 +180,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r03' (temp float) -0:43 textureOffset (global float) +0:43 textureOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r05' (temp float) -0:44 textureOffset (global float) +0:44 textureOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -208,7 +208,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r21' (temp float) -0:47 textureOffset (global float) +0:47 textureOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -224,7 +224,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r23' (temp float) -0:48 textureOffset (global float) +0:48 textureOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -240,7 +240,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r25' (temp float) -0:49 textureOffset (global float) +0:49 textureOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index d4a86361..013a645c 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r11' (temp float) -0:42 textureOffset (global float) +0:42 textureOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -23,7 +23,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r13' (temp float) -0:43 textureOffset (global float) +0:43 textureOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r15' (temp float) -0:44 textureOffset (global float) +0:44 textureOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r31' (temp float) -0:47 textureOffset (global float) +0:47 textureOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r33' (temp float) -0:48 textureOffset (global float) +0:48 textureOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -87,7 +87,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r35' (temp float) -0:49 textureOffset (global float) +0:49 textureOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -172,7 +172,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r11' (temp float) -0:42 textureOffset (global float) +0:42 textureOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -187,7 +187,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r13' (temp float) -0:43 textureOffset (global float) +0:43 textureOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -202,7 +202,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r15' (temp float) -0:44 textureOffset (global float) +0:44 textureOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -217,7 +217,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r31' (temp float) -0:47 textureOffset (global float) +0:47 textureOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -234,7 +234,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r33' (temp float) -0:48 textureOffset (global float) +0:48 textureOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -251,7 +251,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r35' (temp float) -0:49 textureOffset (global float) +0:49 textureOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index 2746fa77..29e02cd9 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r10' (temp float) -0:42 textureLod (global float) +0:42 textureLod (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -23,7 +23,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r12' (temp float) -0:43 textureLod (global float) +0:43 textureLod (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r14' (temp float) -0:44 textureLod (global float) +0:44 textureLod (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r30' (temp float) -0:47 textureLod (global float) +0:47 textureLod (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -69,7 +69,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r32' (temp float) -0:48 textureLod (global float) +0:48 textureLod (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -85,7 +85,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r34' (temp float) -0:49 textureLod (global float) +0:49 textureLod (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -101,7 +101,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp float) 0:52 'r60' (temp float) -0:52 textureLod (global float) +0:52 textureLod (temp float) 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r62' (temp float) -0:53 textureLod (global float) +0:53 textureLod (temp float) 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -135,7 +135,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r64' (temp float) -0:54 textureLod (global float) +0:54 textureLod (temp float) 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -220,7 +220,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r10' (temp float) -0:42 textureLod (global float) +0:42 textureLod (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -235,7 +235,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r12' (temp float) -0:43 textureLod (global float) +0:43 textureLod (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -250,7 +250,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r14' (temp float) -0:44 textureLod (global float) +0:44 textureLod (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -265,7 +265,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r30' (temp float) -0:47 textureLod (global float) +0:47 textureLod (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -281,7 +281,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r32' (temp float) -0:48 textureLod (global float) +0:48 textureLod (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -297,7 +297,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r34' (temp float) -0:49 textureLod (global float) +0:49 textureLod (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -313,7 +313,7 @@ gl_FragCoord origin is upper left 0:52 Sequence 0:52 move second child to first child (temp float) 0:52 'r60' (temp float) -0:52 textureLod (global float) +0:52 textureLod (temp float) 0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) 0:52 'g_tTexcdf4a' (uniform textureCubeArray) 0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -330,7 +330,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r62' (temp float) -0:53 textureLod (global float) +0:53 textureLod (temp float) 0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) 0:53 'g_tTexcdi4a' (uniform itextureCubeArray) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -347,7 +347,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r64' (temp float) -0:54 textureLod (global float) +0:54 textureLod (temp float) 0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) 0:54 'g_tTexcdu4a' (uniform utextureCubeArray) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index e6c43725..de822764 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r00' (temp float) -0:42 textureLod (global float) +0:42 textureLod (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -22,7 +22,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r02' (temp float) -0:43 textureLod (global float) +0:43 textureLod (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -36,7 +36,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r04' (temp float) -0:44 textureLod (global float) +0:44 textureLod (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r20' (temp float) -0:47 textureLod (global float) +0:47 textureLod (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r22' (temp float) -0:48 textureLod (global float) +0:48 textureLod (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -80,7 +80,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r24' (temp float) -0:49 textureLod (global float) +0:49 textureLod (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -95,7 +95,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r50' (temp float) -0:53 textureLod (global float) +0:53 textureLod (temp float) 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -111,7 +111,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r52' (temp float) -0:54 textureLod (global float) +0:54 textureLod (temp float) 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -127,7 +127,7 @@ gl_FragCoord origin is upper left 0:55 Sequence 0:55 move second child to first child (temp float) 0:55 'r54' (temp float) -0:55 textureLod (global float) +0:55 textureLod (temp float) 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -211,7 +211,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r00' (temp float) -0:42 textureLod (global float) +0:42 textureLod (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -225,7 +225,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r02' (temp float) -0:43 textureLod (global float) +0:43 textureLod (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -239,7 +239,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r04' (temp float) -0:44 textureLod (global float) +0:44 textureLod (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -253,7 +253,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r20' (temp float) -0:47 textureLod (global float) +0:47 textureLod (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -268,7 +268,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r22' (temp float) -0:48 textureLod (global float) +0:48 textureLod (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -283,7 +283,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r24' (temp float) -0:49 textureLod (global float) +0:49 textureLod (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -298,7 +298,7 @@ gl_FragCoord origin is upper left 0:53 Sequence 0:53 move second child to first child (temp float) 0:53 'r50' (temp float) -0:53 textureLod (global float) +0:53 textureLod (temp float) 0:53 Construct combined texture-sampler (temp samplerCubeShadow) 0:53 'g_tTexcdf4' (uniform textureCube) 0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -314,7 +314,7 @@ gl_FragCoord origin is upper left 0:54 Sequence 0:54 move second child to first child (temp float) 0:54 'r52' (temp float) -0:54 textureLod (global float) +0:54 textureLod (temp float) 0:54 Construct combined texture-sampler (temp isamplerCubeShadow) 0:54 'g_tTexcdi4' (uniform itextureCube) 0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -330,7 +330,7 @@ gl_FragCoord origin is upper left 0:55 Sequence 0:55 move second child to first child (temp float) 0:55 'r54' (temp float) -0:55 textureLod (global float) +0:55 textureLod (temp float) 0:55 Construct combined texture-sampler (temp usamplerCubeShadow) 0:55 'g_tTexcdu4' (uniform utextureCube) 0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index f66055df..216ed419 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r01' (temp float) -0:42 textureLodOffset (global float) +0:42 textureLodOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -24,7 +24,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r03' (temp float) -0:43 textureLodOffset (global float) +0:43 textureLodOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -40,7 +40,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r05' (temp float) -0:44 textureLodOffset (global float) +0:44 textureLodOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -56,7 +56,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r21' (temp float) -0:47 textureLodOffset (global float) +0:47 textureLodOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r23' (temp float) -0:48 textureLodOffset (global float) +0:48 textureLodOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -92,7 +92,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r25' (temp float) -0:49 textureLodOffset (global float) +0:49 textureLodOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -178,7 +178,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r01' (temp float) -0:42 textureLodOffset (global float) +0:42 textureLodOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DShadow) 0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -194,7 +194,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r03' (temp float) -0:43 textureLodOffset (global float) +0:43 textureLodOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DShadow) 0:43 'g_tTex1di4' (uniform itexture1D) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -210,7 +210,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r05' (temp float) -0:44 textureLodOffset (global float) +0:44 textureLodOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DShadow) 0:44 'g_tTex1du4' (uniform utexture1D) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -226,7 +226,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r21' (temp float) -0:47 textureLodOffset (global float) +0:47 textureLodOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DShadow) 0:47 'g_tTex2df4' (uniform texture2D) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r23' (temp float) -0:48 textureLodOffset (global float) +0:48 textureLodOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DShadow) 0:48 'g_tTex2di4' (uniform itexture2D) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -262,7 +262,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r25' (temp float) -0:49 textureLodOffset (global float) +0:49 textureLodOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DShadow) 0:49 'g_tTex2du4' (uniform utexture2D) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index 3b2b9126..2e5f3cda 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r11' (temp float) -0:42 textureLodOffset (global float) +0:42 textureLodOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -25,7 +25,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r13' (temp float) -0:43 textureLodOffset (global float) +0:43 textureLodOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -42,7 +42,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r15' (temp float) -0:44 textureLodOffset (global float) +0:44 textureLodOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -59,7 +59,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r31' (temp float) -0:47 textureLodOffset (global float) +0:47 textureLodOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -78,7 +78,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r33' (temp float) -0:48 textureLodOffset (global float) +0:48 textureLodOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -97,7 +97,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r35' (temp float) -0:49 textureLodOffset (global float) +0:49 textureLodOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:42 Sequence 0:42 move second child to first child (temp float) 0:42 'r11' (temp float) -0:42 textureLodOffset (global float) +0:42 textureLodOffset (temp float) 0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) 0:42 'g_tTex1df4a' (uniform texture1DArray) 0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -201,7 +201,7 @@ gl_FragCoord origin is upper left 0:43 Sequence 0:43 move second child to first child (temp float) 0:43 'r13' (temp float) -0:43 textureLodOffset (global float) +0:43 textureLodOffset (temp float) 0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) 0:43 'g_tTex1di4a' (uniform itexture1DArray) 0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -218,7 +218,7 @@ gl_FragCoord origin is upper left 0:44 Sequence 0:44 move second child to first child (temp float) 0:44 'r15' (temp float) -0:44 textureLodOffset (global float) +0:44 textureLodOffset (temp float) 0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) 0:44 'g_tTex1du4a' (uniform utexture1DArray) 0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -235,7 +235,7 @@ gl_FragCoord origin is upper left 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'r31' (temp float) -0:47 textureLodOffset (global float) +0:47 textureLodOffset (temp float) 0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) 0:47 'g_tTex2df4a' (uniform texture2DArray) 0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 0:48 Sequence 0:48 move second child to first child (temp float) 0:48 'r33' (temp float) -0:48 textureLodOffset (global float) +0:48 textureLodOffset (temp float) 0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) 0:48 'g_tTex2di4a' (uniform itexture2DArray) 0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) @@ -273,7 +273,7 @@ gl_FragCoord origin is upper left 0:49 Sequence 0:49 move second child to first child (temp float) 0:49 'r35' (temp float) -0:49 textureLodOffset (global float) +0:49 textureLodOffset (temp float) 0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) 0:49 'g_tTex2du4a' (uniform utexture2DArray) 0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index 0f2f9448..8278fac9 100755 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -82,7 +82,7 @@ gl_FragCoord origin is upper left 0:19 7.000000 0:19 7.000000 0:19 'foo' (temp 3-component vector of float) -0:21 all (global bool) +0:21 all (temp bool) 0:21 Equal (temp 4-component vector of bool) 0:21 Construct vec4 (temp 4-component vector of float) 0:21 direct index (temp float) @@ -90,7 +90,7 @@ gl_FragCoord origin is upper left 0:21 Constant: 0:21 0 (const int) 0:21 'v' (temp 4-component vector of float) -0:22 any (global bool) +0:22 any (temp bool) 0:22 NotEqual (temp 4-component vector of bool) 0:22 Construct vec4 (temp 4-component vector of float) 0:22 'f' (in float) @@ -199,7 +199,7 @@ gl_FragCoord origin is upper left 0:19 7.000000 0:19 7.000000 0:19 'foo' (temp 3-component vector of float) -0:21 all (global bool) +0:21 all (temp bool) 0:21 Equal (temp 4-component vector of bool) 0:21 Construct vec4 (temp 4-component vector of float) 0:21 direct index (temp float) @@ -207,7 +207,7 @@ gl_FragCoord origin is upper left 0:21 Constant: 0:21 0 (const int) 0:21 'v' (temp 4-component vector of float) -0:22 any (global bool) +0:22 any (temp bool) 0:22 NotEqual (temp 4-component vector of bool) 0:22 Construct vec4 (temp 4-component vector of float) 0:22 'f' (in float) diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out index 0836a618..629668ac 100755 --- a/Test/baseResults/hlsl.sin.frag.out +++ b/Test/baseResults/hlsl.sin.frag.out @@ -9,7 +9,7 @@ gl_FragCoord origin is upper left 0:3 Sequence 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 sine (global 4-component vector of float) +0:3 sine (temp 4-component vector of float) 0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 Branch: Return 0:? Linker Objects @@ -30,7 +30,7 @@ gl_FragCoord origin is upper left 0:3 Sequence 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 sine (global 4-component vector of float) +0:3 sine (temp 4-component vector of float) 0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 Branch: Return 0:? Linker Objects diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out index eab2ba5c..699364ff 100755 --- a/Test/baseResults/hlsl.whileLoop.frag.out +++ b/Test/baseResults/hlsl.whileLoop.frag.out @@ -8,7 +8,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Loop with condition tested first 0:3 Loop Condition -0:3 any (global bool) +0:3 any (temp bool) 0:3 NotEqual (temp 4-component vector of bool) 0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 'input' (layout(location=0 ) in 4-component vector of float) @@ -51,7 +51,7 @@ gl_FragCoord origin is upper left 0:? Sequence 0:3 Loop with condition tested first 0:3 Loop Condition -0:3 any (global bool) +0:3 any (temp bool) 0:3 NotEqual (temp 4-component vector of bool) 0:3 'input' (layout(location=0 ) in 4-component vector of float) 0:3 'input' (layout(location=0 ) in 4-component vector of float) diff --git a/Test/hlsl.matNx1.frag b/Test/hlsl.matNx1.frag new file mode 100644 index 00000000..515bd470 --- /dev/null +++ b/Test/hlsl.matNx1.frag @@ -0,0 +1,31 @@ + +void TestMatNx1() +{ + float1x1 f1x1; + float2x1 f2x1; + float3x1 f3x1; + float4x1 f4x1; + + float1x2 f1x2; + float1x3 f1x3; + float1x4 f1x4; + + float1x1 r00 = transpose(f1x1); + float1x2 r01 = transpose(f2x1); + float1x3 r02 = transpose(f3x1); + float1x4 r03 = transpose(f4x1); + + float1x1 r10 = transpose(f1x1); + float2x1 r11 = transpose(f1x2); + float3x1 r12 = transpose(f1x3); + float4x1 r13 = transpose(f1x4); +} + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +PS_OUTPUT main() +{ + PS_OUTPUT ps_output; + ps_output.color = 1.0; + return ps_output; +}; diff --git a/Test/hlsl.matType.bool.frag b/Test/hlsl.matType.bool.frag new file mode 100644 index 00000000..e4a62e36 --- /dev/null +++ b/Test/hlsl.matType.bool.frag @@ -0,0 +1,53 @@ + +void TestBoolMatTypes() +{ + bool1x1 b1x1; + bool2x1 b2x1; + bool3x1 b3x1; + bool4x1 b4x1; + + bool1x2 b1x2; + bool2x2 b2x2; + bool3x2 b3x2; + bool4x2 b4x2; + + bool1x3 b1x3; + bool2x3 b2x3; + bool3x3 b3x3; + bool4x3 b4x3; + + bool1x4 b1x4; + bool2x4 b2x4; + bool3x4 b3x4; + bool4x4 b4x4; + + // TODO: Currently SPIR-V disallows Nx1 or 1xN mats. + bool1x1 r00 = transpose(b1x1); + bool1x2 r01 = transpose(b2x1); + bool1x3 r02 = transpose(b3x1); + bool1x4 r03 = transpose(b4x1); + + bool2x1 r10 = transpose(b1x2); + bool2x2 r11 = transpose(b2x2); + bool2x3 r12 = transpose(b3x2); + bool2x4 r13 = transpose(b4x2); + + bool3x1 r20 = transpose(b1x3); + bool3x2 r21 = transpose(b2x3); + bool3x3 r22 = transpose(b3x3); + bool3x4 r23 = transpose(b4x3); + + bool4x1 r30 = transpose(b1x4); + bool4x2 r31 = transpose(b2x4); + bool4x3 r32 = transpose(b3x4); + bool4x4 r33 = transpose(b4x4); +} + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +PS_OUTPUT main() +{ + PS_OUTPUT ps_output; + ps_output.color = float4(0,0,0,0); + return ps_output; +}; diff --git a/Test/hlsl.matType.int.frag b/Test/hlsl.matType.int.frag new file mode 100644 index 00000000..09e9f2ad --- /dev/null +++ b/Test/hlsl.matType.int.frag @@ -0,0 +1,97 @@ + +void TestIntMatTypes() +{ + int1x1 i1x1; + int2x1 i2x1; + int3x1 i3x1; + int4x1 i4x1; + + int1x2 i1x2; + int2x2 i2x2; + int3x2 i3x2; + int4x2 i4x2; + + int1x3 i1x3; + int2x3 i2x3; + int3x3 i3x3; + int4x3 i4x3; + + int1x4 i1x4; + int2x4 i2x4; + int3x4 i3x4; + int4x4 i4x4; + + // TODO: Currently SPIR-V disallows Nx1 or 1xN mats. + int1x1 r00 = transpose(i1x1); + int1x2 r01 = transpose(i2x1); + int1x3 r02 = transpose(i3x1); + int1x4 r03 = transpose(i4x1); + + int2x1 r10 = transpose(i1x2); + int2x2 r11 = transpose(i2x2); + int2x3 r12 = transpose(i3x2); + int2x4 r13 = transpose(i4x2); + + int3x1 r20 = transpose(i1x3); + int3x2 r21 = transpose(i2x3); + int3x3 r22 = transpose(i3x3); + int3x4 r23 = transpose(i4x3); + + int4x1 r30 = transpose(i1x4); + int4x2 r31 = transpose(i2x4); + int4x3 r32 = transpose(i3x4); + int4x4 r33 = transpose(i4x4); +} + +void TestUintMatTypes() +{ + uint1x1 u1x1; + uint2x1 u2x1; + uint3x1 u3x1; + uint4x1 u4x1; + + uint1x2 u1x2; + uint2x2 u2x2; + uint3x2 u3x2; + uint4x2 u4x2; + + uint1x3 u1x3; + uint2x3 u2x3; + uint3x3 u3x3; + uint4x3 u4x3; + + uint1x4 u1x4; + uint2x4 u2x4; + uint3x4 u3x4; + uint4x4 u4x4; + + // TODO: Currently SPIR-V disallows Nx1 or 1xN mats. + uint1x1 r00 = transpose(u1x1); + uint1x2 r01 = transpose(u2x1); + uint1x3 r02 = transpose(u3x1); + uint1x4 r03 = transpose(u4x1); + + uint2x1 r10 = transpose(u1x2); + uint2x2 r11 = transpose(u2x2); + uint2x3 r12 = transpose(u3x2); + uint2x4 r13 = transpose(u4x2); + + uint3x1 r20 = transpose(u1x3); + uint3x2 r21 = transpose(u2x3); + uint3x3 r22 = transpose(u3x3); + uint3x4 r23 = transpose(u4x3); + + uint4x1 r30 = transpose(u1x4); + uint4x2 r31 = transpose(u2x4); + uint4x3 r32 = transpose(u3x4); + uint4x4 r33 = transpose(u4x4); +} + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +PS_OUTPUT main() +{ + PS_OUTPUT ps_output; + ps_output.color = float4(0,0,0,0); + return ps_output; +}; diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 5b44af52..e0e94104 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -81,6 +81,28 @@ TBuiltInParseables* CreateBuiltInParseables(TInfoSink& infoSink, EShSource sourc } } +// Create a language specific version of a parse context. +TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate& intermediate, + int version, EProfile profile, EShSource source, + EShLanguage language, TInfoSink& infoSink, + SpvVersion spvVersion, bool forwardCompatible, EShMessages messages, + bool parsingBuiltIns) +{ + switch (source) { + case EShSourceGlsl: + intermediate.setEntryPointName("main"); + return new TParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, + language, infoSink, forwardCompatible, messages); + + case EShSourceHlsl: + return new HlslParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, + language, infoSink, forwardCompatible, messages); + default: + infoSink.info.message(EPrefixInternalError, "Unable to determine source language"); + return nullptr; + } +} + // Local mapping functions for making arrays of symbol tables.... const int VersionCount = 15; // index range in MapVersionToIndex @@ -188,17 +210,22 @@ TPoolAllocator* PerProcessGPA = 0; // // Parse and add to the given symbol table the content of the given shader string. // -bool InitializeSymbolTable(const TString& builtIns, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, - TSymbolTable& symbolTable) +bool InitializeSymbolTable(const TString& builtIns, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, + EShSource source, TInfoSink& infoSink, TSymbolTable& symbolTable) { TIntermediate intermediate(language, version, profile); - TParseContext parseContext(symbolTable, intermediate, true, version, profile, spvVersion, language, infoSink); + intermediate.setSource(source); + + std::unique_ptr parseContext(CreateParseContext(symbolTable, intermediate, version, profile, source, + language, infoSink, spvVersion, true, EShMsgDefault, + true)); + TShader::ForbidInclude includer; - TPpContext ppContext(parseContext, "", includer); - TScanContext scanContext(parseContext); - parseContext.setScanContext(&scanContext); - parseContext.setPpContext(&ppContext); + TPpContext ppContext(*parseContext, "", includer); + TScanContext scanContext(*parseContext); + parseContext->setScanContext(&scanContext); + parseContext->setPpContext(&ppContext); // // Push the symbol table to give it an initial scope. This @@ -217,7 +244,7 @@ bool InitializeSymbolTable(const TString& builtIns, int version, EProfile profil return true; TInputScanner input(1, builtInShaders, builtInLengths); - if (! parseContext.parseShaderStrings(ppContext, input) != 0) { + if (! parseContext->parseShaderStrings(ppContext, input) != 0) { infoSink.info.message(EPrefixInternalError, "Unable to parse built-ins"); printf("Unable to parse built-ins\n%s\n", infoSink.info.c_str()); printf("%s\n", builtInShaders[0]); @@ -237,10 +264,12 @@ int CommonIndex(EProfile profile, EShLanguage language) // To initialize per-stage shared tables, with the common table already complete. // void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int version, EProfile profile, const SpvVersion& spvVersion, - EShLanguage language, TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables) + EShLanguage language, EShSource source, TInfoSink& infoSink, TSymbolTable** commonTable, + TSymbolTable** symbolTables) { (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); - InitializeSymbolTable(builtInParseables.getStageString(language), version, profile, spvVersion, language, infoSink, *symbolTables[language]); + InitializeSymbolTable(builtInParseables.getStageString(language), version, profile, spvVersion, language, source, + infoSink, *symbolTables[language]); builtInParseables.identifyBuiltIns(version, profile, spvVersion, language, *symbolTables[language]); if (profile == EEsProfile && version >= 300) (*symbolTables[language]).setNoBuiltInRedeclarations(); @@ -259,32 +288,40 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS builtInParseables->initialize(version, profile, spvVersion); // do the common tables - InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, EShLangVertex, infoSink, *commonTable[EPcGeneral]); + InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, EShLangVertex, source, + infoSink, *commonTable[EPcGeneral]); if (profile == EEsProfile) - InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, EShLangFragment, infoSink, *commonTable[EPcFragment]); + InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, EShLangFragment, source, + infoSink, *commonTable[EPcFragment]); // do the per-stage tables // always have vertex and fragment - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangVertex, infoSink, commonTable, symbolTables); - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangFragment, infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangVertex, source, + infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangFragment, source, + infoSink, commonTable, symbolTables); // check for tessellation if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) { - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTessControl, infoSink, commonTable, symbolTables); - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTessEvaluation, infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTessControl, source, + infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTessEvaluation, source, + infoSink, commonTable, symbolTables); } // check for geometry if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source, + infoSink, commonTable, symbolTables); // check for compute if ((profile != EEsProfile && version >= 420) || (profile == EEsProfile && version >= 310)) - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, + infoSink, commonTable, symbolTables); return true; } @@ -295,7 +332,7 @@ bool AddContextSpecificSymbols(const TBuiltInResource* resources, TInfoSink& inf std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); builtInParseables->initialize(*resources, version, profile, spvVersion, language); - InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, language, infoSink, symbolTable); + InitializeSymbolTable(builtInParseables->getCommonString(), version, profile, spvVersion, language, source, infoSink, symbolTable); builtInParseables->identifyBuiltIns(version, profile, spvVersion, language, symbolTable, *resources); return true; @@ -694,15 +731,10 @@ bool ProcessDeferred( // Now we can process the full shader under proper symbols and rules. // - TParseContextBase* parseContext; - if (source == EShSourceHlsl) { - parseContext = new HlslParseContext(symbolTable, intermediate, false, version, profile, spvVersion, - compiler->getLanguage(), compiler->infoSink, forwardCompatible, messages); - } else { - intermediate.setEntryPointName("main"); - parseContext = new TParseContext(symbolTable, intermediate, false, version, profile, spvVersion, - compiler->getLanguage(), compiler->infoSink, forwardCompatible, messages); - } + TParseContextBase* parseContext = CreateParseContext(symbolTable, intermediate, version, profile, source, + compiler->getLanguage(), compiler->infoSink, + spvVersion, forwardCompatible, messages, false); + TPpContext ppContext(*parseContext, names[numPre]? names[numPre]: "", includer); // only GLSL (bison triggered, really) needs an externally set scan context @@ -940,7 +972,7 @@ struct DoPreprocessing { struct DoFullParse{ bool operator()(TParseContextBase& parseContext, TPpContext& ppContext, TInputScanner& fullInput, bool versionWillBeError, - TSymbolTable& symbolTable, TIntermediate& intermediate, + TSymbolTable&, TIntermediate& intermediate, EShOptimizationLevel optLevel, EShMessages messages) { bool success = true; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 5487fb98..e6d5cb17 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -147,6 +147,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.logical.unary.frag", "main"}, {"hlsl.logical.binary.frag", "main"}, {"hlsl.logical.binary.vec.frag", "main"}, + {"hlsl.matNx1.frag", "main"}, {"hlsl.mintypes.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, {"hlsl.multiReturn.frag", "main"}, @@ -199,6 +200,8 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.structin.vert", "main"}, {"hlsl.intrinsics.vert", "VertexShaderFunction"}, {"hlsl.matType.frag", "PixelShaderFunction"}, + {"hlsl.matType.bool.frag", "main"}, + {"hlsl.matType.int.frag", "main"}, {"hlsl.max.frag", "PixelShaderFunction"}, {"hlsl.precedence.frag", "PixelShaderFunction"}, {"hlsl.precedence2.frag", "PixelShaderFunction"}, diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index 7ab159dc..f1f371ed 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -55,7 +55,7 @@ namespace { // anonymous namespace functions -const bool UseHlslTypes = false; +const bool UseHlslTypes = true; const char* BaseTypeName(const char argOrder, const char* scalarName, const char* vecName, const char* matName) { @@ -246,24 +246,24 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons if (UseHlslTypes) { switch (type) { - case '-': s += "void"; break; - case 'F': s += "float"; break; - case 'D': s += "double"; break; - case 'I': s += "int"; break; - case 'U': s += "uint"; break; - case 'B': s += "bool"; break; - case 'S': s += "sampler"; break; - case 's': s += "SamplerComparisonState"; break; + case '-': s += "void"; break; + case 'F': s += "float"; break; + case 'D': s += "double"; break; + case 'I': s += "int"; break; + case 'U': s += "uint"; break; + case 'B': s += "bool"; break; + case 'S': s += "sampler"; break; + case 's': s += "SamplerComparisonState"; break; case 'T': s += ((isBuffer && isImage) ? "RWBuffer" : isBuffer ? "Buffer" : - isImage ? "RWTexture" : "Texture"); break; - case 'i': s += ((isBuffer && isImage) ? "RWBuffer " : - isBuffer ? "Buffer " : - isImage ? "RWTexture " : "Texture "); break; - case 'u': s += ((isBuffer && isImage) ? "RWBuffer " : - isBuffer ? "Buffer " : - isImage ? "RWTexture " : "Texture ");break; - default: s += "UNKNOWN_TYPE"; break; + isImage ? "RWTexture" : "Texture"); break; + case 'i': s += ((isBuffer && isImage) ? "RWBuffer" : + isBuffer ? "Buffer" : + isImage ? "RWTexture" : "Texture"); break; + case 'u': s += ((isBuffer && isImage) ? "RWBuffer" : + isBuffer ? "Buffer" : + isImage ? "RWTexture" : "Texture"); break; + default: s += "UNKNOWN_TYPE"; break; } } else { switch (type) { @@ -336,36 +336,55 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons if (isArrayed) s += "Array"; + // For HLSL, append return type for texture types + if (UseHlslTypes) { + switch (type) { + case 'i': s += ""; break; + case 'u': s += ""; break; + case 'T': s += ""; break; + default: break; + } + } + return s; } -// TODO: the GLSL parser is currently used to parse HLSL prototypes. However, many valid HLSL prototypes +// The GLSL parser can be used to parse a subset of HLSL prototypes. However, many valid HLSL prototypes // are not valid GLSL prototypes. This rejects the invalid ones. Thus, there is a single switch below // to enable creation of the entire HLSL space. -inline bool IsValidGlsl(const char* cname, char retOrder, char retType, char argOrder, char argType, - int dim0, int dim1, int dim0Max, int dim1Max) +inline bool IsValid(const char* cname, char retOrder, char retType, char argOrder, char argType, int dim0, int dim1) { - const bool isVec = dim0Max > 1 || argType == 'V'; - const bool isMat = dim1Max > 1 || argType == 'M'; + const bool isVec = (argOrder == 'V'); + const bool isMat = (argOrder == 'M'); - if (!IsTextureType(argOrder) && - ((isVec && dim0 == 1) || // avoid vec1 - (isMat && dim0 == 1 && dim1 == 1))) // avoid mat1x1 + const std::string name(cname); + + // these do not have vec1 versions + if (dim0 == 1 && (name == "length" || name == "normalize" || name == "reflect" || name == "refract")) return false; - const std::string name(cname); // for ease of comparison. slow, but temporary, until HLSL parser is online. - - if (isMat && dim1 == 1) // TODO: avoid mat Nx1 until we find the right GLSL profile + if (!IsTextureType(argOrder) && (isVec && dim0 == 1)) // avoid vec1 return false; - if ((isMat && (argType == 'I' || argType == 'U' || argType == 'B')) || - (retOrder == 'M' && (retType == 'I' || retType == 'U' || retType == 'B'))) - return false; + if (UseHlslTypes) { + // NO further restrictions for HLSL + } else { + // GLSL parser restrictions + if ((isMat && (argType == 'I' || argType == 'U' || argType == 'B')) || + (retOrder == 'M' && (retType == 'I' || retType == 'U' || retType == 'B'))) + return false; - if (name == "GetRenderTargetSamplePosition" || - name == "tex1D" || - name == "tex1Dgrad") - return false; + if (isMat && dim0 == 1 && dim1 == 1) // avoid mat1x1 + return false; + + if (isMat && dim1 == 1) // TODO: avoid mat Nx1 until we find the right GLSL profile + return false; + + if (name == "GetRenderTargetSamplePosition" || + name == "tex1D" || + name == "tex1Dgrad") + return false; + } return true; } @@ -534,10 +553,10 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "abort", nullptr, nullptr, "-", "-", EShLangAll }, { "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll }, { "acos", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "all", "S", "B", "SVM", "BFI", EShLangAll }, + { "all", "S", "B", "SVM", "BFIU", EShLangAll }, { "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS }, { "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS }, - { "any", "S", "B", "SVM", "BFI", EShLangAll }, + { "any", "S", "B", "SVM", "BFIU", EShLangAll }, { "asdouble", "S", "D", "S,", "U,", EShLangAll }, { "asdouble", "V2", "D", "V2,", "U,", EShLangAll }, { "asfloat", nullptr, "F", "SVM", "BFIU", EShLangAll }, @@ -682,7 +701,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "texCUBEgrad", "V4", "F", "V4,V3,,", "S,F,,", EShLangPS }, { "texCUBElod", "V4", "F", "V4,", "S,F", EShLangPS }, { "texCUBEproj", "V4", "F", "V4,", "S,F", EShLangPS }, - { "transpose", "^M", nullptr, "M", "F", EShLangAll }, + { "transpose", "^M", nullptr, "M", "FUIB", EShLangAll }, { "trunc", nullptr, nullptr, "SVM", "F", EShLangAll }, // Texture object methods. Return type can be overridden by shader declaration. @@ -835,10 +854,6 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { nullptr, nullptr, nullptr, nullptr, nullptr, 0 }, }; - // Set this to true to avoid generating prototypes that will be invalid for the GLSL parser. - // TODO: turn it off (and remove the code) when the HLSL parser can be used to parse builtins. - static const bool skipInvalidGlsl = true; - // Create prototypes for the intrinsics. TODO: Avoid ranged based for until all compilers can handle it. for (int icount = 0; hlslIntrinsics[icount].name; ++icount) { const auto& intrinsic = hlslIntrinsics[icount]; @@ -874,8 +889,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c const char* retOrder = intrinsic.retOrder ? intrinsic.retOrder : argOrder; const char* retType = intrinsic.retType ? intrinsic.retType : argType; - if (skipInvalidGlsl && !IsValidGlsl(intrinsic.name, *retOrder, *retType, *argOrder, *argType, - dim0, dim1, dim0Max, dim1Max)) + if (!IsValid(intrinsic.name, *retOrder, *retType, *argOrder, *argType, dim0, dim1)) continue; // Reject some forms of sample methods that don't exist. diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp index e7cd1fcf..aad9ff97 100755 --- a/hlsl/hlslScanContext.cpp +++ b/hlsl/hlslScanContext.cpp @@ -180,6 +180,22 @@ void HlslScanContext::fillInKeywordMap() (*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; @@ -561,6 +577,22 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokMin16uint4: // matrix types + case EHTokBool1x1: + case EHTokBool1x2: + case EHTokBool1x3: + case EHTokBool1x4: + case EHTokBool2x1: + case EHTokBool2x2: + case EHTokBool2x3: + case EHTokBool2x4: + case EHTokBool3x1: + case EHTokBool3x2: + case EHTokBool3x3: + case EHTokBool3x4: + case EHTokBool4x1: + case EHTokBool4x2: + case EHTokBool4x3: + case EHTokBool4x4: case EHTokInt1x1: case EHTokInt1x2: case EHTokInt1x3: @@ -577,6 +609,22 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokInt4x2: case EHTokInt4x3: case EHTokInt4x4: + case EHTokUint1x1: + case EHTokUint1x2: + case EHTokUint1x3: + case EHTokUint1x4: + case EHTokUint2x1: + case EHTokUint2x2: + case EHTokUint2x3: + case EHTokUint2x4: + case EHTokUint3x1: + case EHTokUint3x2: + case EHTokUint3x3: + case EHTokUint3x4: + case EHTokUint4x1: + case EHTokUint4x2: + case EHTokUint4x3: + case EHTokUint4x4: case EHTokFloat1x1: case EHTokFloat1x2: case EHTokFloat1x3: From 75fd223f037d88e0b03f801a7dc5e6ed1a939172 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 16 Nov 2016 13:22:11 -0700 Subject: [PATCH 096/130] HLSL: allow "sample" as a valid identifier. HLSL has keywords for various interpolation modifiers such as "linear", "centroid", "sample", etc. Of these, "sample" appears to be special, as it is also accepted as an identifier string, where the others are not. This PR adds this ability, so the construct "int sample = 42;" no longer produces a compilation error. New test = hlsl.identifier.sample.frag --- .../hlsl.identifier.sample.frag.out | 103 ++++++++++++++++++ Test/hlsl.identifier.sample.frag | 18 +++ gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 13 +++ 4 files changed, 135 insertions(+) create mode 100644 Test/baseResults/hlsl.identifier.sample.frag.out create mode 100644 Test/hlsl.identifier.sample.frag diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out new file mode 100644 index 00000000..8e740819 --- /dev/null +++ b/Test/baseResults/hlsl.identifier.sample.frag.out @@ -0,0 +1,103 @@ +hlsl.identifier.sample.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:9 Function Definition: sample(i1; (temp int) +0:9 Function Parameters: +0:9 'x' (in int) +0:? Sequence +0:9 Branch: Return with expression +0:9 'x' (in int) +0:12 Function Definition: main( (temp 4-component vector of float) +0:12 Function Parameters: +0:? Sequence +0:15 Sequence +0:15 move second child to first child (temp int) +0:15 'sample' (temp int) +0:15 Constant: +0:15 3 (const int) +0:17 Sequence +0:17 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:17 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:9 Function Definition: sample(i1; (temp int) +0:9 Function Parameters: +0:9 'x' (in int) +0:? Sequence +0:9 Branch: Return with expression +0:9 'x' (in int) +0:12 Function Definition: main( (temp 4-component vector of float) +0:12 Function Parameters: +0:? Sequence +0:15 Sequence +0:15 move second child to first child (temp int) +0:15 'sample' (temp int) +0:15 Constant: +0:15 3 (const int) +0:17 Sequence +0:17 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:17 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 24 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 20 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 10 "sample(i1;" + Name 9 "x" + Name 15 "sample" + Name 20 "@entryPointOutput" + Decorate 20(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 8: TypeFunction 6(int) 7(ptr) + 16: 6(int) Constant 3 + 17: TypeFloat 32 + 18: TypeVector 17(float) 4 + 19: TypePointer Output 18(fvec4) +20(@entryPointOutput): 19(ptr) Variable Output + 21: 17(float) Constant 0 + 22: 18(fvec4) ConstantComposite 21 21 21 21 + 4(main): 2 Function None 3 + 5: Label + 15(sample): 7(ptr) Variable Function + Store 15(sample) 16 + Store 20(@entryPointOutput) 22 + Return + FunctionEnd + 10(sample(i1;): 6(int) Function None 8 + 9(x): 7(ptr) FunctionParameter + 11: Label + 12: 6(int) Load 9(x) + ReturnValue 12 + FunctionEnd diff --git a/Test/hlsl.identifier.sample.frag b/Test/hlsl.identifier.sample.frag new file mode 100644 index 00000000..3281a9ac --- /dev/null +++ b/Test/hlsl.identifier.sample.frag @@ -0,0 +1,18 @@ + +struct MyStruct { + sample float a; + noperspective float b; + linear float c; + centroid float d; +}; + +int sample(int x) { return x; } // HLSL allows this as an identifier as well. + +float4 main() : SV_Target0 +{ + // HLSL allows this as an identifier as well. + // However, this is not true of other qualifier keywords such as "linear". + int sample = 3; + + return float4(0,0,0,0); +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 5487fb98..3b66109e 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -118,6 +118,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.getdimensions.rw.dx10.frag", "main"}, {"hlsl.getdimensions.dx10.vert", "main"}, {"hlsl.getsampleposition.dx10.frag", "main"}, + {"hlsl.identifier.sample.frag", "main"}, {"hlsl.if.frag", "PixelShaderFunction"}, {"hlsl.inoutquals.frag", "main"}, {"hlsl.init.frag", "ShaderFunction"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index e6f4b603..079a4690 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -85,6 +85,19 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken) return true; } + // Even though "sample" is a keyword (for interpolation modifiers), it IS still accepted as + // an identifier. This appears to be a solitary exception: other interp modifier keywords such + // as "linear" or "centroid" NOT valid identifiers. This code special cases "sample", + // so e.g, "int sample;" is accepted. + if (peekTokenClass(EHTokSample)) { + idToken.string = NewPoolTString("sample"); + idToken.tokenClass = EHTokIdentifier; + idToken.symbol = nullptr; + idToken.loc = token.loc; + advanceToken(); + return true; + } + return false; } From f49cdf41831c2332bcb70469d6baca339a6c6d1a Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Thu, 17 Nov 2016 15:04:20 -0700 Subject: [PATCH 097/130] WIP: HLSL: Add GS support This PR adds: [maxvertexcount(n)] attributes point/line/triangle/lineadj/triangleadj qualifiers PointStream/LineStream/TriangleStream templatized types Append method on above template types RestartStrip method on above template types. --- Test/baseResults/hlsl.basic.geom.out | 201 +++++++++++++++++++++++++++ Test/hlsl.basic.geom | 25 ++++ glslang/Include/intermediate.h | 4 + gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslAttributes.cpp | 18 +-- hlsl/hlslAttributes.h | 17 +-- hlsl/hlslGrammar.cpp | 106 +++++++++++++- hlsl/hlslGrammar.h | 4 +- hlsl/hlslParseHelper.cpp | 144 ++++++++++++++++--- hlsl/hlslParseHelper.h | 4 + hlsl/hlslParseables.cpp | 9 ++ hlsl/hlslScanContext.cpp | 25 +++- hlsl/hlslTokens.h | 12 ++ 13 files changed, 531 insertions(+), 39 deletions(-) create mode 100644 Test/baseResults/hlsl.basic.geom.out create mode 100644 Test/hlsl.basic.geom diff --git a/Test/baseResults/hlsl.basic.geom.out b/Test/baseResults/hlsl.basic.geom.out new file mode 100644 index 00000000..2c20b439 --- /dev/null +++ b/Test/baseResults/hlsl.basic.geom.out @@ -0,0 +1,201 @@ +hlsl.basic.geom +Shader version: 450 +invocations = -1 +max_vertices = 4 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:16 Function Definition: main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void) +0:16 Function Parameters: +0:16 'VertexID' (layout(location=0 ) in 3-element array of uint) +0:16 'test' (layout(location=3 ) in 3-element array of uint) +0:16 'OutputStream' (out structure{temp float myfloat, temp int something}) +0:? Sequence +0:19 move second child to first child (temp float) +0:19 myfloat: direct index for structure (temp float) +0:19 'Vert' (temp structure{temp float myfloat, temp int something}) +0:19 Constant: +0:19 0 (const int) +0:19 Convert uint to float (temp float) +0:19 add (temp uint) +0:19 add (temp uint) +0:19 direct index (layout(location=3 ) temp uint) +0:19 'test' (layout(location=3 ) in 3-element array of uint) +0:19 Constant: +0:19 0 (const int) +0:19 direct index (layout(location=3 ) temp uint) +0:19 'test' (layout(location=3 ) in 3-element array of uint) +0:19 Constant: +0:19 1 (const int) +0:19 direct index (layout(location=3 ) temp uint) +0:19 'test' (layout(location=3 ) in 3-element array of uint) +0:19 Constant: +0:19 2 (const int) +0:20 move second child to first child (temp int) +0:20 something: direct index for structure (temp int) +0:20 'Vert' (temp structure{temp float myfloat, temp int something}) +0:20 Constant: +0:20 1 (const int) +0:20 Convert uint to int (temp int) +0:20 direct index (layout(location=0 ) temp uint) +0:20 'VertexID' (layout(location=0 ) in 3-element array of uint) +0:20 Constant: +0:20 0 (const int) +0:22 Sequence +0:22 move second child to first child (temp structure{temp float myfloat, temp int something}) +0:22 'OutputStream' (out structure{temp float myfloat, temp int something}) +0:22 'Vert' (temp structure{temp float myfloat, temp int something}) +0:22 EmitVertex (temp void) +0:23 Sequence +0:23 move second child to first child (temp structure{temp float myfloat, temp int something}) +0:23 'OutputStream' (out structure{temp float myfloat, temp int something}) +0:23 'Vert' (temp structure{temp float myfloat, temp int something}) +0:23 EmitVertex (temp void) +0:24 EndPrimitive (temp void) +0:? Linker Objects +0:? 'VertexID' (layout(location=0 ) in 3-element array of uint) +0:? 'test' (layout(location=3 ) in 3-element array of uint) +0:? 'myfloat' (layout(location=0 ) out float) +0:? 'something' (layout(location=1 ) out int) + + +Linked geometry stage: + + +Shader version: 450 +invocations = 1 +max_vertices = 4 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:16 Function Definition: main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void) +0:16 Function Parameters: +0:16 'VertexID' (layout(location=0 ) in 3-element array of uint) +0:16 'test' (layout(location=3 ) in 3-element array of uint) +0:16 'OutputStream' (out structure{temp float myfloat, temp int something}) +0:? Sequence +0:19 move second child to first child (temp float) +0:19 myfloat: direct index for structure (temp float) +0:19 'Vert' (temp structure{temp float myfloat, temp int something}) +0:19 Constant: +0:19 0 (const int) +0:19 Convert uint to float (temp float) +0:19 add (temp uint) +0:19 add (temp uint) +0:19 direct index (layout(location=3 ) temp uint) +0:19 'test' (layout(location=3 ) in 3-element array of uint) +0:19 Constant: +0:19 0 (const int) +0:19 direct index (layout(location=3 ) temp uint) +0:19 'test' (layout(location=3 ) in 3-element array of uint) +0:19 Constant: +0:19 1 (const int) +0:19 direct index (layout(location=3 ) temp uint) +0:19 'test' (layout(location=3 ) in 3-element array of uint) +0:19 Constant: +0:19 2 (const int) +0:20 move second child to first child (temp int) +0:20 something: direct index for structure (temp int) +0:20 'Vert' (temp structure{temp float myfloat, temp int something}) +0:20 Constant: +0:20 1 (const int) +0:20 Convert uint to int (temp int) +0:20 direct index (layout(location=0 ) temp uint) +0:20 'VertexID' (layout(location=0 ) in 3-element array of uint) +0:20 Constant: +0:20 0 (const int) +0:22 Sequence +0:22 move second child to first child (temp structure{temp float myfloat, temp int something}) +0:22 'OutputStream' (out structure{temp float myfloat, temp int something}) +0:22 'Vert' (temp structure{temp float myfloat, temp int something}) +0:22 EmitVertex (temp void) +0:23 Sequence +0:23 move second child to first child (temp structure{temp float myfloat, temp int something}) +0:23 'OutputStream' (out structure{temp float myfloat, temp int something}) +0:23 'Vert' (temp structure{temp float myfloat, temp int something}) +0:23 EmitVertex (temp void) +0:24 EndPrimitive (temp void) +0:? Linker Objects +0:? 'VertexID' (layout(location=0 ) in 3-element array of uint) +0:? 'test' (layout(location=3 ) in 3-element array of uint) +0:? 'myfloat' (layout(location=0 ) out float) +0:? 'something' (layout(location=1 ) out int) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 45 + + Capability Geometry + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 16 31 38 42 44 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputLineStrip + ExecutionMode 4 OutputVertices 4 + Name 4 "main" + Name 8 "PSInput" + MemberName 8(PSInput) 0 "myfloat" + MemberName 8(PSInput) 1 "something" + Name 10 "Vert" + Name 16 "test" + Name 31 "VertexID" + Name 38 "OutputStream" + Name 42 "myfloat" + Name 44 "something" + Decorate 16(test) Location 3 + Decorate 31(VertexID) Location 0 + Decorate 42(myfloat) Location 0 + Decorate 44(something) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeInt 32 1 + 8(PSInput): TypeStruct 6(float) 7(int) + 9: TypePointer Function 8(PSInput) + 11: 7(int) Constant 0 + 12: TypeInt 32 0 + 13: 12(int) Constant 3 + 14: TypeArray 12(int) 13 + 15: TypePointer Input 14 + 16(test): 15(ptr) Variable Input + 17: TypePointer Input 12(int) + 20: 7(int) Constant 1 + 24: 7(int) Constant 2 + 29: TypePointer Function 6(float) + 31(VertexID): 15(ptr) Variable Input + 35: TypePointer Function 7(int) + 37: TypePointer Output 8(PSInput) +38(OutputStream): 37(ptr) Variable Output + 41: TypePointer Output 6(float) + 42(myfloat): 41(ptr) Variable Output + 43: TypePointer Output 7(int) + 44(something): 43(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(Vert): 9(ptr) Variable Function + 18: 17(ptr) AccessChain 16(test) 11 + 19: 12(int) Load 18 + 21: 17(ptr) AccessChain 16(test) 20 + 22: 12(int) Load 21 + 23: 12(int) IAdd 19 22 + 25: 17(ptr) AccessChain 16(test) 24 + 26: 12(int) Load 25 + 27: 12(int) IAdd 23 26 + 28: 6(float) ConvertUToF 27 + 30: 29(ptr) AccessChain 10(Vert) 11 + Store 30 28 + 32: 17(ptr) AccessChain 31(VertexID) 11 + 33: 12(int) Load 32 + 34: 7(int) Bitcast 33 + 36: 35(ptr) AccessChain 10(Vert) 20 + Store 36 34 + 39: 8(PSInput) Load 10(Vert) + Store 38(OutputStream) 39 + EmitVertex + 40: 8(PSInput) Load 10(Vert) + Store 38(OutputStream) 40 + EmitVertex + EndPrimitive + Return + FunctionEnd diff --git a/Test/hlsl.basic.geom b/Test/hlsl.basic.geom new file mode 100644 index 00000000..79b061ee --- /dev/null +++ b/Test/hlsl.basic.geom @@ -0,0 +1,25 @@ +struct PSInput +{ + float myfloat : SOME_SEMANTIC; + int something : ANOTHER_SEMANTIC; +}; + +struct nametest { + int Append; // these are valid names even though they are also method names. + int RestartStrip; // ... +}; + +[maxvertexcount(4)] +void main(triangle in uint VertexID[3] : VertexID, + triangle uint test[3] : FOO, + inout LineStream OutputStream) +{ + PSInput Vert; + + Vert.myfloat = test[0] + test[1] + test[2]; + Vert.something = VertexID[0]; + + OutputStream.Append(Vert); + OutputStream.Append(Vert); + OutputStream.RestartStrip(); +} diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index db61b750..8f7ffcc0 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -621,6 +621,10 @@ enum TOperator { EOpMethodGatherCmpGreen, // ... EOpMethodGatherCmpBlue, // ... EOpMethodGatherCmpAlpha, // ... + + // geometry methods + EOpMethodAppend, // Geometry shader methods + EOpMethodRestartStrip, // ... }; class TIntermTraverser; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 5487fb98..2867140e 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -88,6 +88,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.attribute.frag", "PixelShaderFunction"}, {"hlsl.attribute.expression.comp", "main"}, {"hlsl.basic.comp", "main"}, + {"hlsl.basic.geom", "main"}, {"hlsl.buffer.frag", "PixelShaderFunction"}, {"hlsl.calculatelod.dx10.frag", "main"}, {"hlsl.calculatelodunclamped.dx10.frag", "main"}, diff --git a/hlsl/hlslAttributes.cpp b/hlsl/hlslAttributes.cpp index 957f282e..966ff352 100644 --- a/hlsl/hlslAttributes.cpp +++ b/hlsl/hlslAttributes.cpp @@ -55,27 +55,29 @@ namespace glslang { else if (lowername == "domain") return EatDomain; else if (lowername == "earlydepthstencil") - return EatEarlydepthstencil; + return EatEarlyDepthStencil; else if (lowername == "fastopt") - return EatFastopt; + return EatFastOpt; else if (lowername == "flatten") return EatFlatten; else if (lowername == "forcecase") - return EatForcecase; + return EatForceCase; else if (lowername == "instance") return EatInstance; else if (lowername == "maxtessfactor") - return EatMaxtessfactor; + return EatMaxTessFactor; + else if (lowername == "maxvertexcount") + return EatMaxVertexCount; else if (lowername == "numthreads") - return EatNumthreads; + return EatNumThreads; else if (lowername == "outputcontrolpoints") - return EatOutputcontrolpoints; + return EatOutputControlPoints; else if (lowername == "outputtopology") - return EatOutputtopology; + return EatOutputTopology; else if (lowername == "partitioning") return EatPartitioning; else if (lowername == "patchconstantfunc") - return EatPatchconstantfunc; + return EatPatchConstantFunc; else if (lowername == "unroll") return EatUnroll; else diff --git a/hlsl/hlslAttributes.h b/hlsl/hlslAttributes.h index da5ee5ef..312a4564 100644 --- a/hlsl/hlslAttributes.h +++ b/hlsl/hlslAttributes.h @@ -48,17 +48,18 @@ namespace glslang { EatBranch, EatCall, EatDomain, - EatEarlydepthstencil, - EatFastopt, + EatEarlyDepthStencil, + EatFastOpt, EatFlatten, - EatForcecase, + EatForceCase, EatInstance, - EatMaxtessfactor, - EatNumthreads, - EatOutputcontrolpoints, - EatOutputtopology, + EatMaxTessFactor, + EatNumThreads, + EatMaxVertexCount, + EatOutputControlPoints, + EatOutputTopology, EatPartitioning, - EatPatchconstantfunc, + EatPatchConstantFunc, EatUnroll, }; } diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index e6f4b603..b2715eda 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -469,9 +469,14 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type) // Some qualifiers are set when parsing the type. Merge those with // whatever comes from acceptQualifier. assert(qualifier.layoutFormat == ElfNone); + qualifier.layoutFormat = type.getQualifier().layoutFormat; qualifier.precision = type.getQualifier().precision; - type.getQualifier() = qualifier; + + if (type.getQualifier().storage == EvqVaryingOut) + qualifier.storage = type.getQualifier().storage; + + type.getQualifier() = qualifier; } return true; @@ -544,6 +549,35 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier) if (! acceptLayoutQualifierList(qualifier)) return false; continue; + + // GS geometries: these are specified on stage input variables, and are an error (not verified here) + // for output variables. + case EHTokPoint: + qualifier.storage = EvqIn; + if (!parseContext.handleInputGeometry(token.loc, ElgPoints)) + return false; + break; + case EHTokLine: + qualifier.storage = EvqIn; + if (!parseContext.handleInputGeometry(token.loc, ElgLines)) + return false; + break; + case EHTokTriangle: + qualifier.storage = EvqIn; + if (!parseContext.handleInputGeometry(token.loc, ElgTriangles)) + return false; + break; + case EHTokLineAdj: + qualifier.storage = EvqIn; + if (!parseContext.handleInputGeometry(token.loc, ElgLinesAdjacency)) + return false; + break; + case EHTokTriangleAdj: + qualifier.storage = EvqIn; + if (!parseContext.handleInputGeometry(token.loc, ElgTrianglesAdjacency)) + return false; + break; + default: return true; } @@ -608,7 +642,7 @@ bool HlslGrammar::acceptLayoutQualifierList(TQualifier& qualifier) // | UINT // | BOOL // -bool HlslGrammar::acceptTemplateType(TBasicType& basicType) +bool HlslGrammar::acceptTemplateVecMatBasicType(TBasicType& basicType) { switch (peek()) { case EHTokFloat: @@ -652,7 +686,7 @@ bool HlslGrammar::acceptVectorTemplateType(TType& type) } TBasicType basicType; - if (! acceptTemplateType(basicType)) { + if (! acceptTemplateVecMatBasicType(basicType)) { expected("scalar type"); return false; } @@ -704,7 +738,7 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type) } TBasicType basicType; - if (! acceptTemplateType(basicType)) { + if (! acceptTemplateVecMatBasicType(basicType)) { expected("scalar type"); return false; } @@ -753,6 +787,56 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type) return true; } +// layout_geometry +// : LINESTREAM +// | POINTSTREAM +// | TRIANGLESTREAM +// +bool HlslGrammar::acceptOutputPrimitiveGeometry(TLayoutGeometry& geometry) +{ + // read geometry type + const EHlslTokenClass geometryType = peek(); + + switch (geometryType) { + case EHTokPointStream: geometry = ElgPoints; break; + case EHTokLineStream: geometry = ElgLineStrip; break; + case EHTokTriangleStream: geometry = ElgTriangleStrip; break; + default: + return false; // not a layout geometry + } + + advanceToken(); // consume the layout keyword + return true; +} + +// stream_out_template_type +// : output_primitive_geometry_type LEFT_ANGLE type RIGHT_ANGLE +// +bool HlslGrammar::acceptStreamOutTemplateType(TType& type, TLayoutGeometry& geometry) +{ + geometry = ElgNone; + + if (! acceptOutputPrimitiveGeometry(geometry)) + return false; + + if (! acceptTokenClass(EHTokLeftAngle)) + return false; + + if (! acceptType(type)) { + expected("stream output type"); + return false; + } + + type.getQualifier().storage = EvqVaryingOut; + + if (! acceptTokenClass(EHTokRightAngle)) { + expected("right angle bracket"); + return false; + } + + return true; +} + // annotations // : LEFT_ANGLE declaration SEMI_COLON ... declaration SEMICOLON RIGHT_ANGLE // @@ -989,6 +1073,20 @@ bool HlslGrammar::acceptType(TType& type) return acceptMatrixTemplateType(type); break; + case EHTokPointStream: // fall through + case EHTokLineStream: // ... + case EHTokTriangleStream: // ... + { + TLayoutGeometry geometry; + if (! acceptStreamOutTemplateType(type, geometry)) + return false; + + if (! parseContext.handleOutputGeometry(token.loc, geometry)) + return false; + + return true; + } + case EHTokSampler: // fall through case EHTokSampler1d: // ... case EHTokSampler2d: // ... diff --git a/hlsl/hlslGrammar.h b/hlsl/hlslGrammar.h index c3e42f67..8804b217 100755 --- a/hlsl/hlslGrammar.h +++ b/hlsl/hlslGrammar.h @@ -72,9 +72,11 @@ namespace glslang { bool acceptQualifier(TQualifier&); bool acceptLayoutQualifierList(TQualifier&); bool acceptType(TType&); - bool acceptTemplateType(TBasicType&); + bool acceptTemplateVecMatBasicType(TBasicType&); bool acceptVectorTemplateType(TType&); bool acceptMatrixTemplateType(TType&); + bool acceptStreamOutTemplateType(TType&, TLayoutGeometry&); + bool acceptOutputPrimitiveGeometry(TLayoutGeometry&); bool acceptAnnotations(TQualifier&); bool acceptSamplerType(TType&); bool acceptTextureType(TType&); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index ff2c3014..49577677 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -758,6 +758,13 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc); } } + } else if (field == "Append" || + field == "RestartStrip") { + // These methods only valid on stage in variables + // TODO: ... which are stream out types, if there's any way to test that here. + if (base->getType().getQualifier().storage == EvqVaryingOut) { + return intermediate.addMethod(base, TType(EbtVoid), &field, loc); + } } // It's not .length() if we get to here. @@ -1137,12 +1144,19 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l postMainReturn = false; // Handle function attributes - const TIntermAggregate* numThreadliterals = attributes[EatNumthreads]; - if (numThreadliterals != nullptr && inEntryPoint) { - const TIntermSequence& sequence = numThreadliterals->getSequence(); + if (inEntryPoint) { + const TIntermAggregate* numThreads = attributes[EatNumThreads]; + if (numThreads != nullptr) { + const TIntermSequence& sequence = numThreads->getSequence(); - for (int lid = 0; lid < int(sequence.size()); ++lid) - intermediate.setLocalSize(lid, sequence[lid]->getAsConstantUnion()->getConstArray()[0].getIConst()); + for (int lid = 0; lid < int(sequence.size()); ++lid) + intermediate.setLocalSize(lid, sequence[lid]->getAsConstantUnion()->getConstArray()[0].getIConst()); + } + + const TIntermAggregate* maxVertexCount = attributes[EatMaxVertexCount]; + if (maxVertexCount != nullptr) { + intermediate.setVertices(maxVertexCount->getSequence()[0]->getAsConstantUnion()->getConstArray()[0].getIConst()); + } } return paramNodes; @@ -2063,6 +2077,55 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType } } +// +// Decompose geometry shader methods +// +void HlslParseContext::decomposeGeometryMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) +{ + if (!node || !node->getAsOperator()) + return; + + const TOperator op = node->getAsOperator()->getOp(); + const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr; + + switch (op) { + case EOpMethodAppend: + if (argAggregate) { + TIntermAggregate* sequence = nullptr; + TIntermAggregate* emit = new TIntermAggregate(EOpEmitVertex); + + emit->setLoc(loc); + emit->setType(TType(EbtVoid)); + + sequence = intermediate.growAggregate(sequence, + intermediate.addAssign(EOpAssign, + argAggregate->getSequence()[0]->getAsTyped(), + argAggregate->getSequence()[1]->getAsTyped(), loc), + loc); + + sequence = intermediate.growAggregate(sequence, emit); + + sequence->setOperator(EOpSequence); + sequence->setLoc(loc); + sequence->setType(TType(EbtVoid)); + node = sequence; + } + break; + + case EOpMethodRestartStrip: + { + TIntermAggregate* cut = new TIntermAggregate(EOpEndPrimitive); + cut->setLoc(loc); + cut->setType(TType(EbtVoid)); + node = cut; + } + break; + + default: + break; // most pass through unchanged + } +} + // // Optionally decompose intrinsics to AST opcodes. // @@ -2546,8 +2609,9 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct result = addOutputArgumentConversions(*fnCandidate, *result->getAsAggregate()); } - decomposeIntrinsic(loc, result, arguments); // HLSL->AST intrinsic decompositions - decomposeSampleMethods(loc, result, arguments); // HLSL->AST sample method decompositions + decomposeIntrinsic(loc, result, arguments); // HLSL->AST intrinsic decompositions + decomposeSampleMethods(loc, result, arguments); // HLSL->AST sample method decompositions + decomposeGeometryMethods(loc, result, arguments); // HLSL->AST geometry method decompositions } } @@ -4295,6 +4359,14 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu TVector candidateList; symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); + // These builtin ops can accept any type, so we bypass the argument selection + if (candidateList.size() == 1 && builtIn && + (candidateList[0]->getBuiltInOp() == EOpMethodAppend || + candidateList[0]->getBuiltInOp() == EOpMethodRestartStrip)) { + + return candidateList[0]; + } + // can 'from' convert to 'to'? const auto convertible = [this](const TType& from, const TType& to) -> bool { if (from == to) @@ -5202,6 +5274,53 @@ void HlslParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier addQualifierToExisting(loc, qualifier, *identifiers[i]); } +// +// Update the intermediate for the given input geometry +// +bool HlslParseContext::handleInputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry) +{ + switch (geometry) { + case ElgPoints: // fall through + case ElgLines: // ... + case ElgTriangles: // ... + case ElgLinesAdjacency: // ... + case ElgTrianglesAdjacency: // ... + if (! intermediate.setInputPrimitive(geometry)) { + error(loc, "input primitive geometry redefinition", TQualifier::getGeometryString(geometry), ""); + return false; + } + break; + + default: + error(loc, "cannot apply to 'in'", TQualifier::getGeometryString(geometry), ""); + return false; + } + + return true; +} + +// +// Update the intermediate for the given output geometry +// +bool HlslParseContext::handleOutputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry) +{ + switch (geometry) { + case ElgPoints: + case ElgLineStrip: + case ElgTriangleStrip: + if (! intermediate.setOutputPrimitive(geometry)) { + error(loc, "output primitive geometry redefinition", TQualifier::getGeometryString(geometry), ""); + return false; + } + break; + default: + error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(geometry), ""); + return false; + } + + return true; +} + // // Updating default qualifier for the case of a declaration with just a qualifier, // no type, block, or identifier. @@ -5231,16 +5350,7 @@ void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); } } else if (publicType.qualifier.storage == EvqVaryingOut) { - switch (publicType.shaderQualifiers.geometry) { - case ElgPoints: - case ElgLineStrip: - case ElgTriangleStrip: - if (! intermediate.setOutputPrimitive(publicType.shaderQualifiers.geometry)) - error(loc, "cannot change previously set output primitive", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); - break; - default: - error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); - } + handleOutputGeometry(loc, publicType.shaderQualifiers.geometry); } else error(loc, "cannot apply to:", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), GetStorageQualifierString(publicType.qualifier.storage)); } diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 9a7285f9..3862c10f 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -81,6 +81,7 @@ public: TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*); void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); + void decomposeGeometryMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); void addInputArgumentConversions(const TFunction&, TIntermNode*&) const; TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&); @@ -160,6 +161,9 @@ public: TLayoutFormat getLayoutFromTxType(const TSourceLoc&, const TType&); + bool handleOutputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry); + bool handleInputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry); + protected: void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index 7ab159dc..f8fed0d8 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -502,6 +502,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c static const EShLanguageMask EShLangCS = EShLangAll; static const EShLanguageMask EShLangPS = EShLangAll; static const EShLanguageMask EShLangHS = EShLangAll; + static const EShLanguageMask EShLangGS = EShLangAll; // This structure encodes the prototype information for each HLSL intrinsic. // Because explicit enumeration would be cumbersome, it's procedurally generated. @@ -831,6 +832,10 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "GatherCmpAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll }, { "GatherCmpAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll }, + // geometry methods + { "Append", "-", "-", "-", "-", EShLangGS }, + { "RestartStrip", "-", "-", "-", "-", EShLangGS }, + // Mark end of list, since we want to avoid a range-based for, as some compilers don't handle it yet. { nullptr, nullptr, nullptr, nullptr, nullptr, 0 }, }; @@ -1140,6 +1145,10 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil symbolTable.relateToOperator("GatherCmpGreen", EOpMethodGatherCmpGreen); symbolTable.relateToOperator("GatherCmpBlue", EOpMethodGatherCmpBlue); symbolTable.relateToOperator("GatherCmpAlpha", EOpMethodGatherCmpAlpha); + + // GS methods + symbolTable.relateToOperator("Append", EOpMethodAppend); + symbolTable.relateToOperator("RestartStrip", EOpMethodRestartStrip); } // diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp index e7cd1fcf..2c45b3ff 100755 --- a/hlsl/hlslScanContext.cpp +++ b/hlsl/hlslScanContext.cpp @@ -119,6 +119,16 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["inout"] = EHTokInOut; (*KeywordMap)["layout"] = EHTokLayout; + (*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)["Buffer"] = EHTokBuffer; (*KeywordMap)["vector"] = EHTokVector; (*KeywordMap)["matrix"] = EHTokMatrix; @@ -496,7 +506,20 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokLayout: return keyword; - // template types + // primitive types + case EHTokPoint: + case EHTokLine: + case EHTokTriangle: + case EHTokLineAdj: + case EHTokTriangleAdj: + return keyword; + + // stream out types + case EHTokPointStream: + case EHTokLineStream: + case EHTokTriangleStream: + return keyword; + case EHTokBuffer: case EHTokVector: case EHTokMatrix: diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h index d634c8ee..6902070c 100755 --- a/hlsl/hlslTokens.h +++ b/hlsl/hlslTokens.h @@ -66,6 +66,18 @@ enum EHlslTokenClass { EHTokInOut, EHTokLayout, + // primitive types + EHTokPoint, + EHTokLine, + EHTokTriangle, + EHTokLineAdj, + EHTokTriangleAdj, + + // stream out types + EHTokPointStream, + EHTokLineStream, + EHTokTriangleStream, + // template types EHTokBuffer, EHTokVector, From 32c294ed766bc26498d37450d1a9ba8a7c83e125 Mon Sep 17 00:00:00 2001 From: BearishSun Date: Tue, 22 Nov 2016 09:53:04 +0100 Subject: [PATCH 098/130] Adding a way to retrieve vertex attribute TType using TProgram reflection API (required in order to query location attributes). --- glslang/MachineIndependent/ShaderLang.cpp | 1 + glslang/Public/ShaderLang.h | 1 + 2 files changed, 2 insertions(+) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 5b44af52..8df493bc 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1708,6 +1708,7 @@ int TProgram::getUniformArraySize(int index) const { return reflection int TProgram::getNumLiveAttributes() const { return reflection->getNumAttributes(); } const char* TProgram::getAttributeName(int index) const { return reflection->getAttribute(index).name.c_str(); } int TProgram::getAttributeType(int index) const { return reflection->getAttribute(index).glDefineType; } +const TType* TProgram::getAttributeTType(int index) const { return reflection->getAttribute(index).getType(); } const TType* TProgram::getUniformTType(int index) const { return reflection->getUniform(index).getType(); } const TType* TProgram::getUniformBlockTType(int index) const { return reflection->getUniformBlock(index).getType(); } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 9a76b40a..6793cdd3 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -511,6 +511,7 @@ public: int getAttributeType(int index) const; // can be used for glGetActiveAttrib() const TType* getUniformTType(int index) const; // returns a TType* const TType* getUniformBlockTType(int index) const; // returns a TType* + const TType* getAttributeTType(int index) const; // returns a TType* void dumpReflection(); From ef33ec0925fa68e24e4b26471957bb1f27cadd24 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Wed, 2 Nov 2016 12:42:34 -0600 Subject: [PATCH 099/130] HLSL: add intrinsic function implicit promotions This PR handles implicit promotions for intrinsics when there is no exact match, such as for example clamp(int, bool, float). In this case the int and bool will be promoted to a float, and the clamp(float, float, float) form used. These promotions can be mixed with shape conversions, e.g, clamp(int, bool2, float2). Output conversions are handled either via the existing addOutputArgumentConversion function, which this PR generalizes to handle either aggregates or unaries, or by intrinsic decomposition. If there are methods or intrinsics to be decomposed, then decomposition is responsible for any output conversions, which turns out to happen automatically in all current cases. This can be revisited once inout conversions are in place. Some cases of actual ambiguity were fixed in several tests, e.g, spv.register.autoassign.* Some intrinsics with only uint versions were expanded to signed ints natively, where the underlying AST and SPIR-V supports that. E.g, countbits. This avoids extraneous conversion nodes. A new function promoteAggregate is added, and used by findFunction. This is essentially a generalization of the "promote 1st or 2nd arg" algorithm in promoteBinary. The actual selection proceeds in three steps, as described in the comments in hlslParseContext::findFunction: 1. Attempt an exact match. If found, use it. 2. If not, obtain the operator from step 1, and promote arguments. 3. Re-select the intrinsic overload from the results of step 2. --- Test/baseResults/hlsl.intrinsics.frag.out | 4189 +++++++++-------- .../hlsl.intrinsics.promote.down.frag.out | 184 + .../hlsl.intrinsics.promote.frag.out | 1313 ++++++ .../hlsl.intrinsics.promote.outputs.frag.out | 337 ++ Test/baseResults/hlsl.intrinsics.vert.out | 2242 ++++----- .../spv.register.autoassign-2.frag.out | 27 +- Test/hlsl.intrinsics.frag | 4 +- Test/hlsl.intrinsics.promote.down.frag | 22 + Test/hlsl.intrinsics.promote.frag | 79 + Test/hlsl.intrinsics.promote.outputs.frag | 49 + Test/spv.register.autoassign-2.frag | 4 +- Test/spv.register.autoassign.rangetest.frag | 4 +- glslang/MachineIndependent/Intermediate.cpp | 103 + glslang/MachineIndependent/linkValidate.cpp | 3 + .../MachineIndependent/localintermediate.h | 3 +- gtests/Hlsl.FromFile.cpp | 3 + hlsl/hlslParseHelper.cpp | 128 +- hlsl/hlslParseHelper.h | 4 +- hlsl/hlslParseables.cpp | 16 +- 19 files changed, 5453 insertions(+), 3261 deletions(-) create mode 100644 Test/baseResults/hlsl.intrinsics.promote.down.frag.out create mode 100644 Test/baseResults/hlsl.intrinsics.promote.frag.out create mode 100644 Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out create mode 100644 Test/hlsl.intrinsics.promote.down.frag create mode 100644 Test/hlsl.intrinsics.promote.frag create mode 100644 Test/hlsl.intrinsics.promote.outputs.frag diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 8a1935ee..5def9667 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -92,11 +92,11 @@ gl_FragCoord origin is upper left 0:35 hyp. cosine (temp float) 0:35 'inF0' (in float) 0:36 Sequence -0:36 move second child to first child (temp uint) -0:36 'r016' (temp uint) -0:36 bitCount (temp uint) +0:36 move second child to first child (temp int) +0:36 'r016' (temp int) +0:36 bitCount (temp int) 0:36 Constant: -0:36 7 (const uint) +0:36 7 (const int) 0:37 Sequence 0:37 move second child to first child (temp float) 0:37 'r017' (temp float) @@ -257,9 +257,10 @@ gl_FragCoord origin is upper left 0:69 Sequence 0:69 move second child to first child (temp uint) 0:69 'r048' (temp uint) -0:69 bitFieldReverse (temp uint) -0:69 Constant: -0:69 2 (const uint) +0:69 Convert int to uint (temp uint) +0:69 bitFieldReverse (temp int) +0:69 Constant: +0:69 2 (const int) 0:70 Sequence 0:70 move second child to first child (temp float) 0:70 'r049' (temp float) @@ -440,12 +441,12 @@ gl_FragCoord origin is upper left 0:113 hyp. cosine (temp 2-component vector of float) 0:113 'inF0' (in 2-component vector of float) 0:114 Sequence -0:114 move second child to first child (temp 2-component vector of uint) -0:114 'r016' (temp 2-component vector of uint) -0:? bitCount (temp 2-component vector of uint) +0:114 move second child to first child (temp 2-component vector of int) +0:114 'r016' (temp 2-component vector of int) +0:? bitCount (temp 2-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) +0:? 7 (const int) +0:? 3 (const int) 0:115 Sequence 0:115 move second child to first child (temp 2-component vector of float) 0:115 'r017' (temp 2-component vector of float) @@ -2893,11 +2894,11 @@ gl_FragCoord origin is upper left 0:35 hyp. cosine (temp float) 0:35 'inF0' (in float) 0:36 Sequence -0:36 move second child to first child (temp uint) -0:36 'r016' (temp uint) -0:36 bitCount (temp uint) +0:36 move second child to first child (temp int) +0:36 'r016' (temp int) +0:36 bitCount (temp int) 0:36 Constant: -0:36 7 (const uint) +0:36 7 (const int) 0:37 Sequence 0:37 move second child to first child (temp float) 0:37 'r017' (temp float) @@ -3058,9 +3059,10 @@ gl_FragCoord origin is upper left 0:69 Sequence 0:69 move second child to first child (temp uint) 0:69 'r048' (temp uint) -0:69 bitFieldReverse (temp uint) -0:69 Constant: -0:69 2 (const uint) +0:69 Convert int to uint (temp uint) +0:69 bitFieldReverse (temp int) +0:69 Constant: +0:69 2 (const int) 0:70 Sequence 0:70 move second child to first child (temp float) 0:70 'r049' (temp float) @@ -3241,12 +3243,12 @@ gl_FragCoord origin is upper left 0:113 hyp. cosine (temp 2-component vector of float) 0:113 'inF0' (in 2-component vector of float) 0:114 Sequence -0:114 move second child to first child (temp 2-component vector of uint) -0:114 'r016' (temp 2-component vector of uint) -0:? bitCount (temp 2-component vector of uint) +0:114 move second child to first child (temp 2-component vector of int) +0:114 'r016' (temp 2-component vector of int) +0:? bitCount (temp 2-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) +0:? 7 (const int) +0:? 3 (const int) 0:115 Sequence 0:115 move second child to first child (temp 2-component vector of float) 0:115 'r017' (temp 2-component vector of float) @@ -5599,13 +5601,13 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 1825 +// Id's are bound by 1828 Capability Shader Capability DerivativeControl 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 1805 + EntryPoint Fragment 4 "main" 1808 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 16 "PixelShaderFunctionS(f1;f1;f1;u1;u1;" @@ -5704,26 +5706,26 @@ gl_FragCoord origin is upper left Name 210 "r027" Name 213 "r028" Name 216 "r029" - Name 220 "r030" - Name 223 "r031" - Name 226 "r033" - Name 230 "r034" - Name 233 "r035" - Name 235 "ResType" - Name 239 "r036" - Name 242 "r037" - Name 245 "r038" - Name 248 "r039" - Name 252 "r039a" - Name 257 "r040" - Name 260 "r041" - Name 265 "r042" - Name 268 "r043" - Name 272 "r044" - Name 276 "r045" - Name 280 "r046" - Name 283 "r047" - Name 287 "r048" + Name 219 "r030" + Name 222 "r031" + Name 225 "r033" + Name 229 "r034" + Name 232 "r035" + Name 234 "ResType" + Name 238 "r036" + Name 241 "r037" + Name 244 "r038" + Name 247 "r039" + Name 251 "r039a" + Name 256 "r040" + Name 259 "r041" + Name 264 "r042" + Name 267 "r043" + Name 271 "r044" + Name 275 "r045" + Name 279 "r046" + Name 282 "r047" + Name 286 "r048" Name 290 "r049" Name 293 "r050" Name 296 "r051" @@ -5764,375 +5766,375 @@ gl_FragCoord origin is upper left Name 428 "r029" Name 431 "r030" Name 436 "r031" - Name 440 "r032" - Name 442 "r033" - Name 445 "r035" - Name 449 "r036" - Name 452 "r037" - Name 454 "ResType" - Name 458 "r038" - Name 462 "r039" - Name 465 "r040" - Name 468 "r041" - Name 472 "r039a" - Name 477 "r042" - Name 480 "r043" - Name 483 "r044" - Name 487 "r045" - Name 490 "r046" - Name 494 "r047" - Name 498 "r048" - Name 501 "r049" - Name 505 "r050" - Name 508 "r051" - Name 512 "r052" - Name 516 "r053" - Name 521 "r054" - Name 525 "r055" - Name 528 "r056" - Name 531 "r057" - Name 536 "r058" - Name 539 "r059" - Name 546 "r060" - Name 549 "r061" - Name 554 "r062" - Name 557 "r063" - Name 561 "r064" - Name 564 "r065" - Name 567 "r066" - Name 573 "r000" - Name 576 "r001" - Name 579 "r002" - Name 582 "r003" - Name 585 "r004" - Name 590 "r005" - Name 593 "r006" - Name 596 "r007" - Name 599 "r009" - Name 602 "r010" - Name 606 "r011" - Name 609 "r012" - Name 622 "r013" - Name 625 "r014" - Name 628 "r015" - Name 632 "r016" - Name 636 "r017" - Name 639 "r018" - Name 642 "r019" - Name 645 "r020" - Name 648 "r021" - Name 651 "r022" - Name 654 "r023" - Name 657 "r024" - Name 661 "r025" - Name 665 "r029" - Name 668 "r030" - Name 671 "r031" - Name 676 "r032" - Name 680 "r033" - Name 682 "r034" - Name 685 "r036" - Name 689 "r037" - Name 692 "r038" - Name 694 "ResType" - Name 698 "r039" - Name 702 "r040" - Name 705 "r041" - Name 708 "r042" - Name 712 "r039a" - Name 717 "r039b" - Name 723 "r043" - Name 726 "r044" - Name 729 "r045" - Name 733 "r046" - Name 736 "r047" - Name 740 "r048" - Name 744 "r049" - Name 747 "r050" - Name 751 "r051" - Name 754 "r052" - Name 758 "r053" - Name 762 "r054" - Name 766 "r055" - Name 769 "r056" - Name 772 "r057" - Name 775 "r058" - Name 780 "r059" - Name 783 "r060" - Name 790 "r061" - Name 793 "r062" - Name 798 "r063" - Name 801 "r064" - Name 805 "r065" - Name 808 "r066" - Name 811 "r067" - Name 818 "r000" - Name 821 "r001" - Name 824 "r002" - Name 827 "r003" - Name 830 "r004" - Name 835 "r005" - Name 838 "r006" - Name 841 "r007" - Name 844 "r009" - Name 847 "r010" - Name 851 "r011" - Name 854 "r012" - Name 867 "r013" - Name 870 "r014" - Name 873 "r015" - Name 876 "r016" - Name 879 "r017" - Name 882 "r018" - Name 885 "r019" - Name 888 "r020" - Name 891 "r021" - Name 894 "r022" - Name 897 "r023" - Name 901 "r024" - Name 905 "r025" - Name 916 "r029" - Name 919 "r030" - Name 922 "r031" - Name 927 "r032" - Name 932 "r033" - Name 934 "r034" - Name 937 "r036" - Name 941 "r037" - Name 944 "r038" - Name 946 "ResType" - Name 950 "r039" - Name 954 "r040" - Name 957 "r041" - Name 960 "r042" - Name 964 "r039a" - Name 969 "r043" - Name 972 "r044" - Name 975 "r045" - Name 979 "r046" - Name 982 "r047" - Name 986 "r048" - Name 990 "r049" - Name 993 "r050" - Name 997 "r051" - Name 1000 "r052" - Name 1004 "r053" - Name 1008 "r054" - Name 1012 "r055" - Name 1015 "r056" - Name 1018 "r057" - Name 1021 "r058" - Name 1026 "r059" - Name 1029 "r060" - Name 1036 "r061" - Name 1039 "r062" - Name 1044 "r063" - Name 1047 "r064" - Name 1051 "r065" - Name 1054 "r066" - Name 1057 "r067" - Name 1064 "r000" - Name 1067 "r001" - Name 1072 "r003" - Name 1075 "r004" - Name 1078 "r005" - Name 1081 "r006" - Name 1085 "r007" - Name 1096 "r008" - Name 1101 "r009" - Name 1104 "r010" - Name 1107 "r011" - Name 1110 "r012" - Name 1113 "r013" - Name 1116 "r014" - Name 1119 "r015" - Name 1122 "r016" - Name 1125 "r017" - Name 1128 "r018" - Name 1131 "r019" - Name 1134 "R020" - Name 1137 "r021" - Name 1140 "r022" - Name 1150 "r023" - Name 1153 "r024" - Name 1155 "ResType" - Name 1159 "r025" - Name 1162 "r026" - Name 1166 "r026a" - Name 1171 "r027" - Name 1174 "r028" - Name 1178 "r029" - Name 1181 "r030" - Name 1185 "r031" - Name 1189 "r032" - Name 1193 "r033" - Name 1196 "r034" - Name 1199 "r035" - Name 1202 "r036" - Name 1207 "r037" - Name 1210 "r038" - Name 1217 "r039" - Name 1220 "r049" - Name 1225 "r041" - Name 1228 "r042" - Name 1232 "r043" - Name 1235 "r044" - Name 1240 "r046" - Name 1247 "r000" - Name 1250 "r001" - Name 1255 "r003" - Name 1258 "r004" - Name 1261 "r005" - Name 1264 "r006" - Name 1268 "r007" - Name 1279 "r008" - Name 1284 "r009" - Name 1287 "r010" - Name 1290 "r011" - Name 1293 "r012" - Name 1296 "r013" - Name 1299 "r014" - Name 1302 "r015" - Name 1305 "r016" - Name 1308 "r017" - Name 1311 "r018" - Name 1314 "r019" - Name 1317 "R020" - Name 1320 "r021" - Name 1323 "r022" - Name 1336 "r023" - Name 1339 "r024" - Name 1341 "ResType" - Name 1345 "r025" - Name 1348 "r026" - Name 1352 "r026a" - Name 1357 "r027" - Name 1360 "r028" - Name 1364 "r029" - Name 1367 "r030" - Name 1371 "r031" - Name 1375 "r032" - Name 1379 "r033" - Name 1382 "r034" - Name 1385 "r035" - Name 1388 "r036" - Name 1393 "r037" - Name 1396 "r038" - Name 1403 "r039" - Name 1406 "r049" - Name 1411 "r041" - Name 1414 "r042" - Name 1418 "r043" - Name 1421 "r044" - Name 1426 "r046" - Name 1433 "r000" - Name 1436 "r001" - Name 1441 "r003" - Name 1444 "r004" - Name 1447 "r005" - Name 1450 "r006" - Name 1454 "r007" - Name 1465 "r008" - Name 1470 "r009" - Name 1473 "r010" - Name 1476 "r011" - Name 1479 "r012" - Name 1482 "r013" - Name 1485 "r014" - Name 1488 "r015" - Name 1491 "r016" - Name 1494 "r017" - Name 1497 "r018" - Name 1500 "r019" - Name 1503 "R020" - Name 1506 "r021" - Name 1509 "r022" - Name 1525 "r023" - Name 1528 "r024" - Name 1530 "ResType" - Name 1534 "r025" - Name 1537 "r026" - Name 1541 "r026a" - Name 1546 "r027" - Name 1549 "r028" - Name 1553 "r029" - Name 1556 "r030" - Name 1560 "r031" - Name 1564 "r032" - Name 1568 "r033" - Name 1571 "r034" - Name 1574 "r035" - Name 1577 "r036" - Name 1582 "r037" - Name 1585 "r038" - Name 1592 "r039" - Name 1595 "r049" - Name 1600 "r041" - Name 1603 "r042" - Name 1607 "r043" - Name 1610 "r044" - Name 1615 "r046" - Name 1622 "r0" - Name 1626 "r1" - Name 1630 "r2" - Name 1634 "r3" - Name 1638 "r4" - Name 1642 "r5" - Name 1646 "r6" - Name 1650 "r7" - Name 1654 "r8" - Name 1658 "r0" - Name 1662 "r1" - Name 1666 "r2" - Name 1670 "r3" - Name 1674 "r4" - Name 1678 "r5" - Name 1682 "r6" - Name 1686 "r7" - Name 1690 "r8" - Name 1694 "r0" - Name 1698 "r1" - Name 1702 "r2" - Name 1706 "r3" - Name 1710 "r4" - Name 1714 "r5" - Name 1718 "r6" - Name 1722 "r7" - Name 1726 "r8" - Name 1730 "r00" - Name 1734 "r01" - Name 1738 "r02" - Name 1742 "r03" - Name 1746 "r04" - Name 1750 "r05" - Name 1754 "r06" - Name 1758 "r07" - Name 1762 "r08" - Name 1766 "r09" - Name 1770 "r10" - Name 1774 "r11" - Name 1778 "r12" - Name 1782 "r13" - Name 1786 "r14" - Name 1790 "r15" - Name 1794 "r16" - Name 1798 "PS_OUTPUT" - MemberName 1798(PS_OUTPUT) 0 "color" - Name 1800 "ps_output" - Name 1805 "color" - Name 1810 "gs_ua" - Name 1811 "gs_ub" - Name 1812 "gs_uc" - Name 1814 "gs_ua2" - Name 1815 "gs_ub2" - Name 1816 "gs_uc2" - Name 1818 "gs_ua3" - Name 1819 "gs_ub3" - Name 1820 "gs_uc3" - Name 1822 "gs_ua4" - Name 1823 "gs_ub4" - Name 1824 "gs_uc4" - Decorate 1805(color) Location 0 + Name 441 "r032" + Name 443 "r033" + Name 446 "r035" + Name 450 "r036" + Name 453 "r037" + Name 455 "ResType" + Name 459 "r038" + Name 463 "r039" + Name 466 "r040" + Name 469 "r041" + Name 473 "r039a" + Name 478 "r042" + Name 481 "r043" + Name 484 "r044" + Name 488 "r045" + Name 491 "r046" + Name 495 "r047" + Name 499 "r048" + Name 502 "r049" + Name 506 "r050" + Name 509 "r051" + Name 513 "r052" + Name 517 "r053" + Name 522 "r054" + Name 527 "r055" + Name 530 "r056" + Name 533 "r057" + Name 538 "r058" + Name 541 "r059" + Name 548 "r060" + Name 551 "r061" + Name 556 "r062" + Name 559 "r063" + Name 563 "r064" + Name 566 "r065" + Name 569 "r066" + Name 575 "r000" + Name 578 "r001" + Name 581 "r002" + Name 584 "r003" + Name 587 "r004" + Name 592 "r005" + Name 595 "r006" + Name 598 "r007" + Name 601 "r009" + Name 604 "r010" + Name 608 "r011" + Name 611 "r012" + Name 624 "r013" + Name 627 "r014" + Name 630 "r015" + Name 635 "r016" + Name 639 "r017" + Name 642 "r018" + Name 645 "r019" + Name 648 "r020" + Name 651 "r021" + Name 654 "r022" + Name 657 "r023" + Name 660 "r024" + Name 664 "r025" + Name 668 "r029" + Name 671 "r030" + Name 674 "r031" + Name 679 "r032" + Name 683 "r033" + Name 685 "r034" + Name 688 "r036" + Name 692 "r037" + Name 695 "r038" + Name 697 "ResType" + Name 701 "r039" + Name 705 "r040" + Name 708 "r041" + Name 711 "r042" + Name 715 "r039a" + Name 720 "r039b" + Name 726 "r043" + Name 729 "r044" + Name 732 "r045" + Name 736 "r046" + Name 739 "r047" + Name 743 "r048" + Name 747 "r049" + Name 750 "r050" + Name 754 "r051" + Name 757 "r052" + Name 761 "r053" + Name 765 "r054" + Name 769 "r055" + Name 772 "r056" + Name 775 "r057" + Name 778 "r058" + Name 783 "r059" + Name 786 "r060" + Name 793 "r061" + Name 796 "r062" + Name 801 "r063" + Name 804 "r064" + Name 808 "r065" + Name 811 "r066" + Name 814 "r067" + Name 821 "r000" + Name 824 "r001" + Name 827 "r002" + Name 830 "r003" + Name 833 "r004" + Name 838 "r005" + Name 841 "r006" + Name 844 "r007" + Name 847 "r009" + Name 850 "r010" + Name 854 "r011" + Name 857 "r012" + Name 870 "r013" + Name 873 "r014" + Name 876 "r015" + Name 879 "r016" + Name 882 "r017" + Name 885 "r018" + Name 888 "r019" + Name 891 "r020" + Name 894 "r021" + Name 897 "r022" + Name 900 "r023" + Name 904 "r024" + Name 908 "r025" + Name 919 "r029" + Name 922 "r030" + Name 925 "r031" + Name 930 "r032" + Name 935 "r033" + Name 937 "r034" + Name 940 "r036" + Name 944 "r037" + Name 947 "r038" + Name 949 "ResType" + Name 953 "r039" + Name 957 "r040" + Name 960 "r041" + Name 963 "r042" + Name 967 "r039a" + Name 972 "r043" + Name 975 "r044" + Name 978 "r045" + Name 982 "r046" + Name 985 "r047" + Name 989 "r048" + Name 993 "r049" + Name 996 "r050" + Name 1000 "r051" + Name 1003 "r052" + Name 1007 "r053" + Name 1011 "r054" + Name 1015 "r055" + Name 1018 "r056" + Name 1021 "r057" + Name 1024 "r058" + Name 1029 "r059" + Name 1032 "r060" + Name 1039 "r061" + Name 1042 "r062" + Name 1047 "r063" + Name 1050 "r064" + Name 1054 "r065" + Name 1057 "r066" + Name 1060 "r067" + Name 1067 "r000" + Name 1070 "r001" + Name 1075 "r003" + Name 1078 "r004" + Name 1081 "r005" + Name 1084 "r006" + Name 1088 "r007" + Name 1099 "r008" + Name 1104 "r009" + Name 1107 "r010" + Name 1110 "r011" + Name 1113 "r012" + Name 1116 "r013" + Name 1119 "r014" + Name 1122 "r015" + Name 1125 "r016" + Name 1128 "r017" + Name 1131 "r018" + Name 1134 "r019" + Name 1137 "R020" + Name 1140 "r021" + Name 1143 "r022" + Name 1153 "r023" + Name 1156 "r024" + Name 1158 "ResType" + Name 1162 "r025" + Name 1165 "r026" + Name 1169 "r026a" + Name 1174 "r027" + Name 1177 "r028" + Name 1181 "r029" + Name 1184 "r030" + Name 1188 "r031" + Name 1192 "r032" + Name 1196 "r033" + Name 1199 "r034" + Name 1202 "r035" + Name 1205 "r036" + Name 1210 "r037" + Name 1213 "r038" + Name 1220 "r039" + Name 1223 "r049" + Name 1228 "r041" + Name 1231 "r042" + Name 1235 "r043" + Name 1238 "r044" + Name 1243 "r046" + Name 1250 "r000" + Name 1253 "r001" + Name 1258 "r003" + Name 1261 "r004" + Name 1264 "r005" + Name 1267 "r006" + Name 1271 "r007" + Name 1282 "r008" + Name 1287 "r009" + Name 1290 "r010" + Name 1293 "r011" + Name 1296 "r012" + Name 1299 "r013" + Name 1302 "r014" + Name 1305 "r015" + Name 1308 "r016" + Name 1311 "r017" + Name 1314 "r018" + Name 1317 "r019" + Name 1320 "R020" + Name 1323 "r021" + Name 1326 "r022" + Name 1339 "r023" + Name 1342 "r024" + Name 1344 "ResType" + Name 1348 "r025" + Name 1351 "r026" + Name 1355 "r026a" + Name 1360 "r027" + Name 1363 "r028" + Name 1367 "r029" + Name 1370 "r030" + Name 1374 "r031" + Name 1378 "r032" + Name 1382 "r033" + Name 1385 "r034" + Name 1388 "r035" + Name 1391 "r036" + Name 1396 "r037" + Name 1399 "r038" + Name 1406 "r039" + Name 1409 "r049" + Name 1414 "r041" + Name 1417 "r042" + Name 1421 "r043" + Name 1424 "r044" + Name 1429 "r046" + Name 1436 "r000" + Name 1439 "r001" + Name 1444 "r003" + Name 1447 "r004" + Name 1450 "r005" + Name 1453 "r006" + Name 1457 "r007" + Name 1468 "r008" + Name 1473 "r009" + Name 1476 "r010" + Name 1479 "r011" + Name 1482 "r012" + Name 1485 "r013" + Name 1488 "r014" + Name 1491 "r015" + Name 1494 "r016" + Name 1497 "r017" + Name 1500 "r018" + Name 1503 "r019" + Name 1506 "R020" + Name 1509 "r021" + Name 1512 "r022" + Name 1528 "r023" + Name 1531 "r024" + Name 1533 "ResType" + Name 1537 "r025" + Name 1540 "r026" + Name 1544 "r026a" + Name 1549 "r027" + Name 1552 "r028" + Name 1556 "r029" + Name 1559 "r030" + Name 1563 "r031" + Name 1567 "r032" + Name 1571 "r033" + Name 1574 "r034" + Name 1577 "r035" + Name 1580 "r036" + Name 1585 "r037" + Name 1588 "r038" + Name 1595 "r039" + Name 1598 "r049" + Name 1603 "r041" + Name 1606 "r042" + Name 1610 "r043" + Name 1613 "r044" + Name 1618 "r046" + Name 1625 "r0" + Name 1629 "r1" + Name 1633 "r2" + Name 1637 "r3" + Name 1641 "r4" + Name 1645 "r5" + Name 1649 "r6" + Name 1653 "r7" + Name 1657 "r8" + Name 1661 "r0" + Name 1665 "r1" + Name 1669 "r2" + Name 1673 "r3" + Name 1677 "r4" + Name 1681 "r5" + Name 1685 "r6" + Name 1689 "r7" + Name 1693 "r8" + Name 1697 "r0" + Name 1701 "r1" + Name 1705 "r2" + Name 1709 "r3" + Name 1713 "r4" + Name 1717 "r5" + Name 1721 "r6" + Name 1725 "r7" + Name 1729 "r8" + Name 1733 "r00" + Name 1737 "r01" + Name 1741 "r02" + Name 1745 "r03" + Name 1749 "r04" + Name 1753 "r05" + Name 1757 "r06" + Name 1761 "r07" + Name 1765 "r08" + Name 1769 "r09" + Name 1773 "r10" + Name 1777 "r11" + Name 1781 "r12" + Name 1785 "r13" + Name 1789 "r14" + Name 1793 "r15" + Name 1797 "r16" + Name 1801 "PS_OUTPUT" + MemberName 1801(PS_OUTPUT) 0 "color" + Name 1803 "ps_output" + Name 1808 "color" + Name 1813 "gs_ua" + Name 1814 "gs_ub" + Name 1815 "gs_uc" + Name 1817 "gs_ua2" + Name 1818 "gs_ub2" + Name 1819 "gs_uc2" + Name 1821 "gs_ua3" + Name 1822 "gs_ub3" + Name 1823 "gs_uc3" + Name 1825 "gs_ua4" + Name 1826 "gs_ub4" + Name 1827 "gs_uc4" + Decorate 1808(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -6182,98 +6184,100 @@ gl_FragCoord origin is upper left 148: TypeInt 32 1 149: TypePointer Function 148(int) 175: 6(float) Constant 0 - 187: 8(int) Constant 7 - 217: 148(int) Constant 7 - 235(ResType): TypeStruct 6(float) 148(int) - 263: 6(float) Constant 1050288283 - 284: 6(float) Constant 1065353216 - 288: 8(int) Constant 2 + 187: 148(int) Constant 7 + 234(ResType): TypeStruct 6(float) 148(int) + 262: 6(float) Constant 1050288283 + 283: 6(float) Constant 1065353216 + 287: 148(int) Constant 2 352: TypeVector 148(int) 2 353: TypePointer Function 352(ivec2) 379: 24(fvec2) ConstantComposite 175 175 380: TypeVector 131(bool) 2 - 393: 8(int) Constant 3 - 394: 26(ivec2) ConstantComposite 187 393 - 437: 8(int) Constant 8 - 438: 26(ivec2) ConstantComposite 187 437 - 454(ResType): TypeStruct 24(fvec2) 352(ivec2) - 461: TypePointer Function 380(bvec2) - 519: 6(float) Constant 1073741824 - 522: 8(int) Constant 1 - 523: 26(ivec2) ConstantComposite 522 288 - 570: 24(fvec2) ConstantComposite 284 519 - 588: TypeVector 148(int) 3 - 589: TypePointer Function 588(ivec3) - 615: 36(fvec3) ConstantComposite 175 175 175 - 616: TypeVector 131(bool) 3 - 629: 8(int) Constant 5 - 630: 38(ivec3) ConstantComposite 187 393 629 - 677: 8(int) Constant 4 - 678: 38(ivec3) ConstantComposite 288 393 677 - 694(ResType): TypeStruct 36(fvec3) 588(ivec3) - 701: TypePointer Function 616(bvec3) - 720: 6(float) Constant 1050253722 - 767: 38(ivec3) ConstantComposite 522 288 393 - 814: 6(float) Constant 1077936128 - 815: 36(fvec3) ConstantComposite 284 519 814 - 833: TypeVector 148(int) 4 - 834: TypePointer Function 833(ivec4) - 860: 48(fvec4) ConstantComposite 175 175 175 175 - 861: TypeVector 131(bool) 4 - 874: 50(ivec4) ConstantComposite 187 393 629 288 - 928: 8(int) Constant 9 - 929: 8(int) Constant 10 - 930: 50(ivec4) ConstantComposite 187 437 928 929 - 946(ResType): TypeStruct 48(fvec4) 833(ivec4) - 953: TypePointer Function 861(bvec4) - 1013: 50(ivec4) ConstantComposite 522 288 393 677 - 1060: 6(float) Constant 1082130432 - 1061: 48(fvec4) ConstantComposite 284 519 814 1060 - 1089: 60 ConstantComposite 379 379 - 1090: TypeMatrix 380(bvec2) 2 - 1155(ResType): TypeStruct 60 352(ivec2) - 1243: 24(fvec2) ConstantComposite 519 519 - 1244: 60 ConstantComposite 1243 1243 - 1272: 68 ConstantComposite 615 615 615 - 1273: TypeMatrix 616(bvec3) 3 - 1341(ResType): TypeStruct 68 588(ivec3) - 1429: 36(fvec3) ConstantComposite 814 814 814 - 1430: 68 ConstantComposite 1429 1429 1429 - 1458: 76 ConstantComposite 860 860 860 860 - 1459: TypeMatrix 861(bvec4) 4 - 1530(ResType): TypeStruct 76 833(ivec4) - 1618: 48(fvec4) ConstantComposite 1060 1060 1060 1060 - 1619: 76 ConstantComposite 1618 1618 1618 1618 - 1798(PS_OUTPUT): TypeStruct 48(fvec4) - 1799: TypePointer Function 1798(PS_OUTPUT) - 1801: 148(int) Constant 0 - 1802: 48(fvec4) ConstantComposite 284 284 284 284 - 1804: TypePointer Output 48(fvec4) - 1805(color): 1804(ptr) Variable Output - 1809: TypePointer Workgroup 8(int) - 1810(gs_ua): 1809(ptr) Variable Workgroup - 1811(gs_ub): 1809(ptr) Variable Workgroup - 1812(gs_uc): 1809(ptr) Variable Workgroup - 1813: TypePointer Workgroup 26(ivec2) - 1814(gs_ua2): 1813(ptr) Variable Workgroup - 1815(gs_ub2): 1813(ptr) Variable Workgroup - 1816(gs_uc2): 1813(ptr) Variable Workgroup - 1817: TypePointer Workgroup 38(ivec3) - 1818(gs_ua3): 1817(ptr) Variable Workgroup - 1819(gs_ub3): 1817(ptr) Variable Workgroup - 1820(gs_uc3): 1817(ptr) Variable Workgroup - 1821: TypePointer Workgroup 50(ivec4) - 1822(gs_ua4): 1821(ptr) Variable Workgroup - 1823(gs_ub4): 1821(ptr) Variable Workgroup - 1824(gs_uc4): 1821(ptr) Variable Workgroup + 393: 148(int) Constant 3 + 394: 352(ivec2) ConstantComposite 187 393 + 437: 8(int) Constant 7 + 438: 8(int) Constant 8 + 439: 26(ivec2) ConstantComposite 437 438 + 455(ResType): TypeStruct 24(fvec2) 352(ivec2) + 462: TypePointer Function 380(bvec2) + 520: 6(float) Constant 1073741824 + 523: 8(int) Constant 1 + 524: 8(int) Constant 2 + 525: 26(ivec2) ConstantComposite 523 524 + 572: 24(fvec2) ConstantComposite 283 520 + 590: TypeVector 148(int) 3 + 591: TypePointer Function 590(ivec3) + 617: 36(fvec3) ConstantComposite 175 175 175 + 618: TypeVector 131(bool) 3 + 631: 8(int) Constant 3 + 632: 8(int) Constant 5 + 633: 38(ivec3) ConstantComposite 437 631 632 + 680: 8(int) Constant 4 + 681: 38(ivec3) ConstantComposite 524 631 680 + 697(ResType): TypeStruct 36(fvec3) 590(ivec3) + 704: TypePointer Function 618(bvec3) + 723: 6(float) Constant 1050253722 + 770: 38(ivec3) ConstantComposite 523 524 631 + 817: 6(float) Constant 1077936128 + 818: 36(fvec3) ConstantComposite 283 520 817 + 836: TypeVector 148(int) 4 + 837: TypePointer Function 836(ivec4) + 863: 48(fvec4) ConstantComposite 175 175 175 175 + 864: TypeVector 131(bool) 4 + 877: 50(ivec4) ConstantComposite 437 631 632 524 + 931: 8(int) Constant 9 + 932: 8(int) Constant 10 + 933: 50(ivec4) ConstantComposite 437 438 931 932 + 949(ResType): TypeStruct 48(fvec4) 836(ivec4) + 956: TypePointer Function 864(bvec4) + 1016: 50(ivec4) ConstantComposite 523 524 631 680 + 1063: 6(float) Constant 1082130432 + 1064: 48(fvec4) ConstantComposite 283 520 817 1063 + 1092: 60 ConstantComposite 379 379 + 1093: TypeMatrix 380(bvec2) 2 + 1158(ResType): TypeStruct 60 352(ivec2) + 1246: 24(fvec2) ConstantComposite 520 520 + 1247: 60 ConstantComposite 1246 1246 + 1275: 68 ConstantComposite 617 617 617 + 1276: TypeMatrix 618(bvec3) 3 + 1344(ResType): TypeStruct 68 590(ivec3) + 1432: 36(fvec3) ConstantComposite 817 817 817 + 1433: 68 ConstantComposite 1432 1432 1432 + 1461: 76 ConstantComposite 863 863 863 863 + 1462: TypeMatrix 864(bvec4) 4 + 1533(ResType): TypeStruct 76 836(ivec4) + 1621: 48(fvec4) ConstantComposite 1063 1063 1063 1063 + 1622: 76 ConstantComposite 1621 1621 1621 1621 + 1801(PS_OUTPUT): TypeStruct 48(fvec4) + 1802: TypePointer Function 1801(PS_OUTPUT) + 1804: 148(int) Constant 0 + 1805: 48(fvec4) ConstantComposite 283 283 283 283 + 1807: TypePointer Output 48(fvec4) + 1808(color): 1807(ptr) Variable Output + 1812: TypePointer Workgroup 8(int) + 1813(gs_ua): 1812(ptr) Variable Workgroup + 1814(gs_ub): 1812(ptr) Variable Workgroup + 1815(gs_uc): 1812(ptr) Variable Workgroup + 1816: TypePointer Workgroup 26(ivec2) + 1817(gs_ua2): 1816(ptr) Variable Workgroup + 1818(gs_ub2): 1816(ptr) Variable Workgroup + 1819(gs_uc2): 1816(ptr) Variable Workgroup + 1820: TypePointer Workgroup 38(ivec3) + 1821(gs_ua3): 1820(ptr) Variable Workgroup + 1822(gs_ub3): 1820(ptr) Variable Workgroup + 1823(gs_uc3): 1820(ptr) Variable Workgroup + 1824: TypePointer Workgroup 50(ivec4) + 1825(gs_ua4): 1824(ptr) Variable Workgroup + 1826(gs_ub4): 1824(ptr) Variable Workgroup + 1827(gs_uc4): 1824(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label - 1800(ps_output): 1799(ptr) Variable Function - 1803: 49(ptr) AccessChain 1800(ps_output) 1801 - Store 1803 1802 - 1806: 49(ptr) AccessChain 1800(ps_output) 1801 - 1807: 48(fvec4) Load 1806 - Store 1805(color) 1807 + 1803(ps_output): 1802(ptr) Variable Function + 1806: 49(ptr) AccessChain 1803(ps_output) 1804 + Store 1806 1805 + 1809: 49(ptr) AccessChain 1803(ps_output) 1804 + 1810: 48(fvec4) Load 1809 + Store 1808(color) 1810 Return FunctionEnd 16(PixelShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10 @@ -6297,7 +6301,7 @@ gl_FragCoord origin is upper left 169(r012): 7(ptr) Variable Function 180(r014): 7(ptr) Variable Function 183(r015): 7(ptr) Variable Function - 186(r016): 9(ptr) Variable Function + 186(r016): 149(ptr) Variable Function 189(r017): 7(ptr) Variable Function 192(r018): 7(ptr) Variable Function 195(r019): 7(ptr) Variable Function @@ -6308,25 +6312,25 @@ gl_FragCoord origin is upper left 210(r027): 7(ptr) Variable Function 213(r028): 7(ptr) Variable Function 216(r029): 9(ptr) Variable Function - 220(r030): 9(ptr) Variable Function - 223(r031): 7(ptr) Variable Function - 226(r033): 7(ptr) Variable Function - 230(r034): 7(ptr) Variable Function - 233(r035): 7(ptr) Variable Function - 239(r036): 7(ptr) Variable Function - 242(r037): 132(ptr) Variable Function - 245(r038): 132(ptr) Variable Function - 248(r039): 7(ptr) Variable Function - 252(r039a): 7(ptr) Variable Function - 257(r040): 7(ptr) Variable Function - 260(r041): 7(ptr) Variable Function - 265(r042): 7(ptr) Variable Function - 268(r043): 7(ptr) Variable Function - 272(r044): 7(ptr) Variable Function - 276(r045): 7(ptr) Variable Function - 280(r046): 7(ptr) Variable Function - 283(r047): 7(ptr) Variable Function - 287(r048): 9(ptr) Variable Function + 219(r030): 9(ptr) Variable Function + 222(r031): 7(ptr) Variable Function + 225(r033): 7(ptr) Variable Function + 229(r034): 7(ptr) Variable Function + 232(r035): 7(ptr) Variable Function + 238(r036): 7(ptr) Variable Function + 241(r037): 132(ptr) Variable Function + 244(r038): 132(ptr) Variable Function + 247(r039): 7(ptr) Variable Function + 251(r039a): 7(ptr) Variable Function + 256(r040): 7(ptr) Variable Function + 259(r041): 7(ptr) Variable Function + 264(r042): 7(ptr) Variable Function + 267(r043): 7(ptr) Variable Function + 271(r044): 7(ptr) Variable Function + 275(r045): 7(ptr) Variable Function + 279(r046): 7(ptr) Variable Function + 282(r047): 7(ptr) Variable Function + 286(r048): 9(ptr) Variable Function 290(r049): 7(ptr) Variable Function 293(r050): 7(ptr) Variable Function 296(r051): 7(ptr) Variable Function @@ -6391,7 +6395,7 @@ gl_FragCoord origin is upper left 184: 6(float) Load 11(inF0) 185: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 184 Store 183(r015) 185 - 188: 8(int) BitCount 187 + 188: 148(int) BitCount 187 Store 186(r016) 188 190: 6(float) Load 11(inF0) 191: 6(float) DPdx 190 @@ -6420,76 +6424,77 @@ gl_FragCoord origin is upper left 214: 6(float) Load 11(inF0) 215: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 214 Store 213(r028) 215 - 218: 148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 217 - 219: 8(int) Bitcast 218 - Store 216(r029) 219 - 221: 148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 217 - 222: 8(int) Bitcast 221 - Store 220(r030) 222 - 224: 6(float) Load 11(inF0) - 225: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 224 - Store 223(r031) 225 - 227: 6(float) Load 11(inF0) - 228: 6(float) Load 12(inF1) - 229: 6(float) FMod 227 228 - Store 226(r033) 229 - 231: 6(float) Load 11(inF0) - 232: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 231 - Store 230(r034) 232 - 234: 6(float) Load 11(inF0) - 236:235(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 234 - 237: 148(int) CompositeExtract 236 1 - Store 12(inF1) 237 - 238: 6(float) CompositeExtract 236 0 - Store 233(r035) 238 - 240: 6(float) Load 11(inF0) - 241: 6(float) Fwidth 240 - Store 239(r036) 241 - 243: 6(float) Load 11(inF0) - 244: 131(bool) IsInf 243 - Store 242(r037) 244 - 246: 6(float) Load 11(inF0) - 247: 131(bool) IsNan 246 - Store 245(r038) 247 - 249: 6(float) Load 11(inF0) - 250: 6(float) Load 12(inF1) - 251: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 249 250 - Store 248(r039) 251 - 253: 6(float) Load 11(inF0) - 254: 6(float) Load 12(inF1) - 255: 6(float) Load 13(inF2) - 256: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 253 254 255 - Store 252(r039a) 256 - 258: 6(float) Load 11(inF0) - 259: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 258 - Store 257(r040) 259 - 261: 6(float) Load 11(inF0) - 262: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 261 - 264: 6(float) FMul 262 263 - Store 260(r041) 264 - 266: 6(float) Load 11(inF0) - 267: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 266 - Store 265(r042) 267 - 269: 6(float) Load 11(inF0) - 270: 6(float) Load 12(inF1) - 271: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 269 270 - Store 268(r043) 271 - 273: 6(float) Load 11(inF0) - 274: 6(float) Load 12(inF1) - 275: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 273 274 - Store 272(r044) 275 - 277: 6(float) Load 11(inF0) - 278: 6(float) Load 12(inF1) - 279: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 277 278 - Store 276(r045) 279 - 281: 6(float) Load 11(inF0) - 282: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 281 - Store 280(r046) 282 - 285: 6(float) Load 11(inF0) - 286: 6(float) FDiv 284 285 - Store 283(r047) 286 - 289: 8(int) BitReverse 288 - Store 287(r048) 289 + 217: 148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 187 + 218: 8(int) Bitcast 217 + Store 216(r029) 218 + 220: 148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 187 + 221: 8(int) Bitcast 220 + Store 219(r030) 221 + 223: 6(float) Load 11(inF0) + 224: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 223 + Store 222(r031) 224 + 226: 6(float) Load 11(inF0) + 227: 6(float) Load 12(inF1) + 228: 6(float) FMod 226 227 + Store 225(r033) 228 + 230: 6(float) Load 11(inF0) + 231: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 230 + Store 229(r034) 231 + 233: 6(float) Load 11(inF0) + 235:234(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 233 + 236: 148(int) CompositeExtract 235 1 + Store 12(inF1) 236 + 237: 6(float) CompositeExtract 235 0 + Store 232(r035) 237 + 239: 6(float) Load 11(inF0) + 240: 6(float) Fwidth 239 + Store 238(r036) 240 + 242: 6(float) Load 11(inF0) + 243: 131(bool) IsInf 242 + Store 241(r037) 243 + 245: 6(float) Load 11(inF0) + 246: 131(bool) IsNan 245 + Store 244(r038) 246 + 248: 6(float) Load 11(inF0) + 249: 6(float) Load 12(inF1) + 250: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 248 249 + Store 247(r039) 250 + 252: 6(float) Load 11(inF0) + 253: 6(float) Load 12(inF1) + 254: 6(float) Load 13(inF2) + 255: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 252 253 254 + Store 251(r039a) 255 + 257: 6(float) Load 11(inF0) + 258: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 257 + Store 256(r040) 258 + 260: 6(float) Load 11(inF0) + 261: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 260 + 263: 6(float) FMul 261 262 + Store 259(r041) 263 + 265: 6(float) Load 11(inF0) + 266: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 265 + Store 264(r042) 266 + 268: 6(float) Load 11(inF0) + 269: 6(float) Load 12(inF1) + 270: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 268 269 + Store 267(r043) 270 + 272: 6(float) Load 11(inF0) + 273: 6(float) Load 12(inF1) + 274: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 272 273 + Store 271(r044) 274 + 276: 6(float) Load 11(inF0) + 277: 6(float) Load 12(inF1) + 278: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 276 277 + Store 275(r045) 278 + 280: 6(float) Load 11(inF0) + 281: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 280 + Store 279(r046) 281 + 284: 6(float) Load 11(inF0) + 285: 6(float) FDiv 283 284 + Store 282(r047) 285 + 288: 148(int) BitReverse 287 + 289: 8(int) Bitcast 288 + Store 286(r048) 289 291: 6(float) Load 11(inF0) 292: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 291 Store 290(r049) 292 @@ -6497,7 +6502,7 @@ gl_FragCoord origin is upper left 295: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 294 Store 293(r050) 295 297: 6(float) Load 11(inF0) - 298: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 297 175 284 + 298: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 297 175 283 Store 296(r051) 298 300: 6(float) Load 11(inF0) 301: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 300 @@ -6565,7 +6570,7 @@ gl_FragCoord origin is upper left 373(r012): 25(ptr) Variable Function 386(r013): 25(ptr) Variable Function 389(r015): 25(ptr) Variable Function - 392(r016): 27(ptr) Variable Function + 392(r016): 353(ptr) Variable Function 396(r017): 25(ptr) Variable Function 399(r018): 25(ptr) Variable Function 402(r019): 25(ptr) Variable Function @@ -6579,41 +6584,41 @@ gl_FragCoord origin is upper left 428(r029): 25(ptr) Variable Function 431(r030): 25(ptr) Variable Function 436(r031): 27(ptr) Variable Function - 440(r032): 27(ptr) Variable Function - 442(r033): 25(ptr) Variable Function - 445(r035): 25(ptr) Variable Function - 449(r036): 25(ptr) Variable Function - 452(r037): 25(ptr) Variable Function - 458(r038): 25(ptr) Variable Function - 462(r039): 461(ptr) Variable Function - 465(r040): 461(ptr) Variable Function - 468(r041): 25(ptr) Variable Function - 472(r039a): 25(ptr) Variable Function - 477(r042): 7(ptr) Variable Function - 480(r043): 25(ptr) Variable Function - 483(r044): 25(ptr) Variable Function - 487(r045): 25(ptr) Variable Function - 490(r046): 25(ptr) Variable Function - 494(r047): 25(ptr) Variable Function - 498(r048): 25(ptr) Variable Function - 501(r049): 25(ptr) Variable Function - 505(r050): 25(ptr) Variable Function - 508(r051): 25(ptr) Variable Function - 512(r052): 25(ptr) Variable Function - 516(r053): 25(ptr) Variable Function - 521(r054): 27(ptr) Variable Function - 525(r055): 25(ptr) Variable Function - 528(r056): 25(ptr) Variable Function - 531(r057): 25(ptr) Variable Function - 536(r058): 25(ptr) Variable Function - 539(r059): 25(ptr) Variable Function - 546(r060): 25(ptr) Variable Function - 549(r061): 25(ptr) Variable Function - 554(r062): 25(ptr) Variable Function - 557(r063): 25(ptr) Variable Function - 561(r064): 25(ptr) Variable Function - 564(r065): 25(ptr) Variable Function - 567(r066): 25(ptr) Variable Function + 441(r032): 27(ptr) Variable Function + 443(r033): 25(ptr) Variable Function + 446(r035): 25(ptr) Variable Function + 450(r036): 25(ptr) Variable Function + 453(r037): 25(ptr) Variable Function + 459(r038): 25(ptr) Variable Function + 463(r039): 462(ptr) Variable Function + 466(r040): 462(ptr) Variable Function + 469(r041): 25(ptr) Variable Function + 473(r039a): 25(ptr) Variable Function + 478(r042): 7(ptr) Variable Function + 481(r043): 25(ptr) Variable Function + 484(r044): 25(ptr) Variable Function + 488(r045): 25(ptr) Variable Function + 491(r046): 25(ptr) Variable Function + 495(r047): 25(ptr) Variable Function + 499(r048): 25(ptr) Variable Function + 502(r049): 25(ptr) Variable Function + 506(r050): 25(ptr) Variable Function + 509(r051): 25(ptr) Variable Function + 513(r052): 25(ptr) Variable Function + 517(r053): 25(ptr) Variable Function + 522(r054): 27(ptr) Variable Function + 527(r055): 25(ptr) Variable Function + 530(r056): 25(ptr) Variable Function + 533(r057): 25(ptr) Variable Function + 538(r058): 25(ptr) Variable Function + 541(r059): 25(ptr) Variable Function + 548(r060): 25(ptr) Variable Function + 551(r061): 25(ptr) Variable Function + 556(r062): 25(ptr) Variable Function + 559(r063): 25(ptr) Variable Function + 563(r064): 25(ptr) Variable Function + 566(r065): 25(ptr) Variable Function + 569(r066): 25(ptr) Variable Function 338: 24(fvec2) Load 29(inF0) 339: 131(bool) All 338 Store 337(r000) 339 @@ -6667,7 +6672,7 @@ gl_FragCoord origin is upper left 390: 24(fvec2) Load 29(inF0) 391: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 390 Store 389(r015) 391 - 395: 26(ivec2) BitCount 394 + 395: 352(ivec2) BitCount 394 Store 392(r016) 395 397: 24(fvec2) Load 29(inF0) 398: 24(fvec2) DPdx 397 @@ -6709,137 +6714,137 @@ gl_FragCoord origin is upper left 434: 24(fvec2) Load 31(inF2) 435: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 432 433 434 Store 431(r030) 435 - 439: 26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 438 - Store 436(r031) 439 - 441: 26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 438 - Store 440(r032) 441 - 443: 24(fvec2) Load 29(inF0) - 444: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 443 - Store 442(r033) 444 - 446: 24(fvec2) Load 29(inF0) - 447: 24(fvec2) Load 30(inF1) - 448: 24(fvec2) FMod 446 447 - Store 445(r035) 448 - 450: 24(fvec2) Load 29(inF0) - 451: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 450 - Store 449(r036) 451 - 453: 24(fvec2) Load 29(inF0) - 455:454(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 453 - 456: 352(ivec2) CompositeExtract 455 1 - Store 30(inF1) 456 - 457: 24(fvec2) CompositeExtract 455 0 - Store 452(r037) 457 - 459: 24(fvec2) Load 29(inF0) - 460: 24(fvec2) Fwidth 459 - Store 458(r038) 460 - 463: 24(fvec2) Load 29(inF0) - 464: 380(bvec2) IsInf 463 - Store 462(r039) 464 - 466: 24(fvec2) Load 29(inF0) - 467: 380(bvec2) IsNan 466 - Store 465(r040) 467 - 469: 24(fvec2) Load 29(inF0) - 470: 24(fvec2) Load 30(inF1) - 471: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 469 470 - Store 468(r041) 471 - 473: 24(fvec2) Load 29(inF0) - 474: 24(fvec2) Load 30(inF1) - 475: 24(fvec2) Load 31(inF2) - 476: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 473 474 475 - Store 472(r039a) 476 - 478: 24(fvec2) Load 29(inF0) - 479: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 478 - Store 477(r042) 479 - 481: 24(fvec2) Load 29(inF0) - 482: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 481 - Store 480(r043) 482 - 484: 24(fvec2) Load 29(inF0) - 485: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 484 - 486: 24(fvec2) VectorTimesScalar 485 263 - Store 483(r044) 486 - 488: 24(fvec2) Load 29(inF0) - 489: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 488 - Store 487(r045) 489 - 491: 24(fvec2) Load 29(inF0) - 492: 24(fvec2) Load 30(inF1) - 493: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 491 492 - Store 490(r046) 493 - 495: 24(fvec2) Load 29(inF0) - 496: 24(fvec2) Load 30(inF1) - 497: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 495 496 - Store 494(r047) 497 - 499: 24(fvec2) Load 29(inF0) - 500: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 499 - Store 498(r048) 500 - 502: 24(fvec2) Load 29(inF0) - 503: 24(fvec2) Load 30(inF1) - 504: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 502 503 - Store 501(r049) 504 - 506: 24(fvec2) Load 29(inF0) - 507: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 506 - Store 505(r050) 507 - 509: 24(fvec2) Load 29(inF0) - 510: 24(fvec2) CompositeConstruct 284 284 - 511: 24(fvec2) FDiv 510 509 - Store 508(r051) 511 - 513: 24(fvec2) Load 29(inF0) - 514: 24(fvec2) Load 30(inF1) - 515: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 513 514 - Store 512(r052) 515 - 517: 24(fvec2) Load 29(inF0) - 518: 24(fvec2) Load 30(inF1) - 520: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 517 518 519 - Store 516(r053) 520 - 524: 26(ivec2) BitReverse 523 - Store 521(r054) 524 - 526: 24(fvec2) Load 29(inF0) - 527: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 526 - Store 525(r055) 527 - 529: 24(fvec2) Load 29(inF0) - 530: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 529 - Store 528(r056) 530 - 532: 24(fvec2) Load 29(inF0) - 533: 24(fvec2) CompositeConstruct 175 175 - 534: 24(fvec2) CompositeConstruct 284 284 - 535: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 532 533 534 - Store 531(r057) 535 - 537: 24(fvec2) Load 29(inF0) - 538: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 537 - Store 536(r058) 538 - 540: 24(fvec2) Load 29(inF0) - 541: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 540 - Store 539(r059) 541 + 440: 26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 439 + Store 436(r031) 440 + 442: 26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 439 + Store 441(r032) 442 + 444: 24(fvec2) Load 29(inF0) + 445: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 444 + Store 443(r033) 445 + 447: 24(fvec2) Load 29(inF0) + 448: 24(fvec2) Load 30(inF1) + 449: 24(fvec2) FMod 447 448 + Store 446(r035) 449 + 451: 24(fvec2) Load 29(inF0) + 452: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 451 + Store 450(r036) 452 + 454: 24(fvec2) Load 29(inF0) + 456:455(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 454 + 457: 352(ivec2) CompositeExtract 456 1 + Store 30(inF1) 457 + 458: 24(fvec2) CompositeExtract 456 0 + Store 453(r037) 458 + 460: 24(fvec2) Load 29(inF0) + 461: 24(fvec2) Fwidth 460 + Store 459(r038) 461 + 464: 24(fvec2) Load 29(inF0) + 465: 380(bvec2) IsInf 464 + Store 463(r039) 465 + 467: 24(fvec2) Load 29(inF0) + 468: 380(bvec2) IsNan 467 + Store 466(r040) 468 + 470: 24(fvec2) Load 29(inF0) + 471: 24(fvec2) Load 30(inF1) + 472: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 470 471 + Store 469(r041) 472 + 474: 24(fvec2) Load 29(inF0) + 475: 24(fvec2) Load 30(inF1) + 476: 24(fvec2) Load 31(inF2) + 477: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 474 475 476 + Store 473(r039a) 477 + 479: 24(fvec2) Load 29(inF0) + 480: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 479 + Store 478(r042) 480 + 482: 24(fvec2) Load 29(inF0) + 483: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 482 + Store 481(r043) 483 + 485: 24(fvec2) Load 29(inF0) + 486: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 485 + 487: 24(fvec2) VectorTimesScalar 486 262 + Store 484(r044) 487 + 489: 24(fvec2) Load 29(inF0) + 490: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 489 + Store 488(r045) 490 + 492: 24(fvec2) Load 29(inF0) + 493: 24(fvec2) Load 30(inF1) + 494: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 492 493 + Store 491(r046) 494 + 496: 24(fvec2) Load 29(inF0) + 497: 24(fvec2) Load 30(inF1) + 498: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 496 497 + Store 495(r047) 498 + 500: 24(fvec2) Load 29(inF0) + 501: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 500 + Store 499(r048) 501 + 503: 24(fvec2) Load 29(inF0) + 504: 24(fvec2) Load 30(inF1) + 505: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 503 504 + Store 502(r049) 505 + 507: 24(fvec2) Load 29(inF0) + 508: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 507 + Store 506(r050) 508 + 510: 24(fvec2) Load 29(inF0) + 511: 24(fvec2) CompositeConstruct 283 283 + 512: 24(fvec2) FDiv 511 510 + Store 509(r051) 512 + 514: 24(fvec2) Load 29(inF0) + 515: 24(fvec2) Load 30(inF1) + 516: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 514 515 + Store 513(r052) 516 + 518: 24(fvec2) Load 29(inF0) + 519: 24(fvec2) Load 30(inF1) + 521: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 518 519 520 + Store 517(r053) 521 + 526: 26(ivec2) BitReverse 525 + Store 522(r054) 526 + 528: 24(fvec2) Load 29(inF0) + 529: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 528 + Store 527(r055) 529 + 531: 24(fvec2) Load 29(inF0) + 532: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 531 + Store 530(r056) 532 + 534: 24(fvec2) Load 29(inF0) + 535: 24(fvec2) CompositeConstruct 175 175 + 536: 24(fvec2) CompositeConstruct 283 283 + 537: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 534 535 536 + Store 533(r057) 537 + 539: 24(fvec2) Load 29(inF0) + 540: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 539 + Store 538(r058) 540 542: 24(fvec2) Load 29(inF0) 543: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 542 - Store 30(inF1) 543 + Store 541(r059) 543 544: 24(fvec2) Load 29(inF0) - 545: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 544 - Store 31(inF2) 545 - 547: 24(fvec2) Load 29(inF0) - 548: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 547 - Store 546(r060) 548 - 550: 24(fvec2) Load 29(inF0) - 551: 24(fvec2) Load 30(inF1) - 552: 24(fvec2) Load 31(inF2) - 553: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 550 551 552 - Store 549(r061) 553 - 555: 24(fvec2) Load 29(inF0) - 556: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 555 - Store 554(r062) 556 - 558: 24(fvec2) Load 29(inF0) - 559: 24(fvec2) Load 30(inF1) - 560: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 558 559 - Store 557(r063) 560 - 562: 24(fvec2) Load 29(inF0) - 563: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 562 - Store 561(r064) 563 - 565: 24(fvec2) Load 29(inF0) - 566: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 565 - Store 564(r065) 566 - 568: 24(fvec2) Load 29(inF0) - 569: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 568 - Store 567(r066) 569 - ReturnValue 570 + 545: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 544 + Store 30(inF1) 545 + 546: 24(fvec2) Load 29(inF0) + 547: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 546 + Store 31(inF2) 547 + 549: 24(fvec2) Load 29(inF0) + 550: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 549 + Store 548(r060) 550 + 552: 24(fvec2) Load 29(inF0) + 553: 24(fvec2) Load 30(inF1) + 554: 24(fvec2) Load 31(inF2) + 555: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 552 553 554 + Store 551(r061) 555 + 557: 24(fvec2) Load 29(inF0) + 558: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 557 + Store 556(r062) 558 + 560: 24(fvec2) Load 29(inF0) + 561: 24(fvec2) Load 30(inF1) + 562: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 560 561 + Store 559(r063) 562 + 564: 24(fvec2) Load 29(inF0) + 565: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 564 + Store 563(r064) 565 + 567: 24(fvec2) Load 29(inF0) + 568: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 567 + Store 566(r065) 568 + 570: 24(fvec2) Load 29(inF0) + 571: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 570 + Store 569(r066) 571 + ReturnValue 572 FunctionEnd 46(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40 41(inF0): 37(ptr) FunctionParameter @@ -6848,306 +6853,306 @@ gl_FragCoord origin is upper left 44(inU0): 39(ptr) FunctionParameter 45(inU1): 39(ptr) FunctionParameter 47: Label - 573(r000): 132(ptr) Variable Function - 576(r001): 37(ptr) Variable Function - 579(r002): 37(ptr) Variable Function - 582(r003): 132(ptr) Variable Function - 585(r004): 37(ptr) Variable Function - 590(r005): 589(ptr) Variable Function - 593(r006): 39(ptr) Variable Function - 596(r007): 37(ptr) Variable Function - 599(r009): 37(ptr) Variable Function - 602(r010): 37(ptr) Variable Function - 606(r011): 37(ptr) Variable Function - 609(r012): 37(ptr) Variable Function - 622(r013): 37(ptr) Variable Function - 625(r014): 37(ptr) Variable Function - 628(r015): 39(ptr) Variable Function - 632(r016): 37(ptr) Variable Function - 636(r017): 37(ptr) Variable Function - 639(r018): 37(ptr) Variable Function - 642(r019): 37(ptr) Variable Function - 645(r020): 37(ptr) Variable Function - 648(r021): 37(ptr) Variable Function - 651(r022): 37(ptr) Variable Function - 654(r023): 37(ptr) Variable Function - 657(r024): 7(ptr) Variable Function - 661(r025): 7(ptr) Variable Function - 665(r029): 37(ptr) Variable Function - 668(r030): 37(ptr) Variable Function - 671(r031): 37(ptr) Variable Function - 676(r032): 39(ptr) Variable Function - 680(r033): 39(ptr) Variable Function - 682(r034): 37(ptr) Variable Function - 685(r036): 37(ptr) Variable Function - 689(r037): 37(ptr) Variable Function - 692(r038): 37(ptr) Variable Function - 698(r039): 37(ptr) Variable Function - 702(r040): 701(ptr) Variable Function - 705(r041): 701(ptr) Variable Function - 708(r042): 37(ptr) Variable Function - 712(r039a): 37(ptr) Variable Function - 717(r039b): 37(ptr) Variable Function - 723(r043): 7(ptr) Variable Function - 726(r044): 37(ptr) Variable Function - 729(r045): 37(ptr) Variable Function - 733(r046): 37(ptr) Variable Function - 736(r047): 37(ptr) Variable Function - 740(r048): 37(ptr) Variable Function - 744(r049): 37(ptr) Variable Function - 747(r050): 37(ptr) Variable Function - 751(r051): 37(ptr) Variable Function - 754(r052): 37(ptr) Variable Function - 758(r053): 37(ptr) Variable Function - 762(r054): 37(ptr) Variable Function - 766(r055): 39(ptr) Variable Function - 769(r056): 37(ptr) Variable Function - 772(r057): 37(ptr) Variable Function - 775(r058): 37(ptr) Variable Function - 780(r059): 37(ptr) Variable Function - 783(r060): 37(ptr) Variable Function - 790(r061): 37(ptr) Variable Function - 793(r062): 37(ptr) Variable Function - 798(r063): 37(ptr) Variable Function - 801(r064): 37(ptr) Variable Function - 805(r065): 37(ptr) Variable Function - 808(r066): 37(ptr) Variable Function - 811(r067): 37(ptr) Variable Function - 574: 36(fvec3) Load 41(inF0) - 575: 131(bool) All 574 - Store 573(r000) 575 - 577: 36(fvec3) Load 41(inF0) - 578: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 577 - Store 576(r001) 578 - 580: 36(fvec3) Load 41(inF0) - 581: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 580 - Store 579(r002) 581 - 583: 36(fvec3) Load 41(inF0) - 584: 131(bool) Any 583 - Store 582(r003) 584 - 586: 36(fvec3) Load 41(inF0) - 587: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 586 - Store 585(r004) 587 - 591: 36(fvec3) Load 41(inF0) - 592: 588(ivec3) Bitcast 591 - Store 590(r005) 592 - 594: 36(fvec3) Load 41(inF0) - 595: 38(ivec3) Bitcast 594 - Store 593(r006) 595 - 597: 38(ivec3) Load 44(inU0) - 598: 36(fvec3) Bitcast 597 - Store 596(r007) 598 - 600: 36(fvec3) Load 41(inF0) - 601: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 600 - Store 599(r009) 601 - 603: 36(fvec3) Load 41(inF0) - 604: 36(fvec3) Load 42(inF1) - 605: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 603 604 - Store 602(r010) 605 - 607: 36(fvec3) Load 41(inF0) - 608: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 607 - Store 606(r011) 608 - 610: 36(fvec3) Load 41(inF0) - 611: 36(fvec3) Load 42(inF1) - 612: 36(fvec3) Load 43(inF2) - 613: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 610 611 612 - Store 609(r012) 613 - 614: 36(fvec3) Load 41(inF0) - 617: 616(bvec3) FOrdLessThan 614 615 - 618: 131(bool) Any 617 - SelectionMerge 620 None - BranchConditional 618 619 620 - 619: Label + 575(r000): 132(ptr) Variable Function + 578(r001): 37(ptr) Variable Function + 581(r002): 37(ptr) Variable Function + 584(r003): 132(ptr) Variable Function + 587(r004): 37(ptr) Variable Function + 592(r005): 591(ptr) Variable Function + 595(r006): 39(ptr) Variable Function + 598(r007): 37(ptr) Variable Function + 601(r009): 37(ptr) Variable Function + 604(r010): 37(ptr) Variable Function + 608(r011): 37(ptr) Variable Function + 611(r012): 37(ptr) Variable Function + 624(r013): 37(ptr) Variable Function + 627(r014): 37(ptr) Variable Function + 630(r015): 39(ptr) Variable Function + 635(r016): 37(ptr) Variable Function + 639(r017): 37(ptr) Variable Function + 642(r018): 37(ptr) Variable Function + 645(r019): 37(ptr) Variable Function + 648(r020): 37(ptr) Variable Function + 651(r021): 37(ptr) Variable Function + 654(r022): 37(ptr) Variable Function + 657(r023): 37(ptr) Variable Function + 660(r024): 7(ptr) Variable Function + 664(r025): 7(ptr) Variable Function + 668(r029): 37(ptr) Variable Function + 671(r030): 37(ptr) Variable Function + 674(r031): 37(ptr) Variable Function + 679(r032): 39(ptr) Variable Function + 683(r033): 39(ptr) Variable Function + 685(r034): 37(ptr) Variable Function + 688(r036): 37(ptr) Variable Function + 692(r037): 37(ptr) Variable Function + 695(r038): 37(ptr) Variable Function + 701(r039): 37(ptr) Variable Function + 705(r040): 704(ptr) Variable Function + 708(r041): 704(ptr) Variable Function + 711(r042): 37(ptr) Variable Function + 715(r039a): 37(ptr) Variable Function + 720(r039b): 37(ptr) Variable Function + 726(r043): 7(ptr) Variable Function + 729(r044): 37(ptr) Variable Function + 732(r045): 37(ptr) Variable Function + 736(r046): 37(ptr) Variable Function + 739(r047): 37(ptr) Variable Function + 743(r048): 37(ptr) Variable Function + 747(r049): 37(ptr) Variable Function + 750(r050): 37(ptr) Variable Function + 754(r051): 37(ptr) Variable Function + 757(r052): 37(ptr) Variable Function + 761(r053): 37(ptr) Variable Function + 765(r054): 37(ptr) Variable Function + 769(r055): 39(ptr) Variable Function + 772(r056): 37(ptr) Variable Function + 775(r057): 37(ptr) Variable Function + 778(r058): 37(ptr) Variable Function + 783(r059): 37(ptr) Variable Function + 786(r060): 37(ptr) Variable Function + 793(r061): 37(ptr) Variable Function + 796(r062): 37(ptr) Variable Function + 801(r063): 37(ptr) Variable Function + 804(r064): 37(ptr) Variable Function + 808(r065): 37(ptr) Variable Function + 811(r066): 37(ptr) Variable Function + 814(r067): 37(ptr) Variable Function + 576: 36(fvec3) Load 41(inF0) + 577: 131(bool) All 576 + Store 575(r000) 577 + 579: 36(fvec3) Load 41(inF0) + 580: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 579 + Store 578(r001) 580 + 582: 36(fvec3) Load 41(inF0) + 583: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 582 + Store 581(r002) 583 + 585: 36(fvec3) Load 41(inF0) + 586: 131(bool) Any 585 + Store 584(r003) 586 + 588: 36(fvec3) Load 41(inF0) + 589: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 588 + Store 587(r004) 589 + 593: 36(fvec3) Load 41(inF0) + 594: 590(ivec3) Bitcast 593 + Store 592(r005) 594 + 596: 36(fvec3) Load 41(inF0) + 597: 38(ivec3) Bitcast 596 + Store 595(r006) 597 + 599: 38(ivec3) Load 44(inU0) + 600: 36(fvec3) Bitcast 599 + Store 598(r007) 600 + 602: 36(fvec3) Load 41(inF0) + 603: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 602 + Store 601(r009) 603 + 605: 36(fvec3) Load 41(inF0) + 606: 36(fvec3) Load 42(inF1) + 607: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 605 606 + Store 604(r010) 607 + 609: 36(fvec3) Load 41(inF0) + 610: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 609 + Store 608(r011) 610 + 612: 36(fvec3) Load 41(inF0) + 613: 36(fvec3) Load 42(inF1) + 614: 36(fvec3) Load 43(inF2) + 615: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 612 613 614 + Store 611(r012) 615 + 616: 36(fvec3) Load 41(inF0) + 619: 618(bvec3) FOrdLessThan 616 617 + 620: 131(bool) Any 619 + SelectionMerge 622 None + BranchConditional 620 621 622 + 621: Label Kill - 620: Label - 623: 36(fvec3) Load 41(inF0) - 624: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 623 - Store 622(r013) 624 - 626: 36(fvec3) Load 41(inF0) - 627: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 626 - Store 625(r014) 627 - 631: 38(ivec3) BitCount 630 - Store 628(r015) 631 - 633: 36(fvec3) Load 41(inF0) - 634: 36(fvec3) Load 42(inF1) - 635: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 633 634 - Store 632(r016) 635 - 637: 36(fvec3) Load 41(inF0) - 638: 36(fvec3) DPdx 637 - Store 636(r017) 638 + 622: Label + 625: 36(fvec3) Load 41(inF0) + 626: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 625 + Store 624(r013) 626 + 628: 36(fvec3) Load 41(inF0) + 629: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 628 + Store 627(r014) 629 + 634: 38(ivec3) BitCount 633 + Store 630(r015) 634 + 636: 36(fvec3) Load 41(inF0) + 637: 36(fvec3) Load 42(inF1) + 638: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 636 637 + Store 635(r016) 638 640: 36(fvec3) Load 41(inF0) - 641: 36(fvec3) DPdxCoarse 640 - Store 639(r018) 641 + 641: 36(fvec3) DPdx 640 + Store 639(r017) 641 643: 36(fvec3) Load 41(inF0) - 644: 36(fvec3) DPdxFine 643 - Store 642(r019) 644 + 644: 36(fvec3) DPdxCoarse 643 + Store 642(r018) 644 646: 36(fvec3) Load 41(inF0) - 647: 36(fvec3) DPdy 646 - Store 645(r020) 647 + 647: 36(fvec3) DPdxFine 646 + Store 645(r019) 647 649: 36(fvec3) Load 41(inF0) - 650: 36(fvec3) DPdyCoarse 649 - Store 648(r021) 650 + 650: 36(fvec3) DPdy 649 + Store 648(r020) 650 652: 36(fvec3) Load 41(inF0) - 653: 36(fvec3) DPdyFine 652 - Store 651(r022) 653 + 653: 36(fvec3) DPdyCoarse 652 + Store 651(r021) 653 655: 36(fvec3) Load 41(inF0) - 656: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 655 - Store 654(r023) 656 + 656: 36(fvec3) DPdyFine 655 + Store 654(r022) 656 658: 36(fvec3) Load 41(inF0) - 659: 36(fvec3) Load 42(inF1) - 660: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 658 659 - Store 657(r024) 660 - 662: 36(fvec3) Load 41(inF0) - 663: 36(fvec3) Load 42(inF1) - 664: 6(float) Dot 662 663 - Store 661(r025) 664 - 666: 36(fvec3) Load 41(inF0) - 667: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 666 - Store 665(r029) 667 + 659: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 658 + Store 657(r023) 659 + 661: 36(fvec3) Load 41(inF0) + 662: 36(fvec3) Load 42(inF1) + 663: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 661 662 + Store 660(r024) 663 + 665: 36(fvec3) Load 41(inF0) + 666: 36(fvec3) Load 42(inF1) + 667: 6(float) Dot 665 666 + Store 664(r025) 667 669: 36(fvec3) Load 41(inF0) - 670: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 669 - Store 668(r030) 670 + 670: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 669 + Store 668(r029) 670 672: 36(fvec3) Load 41(inF0) - 673: 36(fvec3) Load 42(inF1) - 674: 36(fvec3) Load 43(inF2) - 675: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 672 673 674 - Store 671(r031) 675 - 679: 38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 678 - Store 676(r032) 679 - 681: 38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 678 - Store 680(r033) 681 - 683: 36(fvec3) Load 41(inF0) - 684: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 683 - Store 682(r034) 684 + 673: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 672 + Store 671(r030) 673 + 675: 36(fvec3) Load 41(inF0) + 676: 36(fvec3) Load 42(inF1) + 677: 36(fvec3) Load 43(inF2) + 678: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 675 676 677 + Store 674(r031) 678 + 682: 38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 681 + Store 679(r032) 682 + 684: 38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 681 + Store 683(r033) 684 686: 36(fvec3) Load 41(inF0) - 687: 36(fvec3) Load 42(inF1) - 688: 36(fvec3) FMod 686 687 - Store 685(r036) 688 - 690: 36(fvec3) Load 41(inF0) - 691: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 690 - Store 689(r037) 691 + 687: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 686 + Store 685(r034) 687 + 689: 36(fvec3) Load 41(inF0) + 690: 36(fvec3) Load 42(inF1) + 691: 36(fvec3) FMod 689 690 + Store 688(r036) 691 693: 36(fvec3) Load 41(inF0) - 695:694(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 693 - 696: 588(ivec3) CompositeExtract 695 1 - Store 42(inF1) 696 - 697: 36(fvec3) CompositeExtract 695 0 - Store 692(r038) 697 - 699: 36(fvec3) Load 41(inF0) - 700: 36(fvec3) Fwidth 699 - Store 698(r039) 700 - 703: 36(fvec3) Load 41(inF0) - 704: 616(bvec3) IsInf 703 - Store 702(r040) 704 + 694: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 693 + Store 692(r037) 694 + 696: 36(fvec3) Load 41(inF0) + 698:697(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 696 + 699: 590(ivec3) CompositeExtract 698 1 + Store 42(inF1) 699 + 700: 36(fvec3) CompositeExtract 698 0 + Store 695(r038) 700 + 702: 36(fvec3) Load 41(inF0) + 703: 36(fvec3) Fwidth 702 + Store 701(r039) 703 706: 36(fvec3) Load 41(inF0) - 707: 616(bvec3) IsNan 706 - Store 705(r041) 707 + 707: 618(bvec3) IsInf 706 + Store 705(r040) 707 709: 36(fvec3) Load 41(inF0) - 710: 36(fvec3) Load 42(inF1) - 711: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 709 710 - Store 708(r042) 711 - 713: 36(fvec3) Load 41(inF0) - 714: 36(fvec3) Load 42(inF1) - 715: 36(fvec3) Load 43(inF2) - 716: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 713 714 715 - Store 712(r039a) 716 - 718: 36(fvec3) Load 41(inF0) - 719: 36(fvec3) Load 42(inF1) - 721: 36(fvec3) CompositeConstruct 720 720 720 - 722: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 718 719 721 - Store 717(r039b) 722 - 724: 36(fvec3) Load 41(inF0) - 725: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 724 - Store 723(r043) 725 + 710: 618(bvec3) IsNan 709 + Store 708(r041) 710 + 712: 36(fvec3) Load 41(inF0) + 713: 36(fvec3) Load 42(inF1) + 714: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 712 713 + Store 711(r042) 714 + 716: 36(fvec3) Load 41(inF0) + 717: 36(fvec3) Load 42(inF1) + 718: 36(fvec3) Load 43(inF2) + 719: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 716 717 718 + Store 715(r039a) 719 + 721: 36(fvec3) Load 41(inF0) + 722: 36(fvec3) Load 42(inF1) + 724: 36(fvec3) CompositeConstruct 723 723 723 + 725: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 721 722 724 + Store 720(r039b) 725 727: 36(fvec3) Load 41(inF0) - 728: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 727 - Store 726(r044) 728 + 728: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 727 + Store 726(r043) 728 730: 36(fvec3) Load 41(inF0) - 731: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 730 - 732: 36(fvec3) VectorTimesScalar 731 263 - Store 729(r045) 732 - 734: 36(fvec3) Load 41(inF0) - 735: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 734 - Store 733(r046) 735 + 731: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 730 + Store 729(r044) 731 + 733: 36(fvec3) Load 41(inF0) + 734: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 733 + 735: 36(fvec3) VectorTimesScalar 734 262 + Store 732(r045) 735 737: 36(fvec3) Load 41(inF0) - 738: 36(fvec3) Load 42(inF1) - 739: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 737 738 - Store 736(r047) 739 - 741: 36(fvec3) Load 41(inF0) - 742: 36(fvec3) Load 42(inF1) - 743: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 741 742 - Store 740(r048) 743 - 745: 36(fvec3) Load 41(inF0) - 746: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 745 - Store 744(r049) 746 + 738: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 737 + Store 736(r046) 738 + 740: 36(fvec3) Load 41(inF0) + 741: 36(fvec3) Load 42(inF1) + 742: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 740 741 + Store 739(r047) 742 + 744: 36(fvec3) Load 41(inF0) + 745: 36(fvec3) Load 42(inF1) + 746: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 744 745 + Store 743(r048) 746 748: 36(fvec3) Load 41(inF0) - 749: 36(fvec3) Load 42(inF1) - 750: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 748 749 - Store 747(r050) 750 - 752: 36(fvec3) Load 41(inF0) - 753: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 752 - Store 751(r051) 753 + 749: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 748 + Store 747(r049) 749 + 751: 36(fvec3) Load 41(inF0) + 752: 36(fvec3) Load 42(inF1) + 753: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 751 752 + Store 750(r050) 753 755: 36(fvec3) Load 41(inF0) - 756: 36(fvec3) CompositeConstruct 284 284 284 - 757: 36(fvec3) FDiv 756 755 - Store 754(r052) 757 - 759: 36(fvec3) Load 41(inF0) - 760: 36(fvec3) Load 42(inF1) - 761: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 759 760 - Store 758(r053) 761 - 763: 36(fvec3) Load 41(inF0) - 764: 36(fvec3) Load 42(inF1) - 765: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 763 764 519 - Store 762(r054) 765 - 768: 38(ivec3) BitReverse 767 - Store 766(r055) 768 - 770: 36(fvec3) Load 41(inF0) - 771: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 770 - Store 769(r056) 771 + 756: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 755 + Store 754(r051) 756 + 758: 36(fvec3) Load 41(inF0) + 759: 36(fvec3) CompositeConstruct 283 283 283 + 760: 36(fvec3) FDiv 759 758 + Store 757(r052) 760 + 762: 36(fvec3) Load 41(inF0) + 763: 36(fvec3) Load 42(inF1) + 764: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 762 763 + Store 761(r053) 764 + 766: 36(fvec3) Load 41(inF0) + 767: 36(fvec3) Load 42(inF1) + 768: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 766 767 520 + Store 765(r054) 768 + 771: 38(ivec3) BitReverse 770 + Store 769(r055) 771 773: 36(fvec3) Load 41(inF0) - 774: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 773 - Store 772(r057) 774 + 774: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 773 + Store 772(r056) 774 776: 36(fvec3) Load 41(inF0) - 777: 36(fvec3) CompositeConstruct 175 175 175 - 778: 36(fvec3) CompositeConstruct 284 284 284 - 779: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 776 777 778 - Store 775(r058) 779 - 781: 36(fvec3) Load 41(inF0) - 782: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 781 - Store 780(r059) 782 + 777: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 776 + Store 775(r057) 777 + 779: 36(fvec3) Load 41(inF0) + 780: 36(fvec3) CompositeConstruct 175 175 175 + 781: 36(fvec3) CompositeConstruct 283 283 283 + 782: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 779 780 781 + Store 778(r058) 782 784: 36(fvec3) Load 41(inF0) - 785: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 784 - Store 783(r060) 785 - 786: 36(fvec3) Load 41(inF0) - 787: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 786 - Store 42(inF1) 787 - 788: 36(fvec3) Load 41(inF0) - 789: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 788 - Store 43(inF2) 789 + 785: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 784 + Store 783(r059) 785 + 787: 36(fvec3) Load 41(inF0) + 788: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 787 + Store 786(r060) 788 + 789: 36(fvec3) Load 41(inF0) + 790: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 789 + Store 42(inF1) 790 791: 36(fvec3) Load 41(inF0) - 792: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 791 - Store 790(r061) 792 + 792: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 791 + Store 43(inF2) 792 794: 36(fvec3) Load 41(inF0) - 795: 36(fvec3) Load 42(inF1) - 796: 36(fvec3) Load 43(inF2) - 797: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 794 795 796 - Store 793(r062) 797 - 799: 36(fvec3) Load 41(inF0) - 800: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 799 - Store 798(r063) 800 + 795: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 794 + Store 793(r061) 795 + 797: 36(fvec3) Load 41(inF0) + 798: 36(fvec3) Load 42(inF1) + 799: 36(fvec3) Load 43(inF2) + 800: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 797 798 799 + Store 796(r062) 800 802: 36(fvec3) Load 41(inF0) - 803: 36(fvec3) Load 42(inF1) - 804: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 802 803 - Store 801(r064) 804 - 806: 36(fvec3) Load 41(inF0) - 807: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 806 - Store 805(r065) 807 + 803: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 802 + Store 801(r063) 803 + 805: 36(fvec3) Load 41(inF0) + 806: 36(fvec3) Load 42(inF1) + 807: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 805 806 + Store 804(r064) 807 809: 36(fvec3) Load 41(inF0) - 810: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 809 - Store 808(r066) 810 + 810: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 809 + Store 808(r065) 810 812: 36(fvec3) Load 41(inF0) - 813: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 812 - Store 811(r067) 813 - ReturnValue 815 + 813: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 812 + Store 811(r066) 813 + 815: 36(fvec3) Load 41(inF0) + 816: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 815 + Store 814(r067) 816 + ReturnValue 818 FunctionEnd 58(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52 53(inF0): 49(ptr) FunctionParameter @@ -7156,1018 +7161,1018 @@ gl_FragCoord origin is upper left 56(inU0): 51(ptr) FunctionParameter 57(inU1): 51(ptr) FunctionParameter 59: Label - 818(r000): 132(ptr) Variable Function - 821(r001): 49(ptr) Variable Function - 824(r002): 49(ptr) Variable Function - 827(r003): 132(ptr) Variable Function - 830(r004): 49(ptr) Variable Function - 835(r005): 834(ptr) Variable Function - 838(r006): 51(ptr) Variable Function - 841(r007): 49(ptr) Variable Function - 844(r009): 49(ptr) Variable Function - 847(r010): 49(ptr) Variable Function - 851(r011): 49(ptr) Variable Function - 854(r012): 49(ptr) Variable Function - 867(r013): 49(ptr) Variable Function - 870(r014): 49(ptr) Variable Function - 873(r015): 51(ptr) Variable Function - 876(r016): 49(ptr) Variable Function - 879(r017): 49(ptr) Variable Function - 882(r018): 49(ptr) Variable Function - 885(r019): 49(ptr) Variable Function - 888(r020): 49(ptr) Variable Function - 891(r021): 49(ptr) Variable Function - 894(r022): 49(ptr) Variable Function - 897(r023): 7(ptr) Variable Function - 901(r024): 7(ptr) Variable Function - 905(r025): 49(ptr) Variable Function - 916(r029): 49(ptr) Variable Function - 919(r030): 49(ptr) Variable Function - 922(r031): 49(ptr) Variable Function - 927(r032): 51(ptr) Variable Function - 932(r033): 51(ptr) Variable Function - 934(r034): 49(ptr) Variable Function - 937(r036): 49(ptr) Variable Function - 941(r037): 49(ptr) Variable Function - 944(r038): 49(ptr) Variable Function - 950(r039): 49(ptr) Variable Function - 954(r040): 953(ptr) Variable Function - 957(r041): 953(ptr) Variable Function - 960(r042): 49(ptr) Variable Function - 964(r039a): 49(ptr) Variable Function - 969(r043): 7(ptr) Variable Function - 972(r044): 49(ptr) Variable Function - 975(r045): 49(ptr) Variable Function - 979(r046): 49(ptr) Variable Function - 982(r047): 49(ptr) Variable Function - 986(r048): 49(ptr) Variable Function - 990(r049): 49(ptr) Variable Function - 993(r050): 49(ptr) Variable Function - 997(r051): 49(ptr) Variable Function - 1000(r052): 49(ptr) Variable Function - 1004(r053): 49(ptr) Variable Function - 1008(r054): 49(ptr) Variable Function - 1012(r055): 51(ptr) Variable Function - 1015(r056): 49(ptr) Variable Function - 1018(r057): 49(ptr) Variable Function - 1021(r058): 49(ptr) Variable Function - 1026(r059): 49(ptr) Variable Function - 1029(r060): 49(ptr) Variable Function - 1036(r061): 49(ptr) Variable Function - 1039(r062): 49(ptr) Variable Function - 1044(r063): 49(ptr) Variable Function - 1047(r064): 49(ptr) Variable Function - 1051(r065): 49(ptr) Variable Function - 1054(r066): 49(ptr) Variable Function - 1057(r067): 49(ptr) Variable Function - 819: 48(fvec4) Load 53(inF0) - 820: 131(bool) All 819 - Store 818(r000) 820 + 821(r000): 132(ptr) Variable Function + 824(r001): 49(ptr) Variable Function + 827(r002): 49(ptr) Variable Function + 830(r003): 132(ptr) Variable Function + 833(r004): 49(ptr) Variable Function + 838(r005): 837(ptr) Variable Function + 841(r006): 51(ptr) Variable Function + 844(r007): 49(ptr) Variable Function + 847(r009): 49(ptr) Variable Function + 850(r010): 49(ptr) Variable Function + 854(r011): 49(ptr) Variable Function + 857(r012): 49(ptr) Variable Function + 870(r013): 49(ptr) Variable Function + 873(r014): 49(ptr) Variable Function + 876(r015): 51(ptr) Variable Function + 879(r016): 49(ptr) Variable Function + 882(r017): 49(ptr) Variable Function + 885(r018): 49(ptr) Variable Function + 888(r019): 49(ptr) Variable Function + 891(r020): 49(ptr) Variable Function + 894(r021): 49(ptr) Variable Function + 897(r022): 49(ptr) Variable Function + 900(r023): 7(ptr) Variable Function + 904(r024): 7(ptr) Variable Function + 908(r025): 49(ptr) Variable Function + 919(r029): 49(ptr) Variable Function + 922(r030): 49(ptr) Variable Function + 925(r031): 49(ptr) Variable Function + 930(r032): 51(ptr) Variable Function + 935(r033): 51(ptr) Variable Function + 937(r034): 49(ptr) Variable Function + 940(r036): 49(ptr) Variable Function + 944(r037): 49(ptr) Variable Function + 947(r038): 49(ptr) Variable Function + 953(r039): 49(ptr) Variable Function + 957(r040): 956(ptr) Variable Function + 960(r041): 956(ptr) Variable Function + 963(r042): 49(ptr) Variable Function + 967(r039a): 49(ptr) Variable Function + 972(r043): 7(ptr) Variable Function + 975(r044): 49(ptr) Variable Function + 978(r045): 49(ptr) Variable Function + 982(r046): 49(ptr) Variable Function + 985(r047): 49(ptr) Variable Function + 989(r048): 49(ptr) Variable Function + 993(r049): 49(ptr) Variable Function + 996(r050): 49(ptr) Variable Function + 1000(r051): 49(ptr) Variable Function + 1003(r052): 49(ptr) Variable Function + 1007(r053): 49(ptr) Variable Function + 1011(r054): 49(ptr) Variable Function + 1015(r055): 51(ptr) Variable Function + 1018(r056): 49(ptr) Variable Function + 1021(r057): 49(ptr) Variable Function + 1024(r058): 49(ptr) Variable Function + 1029(r059): 49(ptr) Variable Function + 1032(r060): 49(ptr) Variable Function + 1039(r061): 49(ptr) Variable Function + 1042(r062): 49(ptr) Variable Function + 1047(r063): 49(ptr) Variable Function + 1050(r064): 49(ptr) Variable Function + 1054(r065): 49(ptr) Variable Function + 1057(r066): 49(ptr) Variable Function + 1060(r067): 49(ptr) Variable Function 822: 48(fvec4) Load 53(inF0) - 823: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 822 - Store 821(r001) 823 + 823: 131(bool) All 822 + Store 821(r000) 823 825: 48(fvec4) Load 53(inF0) - 826: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 825 - Store 824(r002) 826 + 826: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 825 + Store 824(r001) 826 828: 48(fvec4) Load 53(inF0) - 829: 131(bool) Any 828 - Store 827(r003) 829 + 829: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 828 + Store 827(r002) 829 831: 48(fvec4) Load 53(inF0) - 832: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 831 - Store 830(r004) 832 - 836: 48(fvec4) Load 53(inF0) - 837: 833(ivec4) Bitcast 836 - Store 835(r005) 837 + 832: 131(bool) Any 831 + Store 830(r003) 832 + 834: 48(fvec4) Load 53(inF0) + 835: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 834 + Store 833(r004) 835 839: 48(fvec4) Load 53(inF0) - 840: 50(ivec4) Bitcast 839 - Store 838(r006) 840 - 842: 50(ivec4) Load 56(inU0) - 843: 48(fvec4) Bitcast 842 - Store 841(r007) 843 - 845: 48(fvec4) Load 53(inF0) - 846: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 845 - Store 844(r009) 846 + 840: 836(ivec4) Bitcast 839 + Store 838(r005) 840 + 842: 48(fvec4) Load 53(inF0) + 843: 50(ivec4) Bitcast 842 + Store 841(r006) 843 + 845: 50(ivec4) Load 56(inU0) + 846: 48(fvec4) Bitcast 845 + Store 844(r007) 846 848: 48(fvec4) Load 53(inF0) - 849: 48(fvec4) Load 54(inF1) - 850: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 848 849 - Store 847(r010) 850 - 852: 48(fvec4) Load 53(inF0) - 853: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 852 - Store 851(r011) 853 + 849: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 848 + Store 847(r009) 849 + 851: 48(fvec4) Load 53(inF0) + 852: 48(fvec4) Load 54(inF1) + 853: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 851 852 + Store 850(r010) 853 855: 48(fvec4) Load 53(inF0) - 856: 48(fvec4) Load 54(inF1) - 857: 48(fvec4) Load 55(inF2) - 858: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 855 856 857 - Store 854(r012) 858 - 859: 48(fvec4) Load 53(inF0) - 862: 861(bvec4) FOrdLessThan 859 860 - 863: 131(bool) Any 862 - SelectionMerge 865 None - BranchConditional 863 864 865 - 864: Label + 856: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 855 + Store 854(r011) 856 + 858: 48(fvec4) Load 53(inF0) + 859: 48(fvec4) Load 54(inF1) + 860: 48(fvec4) Load 55(inF2) + 861: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 858 859 860 + Store 857(r012) 861 + 862: 48(fvec4) Load 53(inF0) + 865: 864(bvec4) FOrdLessThan 862 863 + 866: 131(bool) Any 865 + SelectionMerge 868 None + BranchConditional 866 867 868 + 867: Label Kill - 865: Label - 868: 48(fvec4) Load 53(inF0) - 869: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 868 - Store 867(r013) 869 + 868: Label 871: 48(fvec4) Load 53(inF0) - 872: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 871 - Store 870(r014) 872 - 875: 50(ivec4) BitCount 874 - Store 873(r015) 875 - 877: 48(fvec4) Load 53(inF0) - 878: 48(fvec4) DPdx 877 - Store 876(r016) 878 + 872: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 871 + Store 870(r013) 872 + 874: 48(fvec4) Load 53(inF0) + 875: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 874 + Store 873(r014) 875 + 878: 50(ivec4) BitCount 877 + Store 876(r015) 878 880: 48(fvec4) Load 53(inF0) - 881: 48(fvec4) DPdxCoarse 880 - Store 879(r017) 881 + 881: 48(fvec4) DPdx 880 + Store 879(r016) 881 883: 48(fvec4) Load 53(inF0) - 884: 48(fvec4) DPdxFine 883 - Store 882(r018) 884 + 884: 48(fvec4) DPdxCoarse 883 + Store 882(r017) 884 886: 48(fvec4) Load 53(inF0) - 887: 48(fvec4) DPdy 886 - Store 885(r019) 887 + 887: 48(fvec4) DPdxFine 886 + Store 885(r018) 887 889: 48(fvec4) Load 53(inF0) - 890: 48(fvec4) DPdyCoarse 889 - Store 888(r020) 890 + 890: 48(fvec4) DPdy 889 + Store 888(r019) 890 892: 48(fvec4) Load 53(inF0) - 893: 48(fvec4) DPdyFine 892 - Store 891(r021) 893 + 893: 48(fvec4) DPdyCoarse 892 + Store 891(r020) 893 895: 48(fvec4) Load 53(inF0) - 896: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 895 - Store 894(r022) 896 + 896: 48(fvec4) DPdyFine 895 + Store 894(r021) 896 898: 48(fvec4) Load 53(inF0) - 899: 48(fvec4) Load 54(inF1) - 900: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 898 899 - Store 897(r023) 900 - 902: 48(fvec4) Load 53(inF0) - 903: 48(fvec4) Load 54(inF1) - 904: 6(float) Dot 902 903 - Store 901(r024) 904 - 906: 7(ptr) AccessChain 53(inF0) 522 - 907: 6(float) Load 906 - 908: 7(ptr) AccessChain 54(inF1) 522 - 909: 6(float) Load 908 - 910: 6(float) FMul 907 909 - 911: 7(ptr) AccessChain 53(inF0) 288 + 899: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 898 + Store 897(r022) 899 + 901: 48(fvec4) Load 53(inF0) + 902: 48(fvec4) Load 54(inF1) + 903: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 901 902 + Store 900(r023) 903 + 905: 48(fvec4) Load 53(inF0) + 906: 48(fvec4) Load 54(inF1) + 907: 6(float) Dot 905 906 + Store 904(r024) 907 + 909: 7(ptr) AccessChain 53(inF0) 523 + 910: 6(float) Load 909 + 911: 7(ptr) AccessChain 54(inF1) 523 912: 6(float) Load 911 - 913: 7(ptr) AccessChain 54(inF1) 393 - 914: 6(float) Load 913 - 915: 48(fvec4) CompositeConstruct 284 910 912 914 - Store 905(r025) 915 - 917: 48(fvec4) Load 53(inF0) - 918: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 917 - Store 916(r029) 918 + 913: 6(float) FMul 910 912 + 914: 7(ptr) AccessChain 53(inF0) 524 + 915: 6(float) Load 914 + 916: 7(ptr) AccessChain 54(inF1) 631 + 917: 6(float) Load 916 + 918: 48(fvec4) CompositeConstruct 283 913 915 917 + Store 908(r025) 918 920: 48(fvec4) Load 53(inF0) - 921: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 920 - Store 919(r030) 921 + 921: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 920 + Store 919(r029) 921 923: 48(fvec4) Load 53(inF0) - 924: 48(fvec4) Load 54(inF1) - 925: 48(fvec4) Load 55(inF2) - 926: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 923 924 925 - Store 922(r031) 926 - 931: 50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 930 - Store 927(r032) 931 - 933: 50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 930 - Store 932(r033) 933 - 935: 48(fvec4) Load 53(inF0) - 936: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 935 - Store 934(r034) 936 + 924: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 923 + Store 922(r030) 924 + 926: 48(fvec4) Load 53(inF0) + 927: 48(fvec4) Load 54(inF1) + 928: 48(fvec4) Load 55(inF2) + 929: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 926 927 928 + Store 925(r031) 929 + 934: 50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 933 + Store 930(r032) 934 + 936: 50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 933 + Store 935(r033) 936 938: 48(fvec4) Load 53(inF0) - 939: 48(fvec4) Load 54(inF1) - 940: 48(fvec4) FMod 938 939 - Store 937(r036) 940 - 942: 48(fvec4) Load 53(inF0) - 943: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 942 - Store 941(r037) 943 + 939: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 938 + Store 937(r034) 939 + 941: 48(fvec4) Load 53(inF0) + 942: 48(fvec4) Load 54(inF1) + 943: 48(fvec4) FMod 941 942 + Store 940(r036) 943 945: 48(fvec4) Load 53(inF0) - 947:946(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 945 - 948: 833(ivec4) CompositeExtract 947 1 - Store 54(inF1) 948 - 949: 48(fvec4) CompositeExtract 947 0 - Store 944(r038) 949 - 951: 48(fvec4) Load 53(inF0) - 952: 48(fvec4) Fwidth 951 - Store 950(r039) 952 - 955: 48(fvec4) Load 53(inF0) - 956: 861(bvec4) IsInf 955 - Store 954(r040) 956 + 946: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 945 + Store 944(r037) 946 + 948: 48(fvec4) Load 53(inF0) + 950:949(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 948 + 951: 836(ivec4) CompositeExtract 950 1 + Store 54(inF1) 951 + 952: 48(fvec4) CompositeExtract 950 0 + Store 947(r038) 952 + 954: 48(fvec4) Load 53(inF0) + 955: 48(fvec4) Fwidth 954 + Store 953(r039) 955 958: 48(fvec4) Load 53(inF0) - 959: 861(bvec4) IsNan 958 - Store 957(r041) 959 + 959: 864(bvec4) IsInf 958 + Store 957(r040) 959 961: 48(fvec4) Load 53(inF0) - 962: 48(fvec4) Load 54(inF1) - 963: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 961 962 - Store 960(r042) 963 - 965: 48(fvec4) Load 53(inF0) - 966: 48(fvec4) Load 54(inF1) - 967: 48(fvec4) Load 55(inF2) - 968: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 965 966 967 - Store 964(r039a) 968 - 970: 48(fvec4) Load 53(inF0) - 971: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 970 - Store 969(r043) 971 + 962: 864(bvec4) IsNan 961 + Store 960(r041) 962 + 964: 48(fvec4) Load 53(inF0) + 965: 48(fvec4) Load 54(inF1) + 966: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 964 965 + Store 963(r042) 966 + 968: 48(fvec4) Load 53(inF0) + 969: 48(fvec4) Load 54(inF1) + 970: 48(fvec4) Load 55(inF2) + 971: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 968 969 970 + Store 967(r039a) 971 973: 48(fvec4) Load 53(inF0) - 974: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 973 - Store 972(r044) 974 + 974: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 973 + Store 972(r043) 974 976: 48(fvec4) Load 53(inF0) - 977: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 976 - 978: 48(fvec4) VectorTimesScalar 977 263 - Store 975(r045) 978 - 980: 48(fvec4) Load 53(inF0) - 981: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 980 - Store 979(r046) 981 + 977: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 976 + Store 975(r044) 977 + 979: 48(fvec4) Load 53(inF0) + 980: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 979 + 981: 48(fvec4) VectorTimesScalar 980 262 + Store 978(r045) 981 983: 48(fvec4) Load 53(inF0) - 984: 48(fvec4) Load 54(inF1) - 985: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 983 984 - Store 982(r047) 985 - 987: 48(fvec4) Load 53(inF0) - 988: 48(fvec4) Load 54(inF1) - 989: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 987 988 - Store 986(r048) 989 - 991: 48(fvec4) Load 53(inF0) - 992: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 991 - Store 990(r049) 992 + 984: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 983 + Store 982(r046) 984 + 986: 48(fvec4) Load 53(inF0) + 987: 48(fvec4) Load 54(inF1) + 988: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 986 987 + Store 985(r047) 988 + 990: 48(fvec4) Load 53(inF0) + 991: 48(fvec4) Load 54(inF1) + 992: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 990 991 + Store 989(r048) 992 994: 48(fvec4) Load 53(inF0) - 995: 48(fvec4) Load 54(inF1) - 996: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 994 995 - Store 993(r050) 996 - 998: 48(fvec4) Load 53(inF0) - 999: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 998 - Store 997(r051) 999 + 995: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 994 + Store 993(r049) 995 + 997: 48(fvec4) Load 53(inF0) + 998: 48(fvec4) Load 54(inF1) + 999: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 997 998 + Store 996(r050) 999 1001: 48(fvec4) Load 53(inF0) - 1002: 48(fvec4) CompositeConstruct 284 284 284 284 - 1003: 48(fvec4) FDiv 1002 1001 - Store 1000(r052) 1003 - 1005: 48(fvec4) Load 53(inF0) - 1006: 48(fvec4) Load 54(inF1) - 1007: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1005 1006 - Store 1004(r053) 1007 - 1009: 48(fvec4) Load 53(inF0) - 1010: 48(fvec4) Load 54(inF1) - 1011: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1009 1010 519 - Store 1008(r054) 1011 - 1014: 50(ivec4) BitReverse 1013 - Store 1012(r055) 1014 - 1016: 48(fvec4) Load 53(inF0) - 1017: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1016 - Store 1015(r056) 1017 + 1002: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1001 + Store 1000(r051) 1002 + 1004: 48(fvec4) Load 53(inF0) + 1005: 48(fvec4) CompositeConstruct 283 283 283 283 + 1006: 48(fvec4) FDiv 1005 1004 + Store 1003(r052) 1006 + 1008: 48(fvec4) Load 53(inF0) + 1009: 48(fvec4) Load 54(inF1) + 1010: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1008 1009 + Store 1007(r053) 1010 + 1012: 48(fvec4) Load 53(inF0) + 1013: 48(fvec4) Load 54(inF1) + 1014: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1012 1013 520 + Store 1011(r054) 1014 + 1017: 50(ivec4) BitReverse 1016 + Store 1015(r055) 1017 1019: 48(fvec4) Load 53(inF0) - 1020: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1019 - Store 1018(r057) 1020 + 1020: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1019 + Store 1018(r056) 1020 1022: 48(fvec4) Load 53(inF0) - 1023: 48(fvec4) CompositeConstruct 175 175 175 175 - 1024: 48(fvec4) CompositeConstruct 284 284 284 284 - 1025: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1022 1023 1024 - Store 1021(r058) 1025 - 1027: 48(fvec4) Load 53(inF0) - 1028: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1027 - Store 1026(r059) 1028 + 1023: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1022 + Store 1021(r057) 1023 + 1025: 48(fvec4) Load 53(inF0) + 1026: 48(fvec4) CompositeConstruct 175 175 175 175 + 1027: 48(fvec4) CompositeConstruct 283 283 283 283 + 1028: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1025 1026 1027 + Store 1024(r058) 1028 1030: 48(fvec4) Load 53(inF0) - 1031: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1030 - Store 1029(r060) 1031 - 1032: 48(fvec4) Load 53(inF0) - 1033: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1032 - Store 54(inF1) 1033 - 1034: 48(fvec4) Load 53(inF0) - 1035: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1034 - Store 55(inF2) 1035 + 1031: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1030 + Store 1029(r059) 1031 + 1033: 48(fvec4) Load 53(inF0) + 1034: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1033 + Store 1032(r060) 1034 + 1035: 48(fvec4) Load 53(inF0) + 1036: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1035 + Store 54(inF1) 1036 1037: 48(fvec4) Load 53(inF0) - 1038: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1037 - Store 1036(r061) 1038 + 1038: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1037 + Store 55(inF2) 1038 1040: 48(fvec4) Load 53(inF0) - 1041: 48(fvec4) Load 54(inF1) - 1042: 48(fvec4) Load 55(inF2) - 1043: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1040 1041 1042 - Store 1039(r062) 1043 - 1045: 48(fvec4) Load 53(inF0) - 1046: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1045 - Store 1044(r063) 1046 + 1041: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1040 + Store 1039(r061) 1041 + 1043: 48(fvec4) Load 53(inF0) + 1044: 48(fvec4) Load 54(inF1) + 1045: 48(fvec4) Load 55(inF2) + 1046: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1043 1044 1045 + Store 1042(r062) 1046 1048: 48(fvec4) Load 53(inF0) - 1049: 48(fvec4) Load 54(inF1) - 1050: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1048 1049 - Store 1047(r064) 1050 - 1052: 48(fvec4) Load 53(inF0) - 1053: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1052 - Store 1051(r065) 1053 + 1049: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1048 + Store 1047(r063) 1049 + 1051: 48(fvec4) Load 53(inF0) + 1052: 48(fvec4) Load 54(inF1) + 1053: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1051 1052 + Store 1050(r064) 1053 1055: 48(fvec4) Load 53(inF0) - 1056: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1055 - Store 1054(r066) 1056 + 1056: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1055 + Store 1054(r065) 1056 1058: 48(fvec4) Load 53(inF0) - 1059: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1058 - Store 1057(r067) 1059 - ReturnValue 1061 + 1059: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1058 + Store 1057(r066) 1059 + 1061: 48(fvec4) Load 53(inF0) + 1062: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1061 + Store 1060(r067) 1062 + ReturnValue 1064 FunctionEnd 66(PixelShaderFunction2x2(mf22;mf22;mf22;): 60 Function None 62 63(inF0): 61(ptr) FunctionParameter 64(inF1): 61(ptr) FunctionParameter 65(inF2): 61(ptr) FunctionParameter 67: Label - 1064(r000): 132(ptr) Variable Function - 1067(r001): 61(ptr) Variable Function - 1072(r003): 132(ptr) Variable Function - 1075(r004): 61(ptr) Variable Function - 1078(r005): 61(ptr) Variable Function - 1081(r006): 61(ptr) Variable Function - 1085(r007): 61(ptr) Variable Function - 1096(r008): 61(ptr) Variable Function - 1101(r009): 61(ptr) Variable Function - 1104(r010): 61(ptr) Variable Function - 1107(r011): 61(ptr) Variable Function - 1110(r012): 61(ptr) Variable Function - 1113(r013): 61(ptr) Variable Function - 1116(r014): 61(ptr) Variable Function - 1119(r015): 61(ptr) Variable Function - 1122(r016): 61(ptr) Variable Function - 1125(r017): 61(ptr) Variable Function - 1128(r018): 7(ptr) Variable Function - 1131(r019): 61(ptr) Variable Function - 1134(R020): 61(ptr) Variable Function - 1137(r021): 61(ptr) Variable Function - 1140(r022): 61(ptr) Variable Function - 1150(r023): 61(ptr) Variable Function - 1153(r024): 61(ptr) Variable Function - 1159(r025): 61(ptr) Variable Function - 1162(r026): 61(ptr) Variable Function - 1166(r026a): 61(ptr) Variable Function - 1171(r027): 61(ptr) Variable Function - 1174(r028): 61(ptr) Variable Function - 1178(r029): 61(ptr) Variable Function - 1181(r030): 61(ptr) Variable Function - 1185(r031): 61(ptr) Variable Function - 1189(r032): 61(ptr) Variable Function - 1193(r033): 61(ptr) Variable Function - 1196(r034): 61(ptr) Variable Function - 1199(r035): 61(ptr) Variable Function - 1202(r036): 61(ptr) Variable Function - 1207(r037): 61(ptr) Variable Function - 1210(r038): 61(ptr) Variable Function - 1217(r039): 61(ptr) Variable Function - 1220(r049): 61(ptr) Variable Function - 1225(r041): 61(ptr) Variable Function - 1228(r042): 61(ptr) Variable Function - 1232(r043): 61(ptr) Variable Function - 1235(r044): 61(ptr) Variable Function - 1240(r046): 61(ptr) Variable Function - 1065: 60 Load 63(inF0) - 1066: 131(bool) All 1065 - Store 1064(r000) 1066 + 1067(r000): 132(ptr) Variable Function + 1070(r001): 61(ptr) Variable Function + 1075(r003): 132(ptr) Variable Function + 1078(r004): 61(ptr) Variable Function + 1081(r005): 61(ptr) Variable Function + 1084(r006): 61(ptr) Variable Function + 1088(r007): 61(ptr) Variable Function + 1099(r008): 61(ptr) Variable Function + 1104(r009): 61(ptr) Variable Function + 1107(r010): 61(ptr) Variable Function + 1110(r011): 61(ptr) Variable Function + 1113(r012): 61(ptr) Variable Function + 1116(r013): 61(ptr) Variable Function + 1119(r014): 61(ptr) Variable Function + 1122(r015): 61(ptr) Variable Function + 1125(r016): 61(ptr) Variable Function + 1128(r017): 61(ptr) Variable Function + 1131(r018): 7(ptr) Variable Function + 1134(r019): 61(ptr) Variable Function + 1137(R020): 61(ptr) Variable Function + 1140(r021): 61(ptr) Variable Function + 1143(r022): 61(ptr) Variable Function + 1153(r023): 61(ptr) Variable Function + 1156(r024): 61(ptr) Variable Function + 1162(r025): 61(ptr) Variable Function + 1165(r026): 61(ptr) Variable Function + 1169(r026a): 61(ptr) Variable Function + 1174(r027): 61(ptr) Variable Function + 1177(r028): 61(ptr) Variable Function + 1181(r029): 61(ptr) Variable Function + 1184(r030): 61(ptr) Variable Function + 1188(r031): 61(ptr) Variable Function + 1192(r032): 61(ptr) Variable Function + 1196(r033): 61(ptr) Variable Function + 1199(r034): 61(ptr) Variable Function + 1202(r035): 61(ptr) Variable Function + 1205(r036): 61(ptr) Variable Function + 1210(r037): 61(ptr) Variable Function + 1213(r038): 61(ptr) Variable Function + 1220(r039): 61(ptr) Variable Function + 1223(r049): 61(ptr) Variable Function + 1228(r041): 61(ptr) Variable Function + 1231(r042): 61(ptr) Variable Function + 1235(r043): 61(ptr) Variable Function + 1238(r044): 61(ptr) Variable Function + 1243(r046): 61(ptr) Variable Function 1068: 60 Load 63(inF0) - 1069: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 1068 - Store 1067(r001) 1069 - 1070: 60 Load 63(inF0) - 1071: 60 ExtInst 1(GLSL.std.450) 17(Acos) 1070 + 1069: 131(bool) All 1068 + Store 1067(r000) 1069 + 1071: 60 Load 63(inF0) + 1072: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 1071 + Store 1070(r001) 1072 1073: 60 Load 63(inF0) - 1074: 131(bool) Any 1073 - Store 1072(r003) 1074 + 1074: 60 ExtInst 1(GLSL.std.450) 17(Acos) 1073 1076: 60 Load 63(inF0) - 1077: 60 ExtInst 1(GLSL.std.450) 16(Asin) 1076 - Store 1075(r004) 1077 + 1077: 131(bool) Any 1076 + Store 1075(r003) 1077 1079: 60 Load 63(inF0) - 1080: 60 ExtInst 1(GLSL.std.450) 18(Atan) 1079 - Store 1078(r005) 1080 + 1080: 60 ExtInst 1(GLSL.std.450) 16(Asin) 1079 + Store 1078(r004) 1080 1082: 60 Load 63(inF0) - 1083: 60 Load 64(inF1) - 1084: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 1082 1083 - Store 1081(r006) 1084 - 1086: 60 Load 63(inF0) - 1087: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 1086 - Store 1085(r007) 1087 - 1088: 60 Load 63(inF0) - 1091: 1090 FOrdLessThan 1088 1089 - 1092: 131(bool) Any 1091 - SelectionMerge 1094 None - BranchConditional 1092 1093 1094 - 1093: Label + 1083: 60 ExtInst 1(GLSL.std.450) 18(Atan) 1082 + Store 1081(r005) 1083 + 1085: 60 Load 63(inF0) + 1086: 60 Load 64(inF1) + 1087: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 1085 1086 + Store 1084(r006) 1087 + 1089: 60 Load 63(inF0) + 1090: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 1089 + Store 1088(r007) 1090 + 1091: 60 Load 63(inF0) + 1094: 1093 FOrdLessThan 1091 1092 + 1095: 131(bool) Any 1094 + SelectionMerge 1097 None + BranchConditional 1095 1096 1097 + 1096: Label Kill - 1094: Label - 1097: 60 Load 63(inF0) - 1098: 60 Load 64(inF1) - 1099: 60 Load 65(inF2) - 1100: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1097 1098 1099 - Store 1096(r008) 1100 - 1102: 60 Load 63(inF0) - 1103: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1102 - Store 1101(r009) 1103 + 1097: Label + 1100: 60 Load 63(inF0) + 1101: 60 Load 64(inF1) + 1102: 60 Load 65(inF2) + 1103: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1100 1101 1102 + Store 1099(r008) 1103 1105: 60 Load 63(inF0) - 1106: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 1105 - Store 1104(r010) 1106 + 1106: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1105 + Store 1104(r009) 1106 1108: 60 Load 63(inF0) - 1109: 60 DPdx 1108 - Store 1107(r011) 1109 + 1109: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 1108 + Store 1107(r010) 1109 1111: 60 Load 63(inF0) - 1112: 60 DPdxCoarse 1111 - Store 1110(r012) 1112 + 1112: 60 DPdx 1111 + Store 1110(r011) 1112 1114: 60 Load 63(inF0) - 1115: 60 DPdxFine 1114 - Store 1113(r013) 1115 + 1115: 60 DPdxCoarse 1114 + Store 1113(r012) 1115 1117: 60 Load 63(inF0) - 1118: 60 DPdy 1117 - Store 1116(r014) 1118 + 1118: 60 DPdxFine 1117 + Store 1116(r013) 1118 1120: 60 Load 63(inF0) - 1121: 60 DPdyCoarse 1120 - Store 1119(r015) 1121 + 1121: 60 DPdy 1120 + Store 1119(r014) 1121 1123: 60 Load 63(inF0) - 1124: 60 DPdyFine 1123 - Store 1122(r016) 1124 + 1124: 60 DPdyCoarse 1123 + Store 1122(r015) 1124 1126: 60 Load 63(inF0) - 1127: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 1126 - Store 1125(r017) 1127 + 1127: 60 DPdyFine 1126 + Store 1125(r016) 1127 1129: 60 Load 63(inF0) - 1130: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1129 - Store 1128(r018) 1130 + 1130: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 1129 + Store 1128(r017) 1130 1132: 60 Load 63(inF0) - 1133: 60 ExtInst 1(GLSL.std.450) 27(Exp) 1132 - Store 1131(r019) 1133 + 1133: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1132 + Store 1131(r018) 1133 1135: 60 Load 63(inF0) - 1136: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 1135 - Store 1134(R020) 1136 + 1136: 60 ExtInst 1(GLSL.std.450) 27(Exp) 1135 + Store 1134(r019) 1136 1138: 60 Load 63(inF0) - 1139: 60 ExtInst 1(GLSL.std.450) 8(Floor) 1138 - Store 1137(r021) 1139 + 1139: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 1138 + Store 1137(R020) 1139 1141: 60 Load 63(inF0) - 1142: 60 Load 64(inF1) - 1143: 24(fvec2) CompositeExtract 1141 0 - 1144: 24(fvec2) CompositeExtract 1142 0 - 1145: 24(fvec2) FMod 1143 1144 - 1146: 24(fvec2) CompositeExtract 1141 1 - 1147: 24(fvec2) CompositeExtract 1142 1 + 1142: 60 ExtInst 1(GLSL.std.450) 8(Floor) 1141 + Store 1140(r021) 1142 + 1144: 60 Load 63(inF0) + 1145: 60 Load 64(inF1) + 1146: 24(fvec2) CompositeExtract 1144 0 + 1147: 24(fvec2) CompositeExtract 1145 0 1148: 24(fvec2) FMod 1146 1147 - 1149: 60 CompositeConstruct 1145 1148 - Store 1140(r022) 1149 - 1151: 60 Load 63(inF0) - 1152: 60 ExtInst 1(GLSL.std.450) 10(Fract) 1151 - Store 1150(r023) 1152 + 1149: 24(fvec2) CompositeExtract 1144 1 + 1150: 24(fvec2) CompositeExtract 1145 1 + 1151: 24(fvec2) FMod 1149 1150 + 1152: 60 CompositeConstruct 1148 1151 + Store 1143(r022) 1152 1154: 60 Load 63(inF0) - 1156:1155(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1154 - 1157: 352(ivec2) CompositeExtract 1156 1 - Store 64(inF1) 1157 - 1158: 60 CompositeExtract 1156 0 - Store 1153(r024) 1158 - 1160: 60 Load 63(inF0) - 1161: 60 Fwidth 1160 - Store 1159(r025) 1161 + 1155: 60 ExtInst 1(GLSL.std.450) 10(Fract) 1154 + Store 1153(r023) 1155 + 1157: 60 Load 63(inF0) + 1159:1158(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1157 + 1160: 352(ivec2) CompositeExtract 1159 1 + Store 64(inF1) 1160 + 1161: 60 CompositeExtract 1159 0 + Store 1156(r024) 1161 1163: 60 Load 63(inF0) - 1164: 60 Load 64(inF1) - 1165: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1163 1164 - Store 1162(r026) 1165 - 1167: 60 Load 63(inF0) - 1168: 60 Load 64(inF1) - 1169: 60 Load 65(inF2) - 1170: 60 ExtInst 1(GLSL.std.450) 46(FMix) 1167 1168 1169 - Store 1166(r026a) 1170 - 1172: 60 Load 63(inF0) - 1173: 60 ExtInst 1(GLSL.std.450) 28(Log) 1172 - Store 1171(r027) 1173 + 1164: 60 Fwidth 1163 + Store 1162(r025) 1164 + 1166: 60 Load 63(inF0) + 1167: 60 Load 64(inF1) + 1168: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1166 1167 + Store 1165(r026) 1168 + 1170: 60 Load 63(inF0) + 1171: 60 Load 64(inF1) + 1172: 60 Load 65(inF2) + 1173: 60 ExtInst 1(GLSL.std.450) 46(FMix) 1170 1171 1172 + Store 1169(r026a) 1173 1175: 60 Load 63(inF0) - 1176: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1175 - 1177: 60 MatrixTimesScalar 1176 263 - Store 1174(r028) 1177 - 1179: 60 Load 63(inF0) - 1180: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1179 - Store 1178(r029) 1180 + 1176: 60 ExtInst 1(GLSL.std.450) 28(Log) 1175 + Store 1174(r027) 1176 + 1178: 60 Load 63(inF0) + 1179: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1178 + 1180: 60 MatrixTimesScalar 1179 262 + Store 1177(r028) 1180 1182: 60 Load 63(inF0) - 1183: 60 Load 64(inF1) - 1184: 60 ExtInst 1(GLSL.std.450) 40(FMax) 1182 1183 - Store 1181(r030) 1184 - 1186: 60 Load 63(inF0) - 1187: 60 Load 64(inF1) - 1188: 60 ExtInst 1(GLSL.std.450) 37(FMin) 1186 1187 - Store 1185(r031) 1188 - 1190: 60 Load 63(inF0) - 1191: 60 Load 64(inF1) - 1192: 60 ExtInst 1(GLSL.std.450) 26(Pow) 1190 1191 - Store 1189(r032) 1192 - 1194: 60 Load 63(inF0) - 1195: 60 ExtInst 1(GLSL.std.450) 11(Radians) 1194 - Store 1193(r033) 1195 + 1183: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1182 + Store 1181(r029) 1183 + 1185: 60 Load 63(inF0) + 1186: 60 Load 64(inF1) + 1187: 60 ExtInst 1(GLSL.std.450) 40(FMax) 1185 1186 + Store 1184(r030) 1187 + 1189: 60 Load 63(inF0) + 1190: 60 Load 64(inF1) + 1191: 60 ExtInst 1(GLSL.std.450) 37(FMin) 1189 1190 + Store 1188(r031) 1191 + 1193: 60 Load 63(inF0) + 1194: 60 Load 64(inF1) + 1195: 60 ExtInst 1(GLSL.std.450) 26(Pow) 1193 1194 + Store 1192(r032) 1195 1197: 60 Load 63(inF0) - 1198: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1197 - Store 1196(r034) 1198 + 1198: 60 ExtInst 1(GLSL.std.450) 11(Radians) 1197 + Store 1196(r033) 1198 1200: 60 Load 63(inF0) - 1201: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1200 - Store 1199(r035) 1201 + 1201: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1200 + Store 1199(r034) 1201 1203: 60 Load 63(inF0) - 1204: 24(fvec2) CompositeConstruct 175 175 - 1205: 24(fvec2) CompositeConstruct 284 284 - 1206: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1203 1204 1205 - Store 1202(r036) 1206 - 1208: 60 Load 63(inF0) - 1209: 60 ExtInst 1(GLSL.std.450) 6(FSign) 1208 - Store 1207(r037) 1209 + 1204: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1203 + Store 1202(r035) 1204 + 1206: 60 Load 63(inF0) + 1207: 24(fvec2) CompositeConstruct 175 175 + 1208: 24(fvec2) CompositeConstruct 283 283 + 1209: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1206 1207 1208 + Store 1205(r036) 1209 1211: 60 Load 63(inF0) - 1212: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1211 - Store 1210(r038) 1212 - 1213: 60 Load 63(inF0) - 1214: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1213 - Store 64(inF1) 1214 - 1215: 60 Load 63(inF0) - 1216: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1215 - Store 65(inF2) 1216 + 1212: 60 ExtInst 1(GLSL.std.450) 6(FSign) 1211 + Store 1210(r037) 1212 + 1214: 60 Load 63(inF0) + 1215: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1214 + Store 1213(r038) 1215 + 1216: 60 Load 63(inF0) + 1217: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1216 + Store 64(inF1) 1217 1218: 60 Load 63(inF0) - 1219: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 1218 - Store 1217(r039) 1219 + 1219: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1218 + Store 65(inF2) 1219 1221: 60 Load 63(inF0) - 1222: 60 Load 64(inF1) - 1223: 60 Load 65(inF2) - 1224: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1221 1222 1223 - Store 1220(r049) 1224 - 1226: 60 Load 63(inF0) - 1227: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1226 - Store 1225(r041) 1227 + 1222: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 1221 + Store 1220(r039) 1222 + 1224: 60 Load 63(inF0) + 1225: 60 Load 64(inF1) + 1226: 60 Load 65(inF2) + 1227: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1224 1225 1226 + Store 1223(r049) 1227 1229: 60 Load 63(inF0) - 1230: 60 Load 64(inF1) - 1231: 60 ExtInst 1(GLSL.std.450) 48(Step) 1229 1230 - Store 1228(r042) 1231 - 1233: 60 Load 63(inF0) - 1234: 60 ExtInst 1(GLSL.std.450) 15(Tan) 1233 - Store 1232(r043) 1234 + 1230: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1229 + Store 1228(r041) 1230 + 1232: 60 Load 63(inF0) + 1233: 60 Load 64(inF1) + 1234: 60 ExtInst 1(GLSL.std.450) 48(Step) 1232 1233 + Store 1231(r042) 1234 1236: 60 Load 63(inF0) - 1237: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 1236 - Store 1235(r044) 1237 - 1238: 60 Load 63(inF0) - 1239: 60 Transpose 1238 + 1237: 60 ExtInst 1(GLSL.std.450) 15(Tan) 1236 + Store 1235(r043) 1237 + 1239: 60 Load 63(inF0) + 1240: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 1239 + Store 1238(r044) 1240 1241: 60 Load 63(inF0) - 1242: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 1241 - Store 1240(r046) 1242 - ReturnValue 1244 + 1242: 60 Transpose 1241 + 1244: 60 Load 63(inF0) + 1245: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 1244 + Store 1243(r046) 1245 + ReturnValue 1247 FunctionEnd 74(PixelShaderFunction3x3(mf33;mf33;mf33;): 68 Function None 70 71(inF0): 69(ptr) FunctionParameter 72(inF1): 69(ptr) FunctionParameter 73(inF2): 69(ptr) FunctionParameter 75: Label - 1247(r000): 132(ptr) Variable Function - 1250(r001): 69(ptr) Variable Function - 1255(r003): 132(ptr) Variable Function - 1258(r004): 69(ptr) Variable Function - 1261(r005): 69(ptr) Variable Function - 1264(r006): 69(ptr) Variable Function - 1268(r007): 69(ptr) Variable Function - 1279(r008): 69(ptr) Variable Function - 1284(r009): 69(ptr) Variable Function - 1287(r010): 69(ptr) Variable Function - 1290(r011): 69(ptr) Variable Function - 1293(r012): 69(ptr) Variable Function - 1296(r013): 69(ptr) Variable Function - 1299(r014): 69(ptr) Variable Function - 1302(r015): 69(ptr) Variable Function - 1305(r016): 69(ptr) Variable Function - 1308(r017): 69(ptr) Variable Function - 1311(r018): 7(ptr) Variable Function - 1314(r019): 69(ptr) Variable Function - 1317(R020): 69(ptr) Variable Function - 1320(r021): 69(ptr) Variable Function - 1323(r022): 69(ptr) Variable Function - 1336(r023): 69(ptr) Variable Function - 1339(r024): 69(ptr) Variable Function - 1345(r025): 69(ptr) Variable Function - 1348(r026): 69(ptr) Variable Function - 1352(r026a): 69(ptr) Variable Function - 1357(r027): 69(ptr) Variable Function - 1360(r028): 69(ptr) Variable Function - 1364(r029): 69(ptr) Variable Function - 1367(r030): 69(ptr) Variable Function - 1371(r031): 69(ptr) Variable Function - 1375(r032): 69(ptr) Variable Function - 1379(r033): 69(ptr) Variable Function - 1382(r034): 69(ptr) Variable Function - 1385(r035): 69(ptr) Variable Function - 1388(r036): 69(ptr) Variable Function - 1393(r037): 69(ptr) Variable Function - 1396(r038): 69(ptr) Variable Function - 1403(r039): 69(ptr) Variable Function - 1406(r049): 69(ptr) Variable Function - 1411(r041): 69(ptr) Variable Function - 1414(r042): 69(ptr) Variable Function - 1418(r043): 69(ptr) Variable Function - 1421(r044): 69(ptr) Variable Function - 1426(r046): 69(ptr) Variable Function - 1248: 68 Load 71(inF0) - 1249: 131(bool) All 1248 - Store 1247(r000) 1249 + 1250(r000): 132(ptr) Variable Function + 1253(r001): 69(ptr) Variable Function + 1258(r003): 132(ptr) Variable Function + 1261(r004): 69(ptr) Variable Function + 1264(r005): 69(ptr) Variable Function + 1267(r006): 69(ptr) Variable Function + 1271(r007): 69(ptr) Variable Function + 1282(r008): 69(ptr) Variable Function + 1287(r009): 69(ptr) Variable Function + 1290(r010): 69(ptr) Variable Function + 1293(r011): 69(ptr) Variable Function + 1296(r012): 69(ptr) Variable Function + 1299(r013): 69(ptr) Variable Function + 1302(r014): 69(ptr) Variable Function + 1305(r015): 69(ptr) Variable Function + 1308(r016): 69(ptr) Variable Function + 1311(r017): 69(ptr) Variable Function + 1314(r018): 7(ptr) Variable Function + 1317(r019): 69(ptr) Variable Function + 1320(R020): 69(ptr) Variable Function + 1323(r021): 69(ptr) Variable Function + 1326(r022): 69(ptr) Variable Function + 1339(r023): 69(ptr) Variable Function + 1342(r024): 69(ptr) Variable Function + 1348(r025): 69(ptr) Variable Function + 1351(r026): 69(ptr) Variable Function + 1355(r026a): 69(ptr) Variable Function + 1360(r027): 69(ptr) Variable Function + 1363(r028): 69(ptr) Variable Function + 1367(r029): 69(ptr) Variable Function + 1370(r030): 69(ptr) Variable Function + 1374(r031): 69(ptr) Variable Function + 1378(r032): 69(ptr) Variable Function + 1382(r033): 69(ptr) Variable Function + 1385(r034): 69(ptr) Variable Function + 1388(r035): 69(ptr) Variable Function + 1391(r036): 69(ptr) Variable Function + 1396(r037): 69(ptr) Variable Function + 1399(r038): 69(ptr) Variable Function + 1406(r039): 69(ptr) Variable Function + 1409(r049): 69(ptr) Variable Function + 1414(r041): 69(ptr) Variable Function + 1417(r042): 69(ptr) Variable Function + 1421(r043): 69(ptr) Variable Function + 1424(r044): 69(ptr) Variable Function + 1429(r046): 69(ptr) Variable Function 1251: 68 Load 71(inF0) - 1252: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 1251 - Store 1250(r001) 1252 - 1253: 68 Load 71(inF0) - 1254: 68 ExtInst 1(GLSL.std.450) 17(Acos) 1253 + 1252: 131(bool) All 1251 + Store 1250(r000) 1252 + 1254: 68 Load 71(inF0) + 1255: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 1254 + Store 1253(r001) 1255 1256: 68 Load 71(inF0) - 1257: 131(bool) Any 1256 - Store 1255(r003) 1257 + 1257: 68 ExtInst 1(GLSL.std.450) 17(Acos) 1256 1259: 68 Load 71(inF0) - 1260: 68 ExtInst 1(GLSL.std.450) 16(Asin) 1259 - Store 1258(r004) 1260 + 1260: 131(bool) Any 1259 + Store 1258(r003) 1260 1262: 68 Load 71(inF0) - 1263: 68 ExtInst 1(GLSL.std.450) 18(Atan) 1262 - Store 1261(r005) 1263 + 1263: 68 ExtInst 1(GLSL.std.450) 16(Asin) 1262 + Store 1261(r004) 1263 1265: 68 Load 71(inF0) - 1266: 68 Load 72(inF1) - 1267: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 1265 1266 - Store 1264(r006) 1267 - 1269: 68 Load 71(inF0) - 1270: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 1269 - Store 1268(r007) 1270 - 1271: 68 Load 71(inF0) - 1274: 1273 FOrdLessThan 1271 1272 - 1275: 131(bool) Any 1274 - SelectionMerge 1277 None - BranchConditional 1275 1276 1277 - 1276: Label + 1266: 68 ExtInst 1(GLSL.std.450) 18(Atan) 1265 + Store 1264(r005) 1266 + 1268: 68 Load 71(inF0) + 1269: 68 Load 72(inF1) + 1270: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 1268 1269 + Store 1267(r006) 1270 + 1272: 68 Load 71(inF0) + 1273: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 1272 + Store 1271(r007) 1273 + 1274: 68 Load 71(inF0) + 1277: 1276 FOrdLessThan 1274 1275 + 1278: 131(bool) Any 1277 + SelectionMerge 1280 None + BranchConditional 1278 1279 1280 + 1279: Label Kill - 1277: Label - 1280: 68 Load 71(inF0) - 1281: 68 Load 72(inF1) - 1282: 68 Load 73(inF2) - 1283: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1280 1281 1282 - Store 1279(r008) 1283 - 1285: 68 Load 71(inF0) - 1286: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1285 - Store 1284(r009) 1286 + 1280: Label + 1283: 68 Load 71(inF0) + 1284: 68 Load 72(inF1) + 1285: 68 Load 73(inF2) + 1286: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1283 1284 1285 + Store 1282(r008) 1286 1288: 68 Load 71(inF0) - 1289: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 1288 - Store 1287(r010) 1289 + 1289: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1288 + Store 1287(r009) 1289 1291: 68 Load 71(inF0) - 1292: 68 DPdx 1291 - Store 1290(r011) 1292 + 1292: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 1291 + Store 1290(r010) 1292 1294: 68 Load 71(inF0) - 1295: 68 DPdxCoarse 1294 - Store 1293(r012) 1295 + 1295: 68 DPdx 1294 + Store 1293(r011) 1295 1297: 68 Load 71(inF0) - 1298: 68 DPdxFine 1297 - Store 1296(r013) 1298 + 1298: 68 DPdxCoarse 1297 + Store 1296(r012) 1298 1300: 68 Load 71(inF0) - 1301: 68 DPdy 1300 - Store 1299(r014) 1301 + 1301: 68 DPdxFine 1300 + Store 1299(r013) 1301 1303: 68 Load 71(inF0) - 1304: 68 DPdyCoarse 1303 - Store 1302(r015) 1304 + 1304: 68 DPdy 1303 + Store 1302(r014) 1304 1306: 68 Load 71(inF0) - 1307: 68 DPdyFine 1306 - Store 1305(r016) 1307 + 1307: 68 DPdyCoarse 1306 + Store 1305(r015) 1307 1309: 68 Load 71(inF0) - 1310: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 1309 - Store 1308(r017) 1310 + 1310: 68 DPdyFine 1309 + Store 1308(r016) 1310 1312: 68 Load 71(inF0) - 1313: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1312 - Store 1311(r018) 1313 + 1313: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 1312 + Store 1311(r017) 1313 1315: 68 Load 71(inF0) - 1316: 68 ExtInst 1(GLSL.std.450) 27(Exp) 1315 - Store 1314(r019) 1316 + 1316: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1315 + Store 1314(r018) 1316 1318: 68 Load 71(inF0) - 1319: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 1318 - Store 1317(R020) 1319 + 1319: 68 ExtInst 1(GLSL.std.450) 27(Exp) 1318 + Store 1317(r019) 1319 1321: 68 Load 71(inF0) - 1322: 68 ExtInst 1(GLSL.std.450) 8(Floor) 1321 - Store 1320(r021) 1322 + 1322: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 1321 + Store 1320(R020) 1322 1324: 68 Load 71(inF0) - 1325: 68 Load 72(inF1) - 1326: 36(fvec3) CompositeExtract 1324 0 - 1327: 36(fvec3) CompositeExtract 1325 0 - 1328: 36(fvec3) FMod 1326 1327 - 1329: 36(fvec3) CompositeExtract 1324 1 - 1330: 36(fvec3) CompositeExtract 1325 1 + 1325: 68 ExtInst 1(GLSL.std.450) 8(Floor) 1324 + Store 1323(r021) 1325 + 1327: 68 Load 71(inF0) + 1328: 68 Load 72(inF1) + 1329: 36(fvec3) CompositeExtract 1327 0 + 1330: 36(fvec3) CompositeExtract 1328 0 1331: 36(fvec3) FMod 1329 1330 - 1332: 36(fvec3) CompositeExtract 1324 2 - 1333: 36(fvec3) CompositeExtract 1325 2 + 1332: 36(fvec3) CompositeExtract 1327 1 + 1333: 36(fvec3) CompositeExtract 1328 1 1334: 36(fvec3) FMod 1332 1333 - 1335: 68 CompositeConstruct 1328 1331 1334 - Store 1323(r022) 1335 - 1337: 68 Load 71(inF0) - 1338: 68 ExtInst 1(GLSL.std.450) 10(Fract) 1337 - Store 1336(r023) 1338 + 1335: 36(fvec3) CompositeExtract 1327 2 + 1336: 36(fvec3) CompositeExtract 1328 2 + 1337: 36(fvec3) FMod 1335 1336 + 1338: 68 CompositeConstruct 1331 1334 1337 + Store 1326(r022) 1338 1340: 68 Load 71(inF0) - 1342:1341(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1340 - 1343: 588(ivec3) CompositeExtract 1342 1 - Store 72(inF1) 1343 - 1344: 68 CompositeExtract 1342 0 - Store 1339(r024) 1344 - 1346: 68 Load 71(inF0) - 1347: 68 Fwidth 1346 - Store 1345(r025) 1347 + 1341: 68 ExtInst 1(GLSL.std.450) 10(Fract) 1340 + Store 1339(r023) 1341 + 1343: 68 Load 71(inF0) + 1345:1344(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1343 + 1346: 590(ivec3) CompositeExtract 1345 1 + Store 72(inF1) 1346 + 1347: 68 CompositeExtract 1345 0 + Store 1342(r024) 1347 1349: 68 Load 71(inF0) - 1350: 68 Load 72(inF1) - 1351: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1349 1350 - Store 1348(r026) 1351 - 1353: 68 Load 71(inF0) - 1354: 68 Load 72(inF1) - 1355: 68 Load 73(inF2) - 1356: 68 ExtInst 1(GLSL.std.450) 46(FMix) 1353 1354 1355 - Store 1352(r026a) 1356 - 1358: 68 Load 71(inF0) - 1359: 68 ExtInst 1(GLSL.std.450) 28(Log) 1358 - Store 1357(r027) 1359 + 1350: 68 Fwidth 1349 + Store 1348(r025) 1350 + 1352: 68 Load 71(inF0) + 1353: 68 Load 72(inF1) + 1354: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1352 1353 + Store 1351(r026) 1354 + 1356: 68 Load 71(inF0) + 1357: 68 Load 72(inF1) + 1358: 68 Load 73(inF2) + 1359: 68 ExtInst 1(GLSL.std.450) 46(FMix) 1356 1357 1358 + Store 1355(r026a) 1359 1361: 68 Load 71(inF0) - 1362: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1361 - 1363: 68 MatrixTimesScalar 1362 263 - Store 1360(r028) 1363 - 1365: 68 Load 71(inF0) - 1366: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1365 - Store 1364(r029) 1366 + 1362: 68 ExtInst 1(GLSL.std.450) 28(Log) 1361 + Store 1360(r027) 1362 + 1364: 68 Load 71(inF0) + 1365: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1364 + 1366: 68 MatrixTimesScalar 1365 262 + Store 1363(r028) 1366 1368: 68 Load 71(inF0) - 1369: 68 Load 72(inF1) - 1370: 68 ExtInst 1(GLSL.std.450) 40(FMax) 1368 1369 - Store 1367(r030) 1370 - 1372: 68 Load 71(inF0) - 1373: 68 Load 72(inF1) - 1374: 68 ExtInst 1(GLSL.std.450) 37(FMin) 1372 1373 - Store 1371(r031) 1374 - 1376: 68 Load 71(inF0) - 1377: 68 Load 72(inF1) - 1378: 68 ExtInst 1(GLSL.std.450) 26(Pow) 1376 1377 - Store 1375(r032) 1378 - 1380: 68 Load 71(inF0) - 1381: 68 ExtInst 1(GLSL.std.450) 11(Radians) 1380 - Store 1379(r033) 1381 + 1369: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1368 + Store 1367(r029) 1369 + 1371: 68 Load 71(inF0) + 1372: 68 Load 72(inF1) + 1373: 68 ExtInst 1(GLSL.std.450) 40(FMax) 1371 1372 + Store 1370(r030) 1373 + 1375: 68 Load 71(inF0) + 1376: 68 Load 72(inF1) + 1377: 68 ExtInst 1(GLSL.std.450) 37(FMin) 1375 1376 + Store 1374(r031) 1377 + 1379: 68 Load 71(inF0) + 1380: 68 Load 72(inF1) + 1381: 68 ExtInst 1(GLSL.std.450) 26(Pow) 1379 1380 + Store 1378(r032) 1381 1383: 68 Load 71(inF0) - 1384: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1383 - Store 1382(r034) 1384 + 1384: 68 ExtInst 1(GLSL.std.450) 11(Radians) 1383 + Store 1382(r033) 1384 1386: 68 Load 71(inF0) - 1387: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1386 - Store 1385(r035) 1387 + 1387: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1386 + Store 1385(r034) 1387 1389: 68 Load 71(inF0) - 1390: 36(fvec3) CompositeConstruct 175 175 175 - 1391: 36(fvec3) CompositeConstruct 284 284 284 - 1392: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1389 1390 1391 - Store 1388(r036) 1392 - 1394: 68 Load 71(inF0) - 1395: 68 ExtInst 1(GLSL.std.450) 6(FSign) 1394 - Store 1393(r037) 1395 + 1390: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1389 + Store 1388(r035) 1390 + 1392: 68 Load 71(inF0) + 1393: 36(fvec3) CompositeConstruct 175 175 175 + 1394: 36(fvec3) CompositeConstruct 283 283 283 + 1395: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1392 1393 1394 + Store 1391(r036) 1395 1397: 68 Load 71(inF0) - 1398: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1397 - Store 1396(r038) 1398 - 1399: 68 Load 71(inF0) - 1400: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1399 - Store 72(inF1) 1400 - 1401: 68 Load 71(inF0) - 1402: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1401 - Store 73(inF2) 1402 + 1398: 68 ExtInst 1(GLSL.std.450) 6(FSign) 1397 + Store 1396(r037) 1398 + 1400: 68 Load 71(inF0) + 1401: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1400 + Store 1399(r038) 1401 + 1402: 68 Load 71(inF0) + 1403: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1402 + Store 72(inF1) 1403 1404: 68 Load 71(inF0) - 1405: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 1404 - Store 1403(r039) 1405 + 1405: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1404 + Store 73(inF2) 1405 1407: 68 Load 71(inF0) - 1408: 68 Load 72(inF1) - 1409: 68 Load 73(inF2) - 1410: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1407 1408 1409 - Store 1406(r049) 1410 - 1412: 68 Load 71(inF0) - 1413: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1412 - Store 1411(r041) 1413 + 1408: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 1407 + Store 1406(r039) 1408 + 1410: 68 Load 71(inF0) + 1411: 68 Load 72(inF1) + 1412: 68 Load 73(inF2) + 1413: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1410 1411 1412 + Store 1409(r049) 1413 1415: 68 Load 71(inF0) - 1416: 68 Load 72(inF1) - 1417: 68 ExtInst 1(GLSL.std.450) 48(Step) 1415 1416 - Store 1414(r042) 1417 - 1419: 68 Load 71(inF0) - 1420: 68 ExtInst 1(GLSL.std.450) 15(Tan) 1419 - Store 1418(r043) 1420 + 1416: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1415 + Store 1414(r041) 1416 + 1418: 68 Load 71(inF0) + 1419: 68 Load 72(inF1) + 1420: 68 ExtInst 1(GLSL.std.450) 48(Step) 1418 1419 + Store 1417(r042) 1420 1422: 68 Load 71(inF0) - 1423: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 1422 - Store 1421(r044) 1423 - 1424: 68 Load 71(inF0) - 1425: 68 Transpose 1424 + 1423: 68 ExtInst 1(GLSL.std.450) 15(Tan) 1422 + Store 1421(r043) 1423 + 1425: 68 Load 71(inF0) + 1426: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 1425 + Store 1424(r044) 1426 1427: 68 Load 71(inF0) - 1428: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 1427 - Store 1426(r046) 1428 - ReturnValue 1430 + 1428: 68 Transpose 1427 + 1430: 68 Load 71(inF0) + 1431: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 1430 + Store 1429(r046) 1431 + ReturnValue 1433 FunctionEnd 82(PixelShaderFunction4x4(mf44;mf44;mf44;): 76 Function None 78 79(inF0): 77(ptr) FunctionParameter 80(inF1): 77(ptr) FunctionParameter 81(inF2): 77(ptr) FunctionParameter 83: Label - 1433(r000): 132(ptr) Variable Function - 1436(r001): 77(ptr) Variable Function - 1441(r003): 132(ptr) Variable Function - 1444(r004): 77(ptr) Variable Function - 1447(r005): 77(ptr) Variable Function - 1450(r006): 77(ptr) Variable Function - 1454(r007): 77(ptr) Variable Function - 1465(r008): 77(ptr) Variable Function - 1470(r009): 77(ptr) Variable Function - 1473(r010): 77(ptr) Variable Function - 1476(r011): 77(ptr) Variable Function - 1479(r012): 77(ptr) Variable Function - 1482(r013): 77(ptr) Variable Function - 1485(r014): 77(ptr) Variable Function - 1488(r015): 77(ptr) Variable Function - 1491(r016): 77(ptr) Variable Function - 1494(r017): 77(ptr) Variable Function - 1497(r018): 7(ptr) Variable Function - 1500(r019): 77(ptr) Variable Function - 1503(R020): 77(ptr) Variable Function - 1506(r021): 77(ptr) Variable Function - 1509(r022): 77(ptr) Variable Function - 1525(r023): 77(ptr) Variable Function - 1528(r024): 77(ptr) Variable Function - 1534(r025): 77(ptr) Variable Function - 1537(r026): 77(ptr) Variable Function - 1541(r026a): 77(ptr) Variable Function - 1546(r027): 77(ptr) Variable Function - 1549(r028): 77(ptr) Variable Function - 1553(r029): 77(ptr) Variable Function - 1556(r030): 77(ptr) Variable Function - 1560(r031): 77(ptr) Variable Function - 1564(r032): 77(ptr) Variable Function - 1568(r033): 77(ptr) Variable Function - 1571(r034): 77(ptr) Variable Function - 1574(r035): 77(ptr) Variable Function - 1577(r036): 77(ptr) Variable Function - 1582(r037): 77(ptr) Variable Function - 1585(r038): 77(ptr) Variable Function - 1592(r039): 77(ptr) Variable Function - 1595(r049): 77(ptr) Variable Function - 1600(r041): 77(ptr) Variable Function - 1603(r042): 77(ptr) Variable Function - 1607(r043): 77(ptr) Variable Function - 1610(r044): 77(ptr) Variable Function - 1615(r046): 77(ptr) Variable Function - 1434: 76 Load 79(inF0) - 1435: 131(bool) All 1434 - Store 1433(r000) 1435 + 1436(r000): 132(ptr) Variable Function + 1439(r001): 77(ptr) Variable Function + 1444(r003): 132(ptr) Variable Function + 1447(r004): 77(ptr) Variable Function + 1450(r005): 77(ptr) Variable Function + 1453(r006): 77(ptr) Variable Function + 1457(r007): 77(ptr) Variable Function + 1468(r008): 77(ptr) Variable Function + 1473(r009): 77(ptr) Variable Function + 1476(r010): 77(ptr) Variable Function + 1479(r011): 77(ptr) Variable Function + 1482(r012): 77(ptr) Variable Function + 1485(r013): 77(ptr) Variable Function + 1488(r014): 77(ptr) Variable Function + 1491(r015): 77(ptr) Variable Function + 1494(r016): 77(ptr) Variable Function + 1497(r017): 77(ptr) Variable Function + 1500(r018): 7(ptr) Variable Function + 1503(r019): 77(ptr) Variable Function + 1506(R020): 77(ptr) Variable Function + 1509(r021): 77(ptr) Variable Function + 1512(r022): 77(ptr) Variable Function + 1528(r023): 77(ptr) Variable Function + 1531(r024): 77(ptr) Variable Function + 1537(r025): 77(ptr) Variable Function + 1540(r026): 77(ptr) Variable Function + 1544(r026a): 77(ptr) Variable Function + 1549(r027): 77(ptr) Variable Function + 1552(r028): 77(ptr) Variable Function + 1556(r029): 77(ptr) Variable Function + 1559(r030): 77(ptr) Variable Function + 1563(r031): 77(ptr) Variable Function + 1567(r032): 77(ptr) Variable Function + 1571(r033): 77(ptr) Variable Function + 1574(r034): 77(ptr) Variable Function + 1577(r035): 77(ptr) Variable Function + 1580(r036): 77(ptr) Variable Function + 1585(r037): 77(ptr) Variable Function + 1588(r038): 77(ptr) Variable Function + 1595(r039): 77(ptr) Variable Function + 1598(r049): 77(ptr) Variable Function + 1603(r041): 77(ptr) Variable Function + 1606(r042): 77(ptr) Variable Function + 1610(r043): 77(ptr) Variable Function + 1613(r044): 77(ptr) Variable Function + 1618(r046): 77(ptr) Variable Function 1437: 76 Load 79(inF0) - 1438: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 1437 - Store 1436(r001) 1438 - 1439: 76 Load 79(inF0) - 1440: 76 ExtInst 1(GLSL.std.450) 17(Acos) 1439 + 1438: 131(bool) All 1437 + Store 1436(r000) 1438 + 1440: 76 Load 79(inF0) + 1441: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 1440 + Store 1439(r001) 1441 1442: 76 Load 79(inF0) - 1443: 131(bool) Any 1442 - Store 1441(r003) 1443 + 1443: 76 ExtInst 1(GLSL.std.450) 17(Acos) 1442 1445: 76 Load 79(inF0) - 1446: 76 ExtInst 1(GLSL.std.450) 16(Asin) 1445 - Store 1444(r004) 1446 + 1446: 131(bool) Any 1445 + Store 1444(r003) 1446 1448: 76 Load 79(inF0) - 1449: 76 ExtInst 1(GLSL.std.450) 18(Atan) 1448 - Store 1447(r005) 1449 + 1449: 76 ExtInst 1(GLSL.std.450) 16(Asin) 1448 + Store 1447(r004) 1449 1451: 76 Load 79(inF0) - 1452: 76 Load 80(inF1) - 1453: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 1451 1452 - Store 1450(r006) 1453 - 1455: 76 Load 79(inF0) - 1456: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 1455 - Store 1454(r007) 1456 - 1457: 76 Load 79(inF0) - 1460: 1459 FOrdLessThan 1457 1458 - 1461: 131(bool) Any 1460 - SelectionMerge 1463 None - BranchConditional 1461 1462 1463 - 1462: Label + 1452: 76 ExtInst 1(GLSL.std.450) 18(Atan) 1451 + Store 1450(r005) 1452 + 1454: 76 Load 79(inF0) + 1455: 76 Load 80(inF1) + 1456: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 1454 1455 + Store 1453(r006) 1456 + 1458: 76 Load 79(inF0) + 1459: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 1458 + Store 1457(r007) 1459 + 1460: 76 Load 79(inF0) + 1463: 1462 FOrdLessThan 1460 1461 + 1464: 131(bool) Any 1463 + SelectionMerge 1466 None + BranchConditional 1464 1465 1466 + 1465: Label Kill - 1463: Label - 1466: 76 Load 79(inF0) - 1467: 76 Load 80(inF1) - 1468: 76 Load 81(inF2) - 1469: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1466 1467 1468 - Store 1465(r008) 1469 - 1471: 76 Load 79(inF0) - 1472: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1471 - Store 1470(r009) 1472 + 1466: Label + 1469: 76 Load 79(inF0) + 1470: 76 Load 80(inF1) + 1471: 76 Load 81(inF2) + 1472: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1469 1470 1471 + Store 1468(r008) 1472 1474: 76 Load 79(inF0) - 1475: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 1474 - Store 1473(r010) 1475 + 1475: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1474 + Store 1473(r009) 1475 1477: 76 Load 79(inF0) - 1478: 76 DPdx 1477 - Store 1476(r011) 1478 + 1478: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 1477 + Store 1476(r010) 1478 1480: 76 Load 79(inF0) - 1481: 76 DPdxCoarse 1480 - Store 1479(r012) 1481 + 1481: 76 DPdx 1480 + Store 1479(r011) 1481 1483: 76 Load 79(inF0) - 1484: 76 DPdxFine 1483 - Store 1482(r013) 1484 + 1484: 76 DPdxCoarse 1483 + Store 1482(r012) 1484 1486: 76 Load 79(inF0) - 1487: 76 DPdy 1486 - Store 1485(r014) 1487 + 1487: 76 DPdxFine 1486 + Store 1485(r013) 1487 1489: 76 Load 79(inF0) - 1490: 76 DPdyCoarse 1489 - Store 1488(r015) 1490 + 1490: 76 DPdy 1489 + Store 1488(r014) 1490 1492: 76 Load 79(inF0) - 1493: 76 DPdyFine 1492 - Store 1491(r016) 1493 + 1493: 76 DPdyCoarse 1492 + Store 1491(r015) 1493 1495: 76 Load 79(inF0) - 1496: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 1495 - Store 1494(r017) 1496 + 1496: 76 DPdyFine 1495 + Store 1494(r016) 1496 1498: 76 Load 79(inF0) - 1499: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1498 - Store 1497(r018) 1499 + 1499: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 1498 + Store 1497(r017) 1499 1501: 76 Load 79(inF0) - 1502: 76 ExtInst 1(GLSL.std.450) 27(Exp) 1501 - Store 1500(r019) 1502 + 1502: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1501 + Store 1500(r018) 1502 1504: 76 Load 79(inF0) - 1505: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 1504 - Store 1503(R020) 1505 + 1505: 76 ExtInst 1(GLSL.std.450) 27(Exp) 1504 + Store 1503(r019) 1505 1507: 76 Load 79(inF0) - 1508: 76 ExtInst 1(GLSL.std.450) 8(Floor) 1507 - Store 1506(r021) 1508 + 1508: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 1507 + Store 1506(R020) 1508 1510: 76 Load 79(inF0) - 1511: 76 Load 80(inF1) - 1512: 48(fvec4) CompositeExtract 1510 0 - 1513: 48(fvec4) CompositeExtract 1511 0 - 1514: 48(fvec4) FMod 1512 1513 - 1515: 48(fvec4) CompositeExtract 1510 1 - 1516: 48(fvec4) CompositeExtract 1511 1 + 1511: 76 ExtInst 1(GLSL.std.450) 8(Floor) 1510 + Store 1509(r021) 1511 + 1513: 76 Load 79(inF0) + 1514: 76 Load 80(inF1) + 1515: 48(fvec4) CompositeExtract 1513 0 + 1516: 48(fvec4) CompositeExtract 1514 0 1517: 48(fvec4) FMod 1515 1516 - 1518: 48(fvec4) CompositeExtract 1510 2 - 1519: 48(fvec4) CompositeExtract 1511 2 + 1518: 48(fvec4) CompositeExtract 1513 1 + 1519: 48(fvec4) CompositeExtract 1514 1 1520: 48(fvec4) FMod 1518 1519 - 1521: 48(fvec4) CompositeExtract 1510 3 - 1522: 48(fvec4) CompositeExtract 1511 3 + 1521: 48(fvec4) CompositeExtract 1513 2 + 1522: 48(fvec4) CompositeExtract 1514 2 1523: 48(fvec4) FMod 1521 1522 - 1524: 76 CompositeConstruct 1514 1517 1520 1523 - Store 1509(r022) 1524 - 1526: 76 Load 79(inF0) - 1527: 76 ExtInst 1(GLSL.std.450) 10(Fract) 1526 - Store 1525(r023) 1527 + 1524: 48(fvec4) CompositeExtract 1513 3 + 1525: 48(fvec4) CompositeExtract 1514 3 + 1526: 48(fvec4) FMod 1524 1525 + 1527: 76 CompositeConstruct 1517 1520 1523 1526 + Store 1512(r022) 1527 1529: 76 Load 79(inF0) - 1531:1530(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1529 - 1532: 833(ivec4) CompositeExtract 1531 1 - Store 80(inF1) 1532 - 1533: 76 CompositeExtract 1531 0 - Store 1528(r024) 1533 - 1535: 76 Load 79(inF0) - 1536: 76 Fwidth 1535 - Store 1534(r025) 1536 + 1530: 76 ExtInst 1(GLSL.std.450) 10(Fract) 1529 + Store 1528(r023) 1530 + 1532: 76 Load 79(inF0) + 1534:1533(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1532 + 1535: 836(ivec4) CompositeExtract 1534 1 + Store 80(inF1) 1535 + 1536: 76 CompositeExtract 1534 0 + Store 1531(r024) 1536 1538: 76 Load 79(inF0) - 1539: 76 Load 80(inF1) - 1540: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1538 1539 - Store 1537(r026) 1540 - 1542: 76 Load 79(inF0) - 1543: 76 Load 80(inF1) - 1544: 76 Load 81(inF2) - 1545: 76 ExtInst 1(GLSL.std.450) 46(FMix) 1542 1543 1544 - Store 1541(r026a) 1545 - 1547: 76 Load 79(inF0) - 1548: 76 ExtInst 1(GLSL.std.450) 28(Log) 1547 - Store 1546(r027) 1548 + 1539: 76 Fwidth 1538 + Store 1537(r025) 1539 + 1541: 76 Load 79(inF0) + 1542: 76 Load 80(inF1) + 1543: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1541 1542 + Store 1540(r026) 1543 + 1545: 76 Load 79(inF0) + 1546: 76 Load 80(inF1) + 1547: 76 Load 81(inF2) + 1548: 76 ExtInst 1(GLSL.std.450) 46(FMix) 1545 1546 1547 + Store 1544(r026a) 1548 1550: 76 Load 79(inF0) - 1551: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1550 - 1552: 76 MatrixTimesScalar 1551 263 - Store 1549(r028) 1552 - 1554: 76 Load 79(inF0) - 1555: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1554 - Store 1553(r029) 1555 + 1551: 76 ExtInst 1(GLSL.std.450) 28(Log) 1550 + Store 1549(r027) 1551 + 1553: 76 Load 79(inF0) + 1554: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1553 + 1555: 76 MatrixTimesScalar 1554 262 + Store 1552(r028) 1555 1557: 76 Load 79(inF0) - 1558: 76 Load 80(inF1) - 1559: 76 ExtInst 1(GLSL.std.450) 40(FMax) 1557 1558 - Store 1556(r030) 1559 - 1561: 76 Load 79(inF0) - 1562: 76 Load 80(inF1) - 1563: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1561 1562 - Store 1560(r031) 1563 - 1565: 76 Load 79(inF0) - 1566: 76 Load 80(inF1) - 1567: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1565 1566 - Store 1564(r032) 1567 - 1569: 76 Load 79(inF0) - 1570: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1569 - Store 1568(r033) 1570 + 1558: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1557 + Store 1556(r029) 1558 + 1560: 76 Load 79(inF0) + 1561: 76 Load 80(inF1) + 1562: 76 ExtInst 1(GLSL.std.450) 40(FMax) 1560 1561 + Store 1559(r030) 1562 + 1564: 76 Load 79(inF0) + 1565: 76 Load 80(inF1) + 1566: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1564 1565 + Store 1563(r031) 1566 + 1568: 76 Load 79(inF0) + 1569: 76 Load 80(inF1) + 1570: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1568 1569 + Store 1567(r032) 1570 1572: 76 Load 79(inF0) - 1573: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1572 - Store 1571(r034) 1573 + 1573: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1572 + Store 1571(r033) 1573 1575: 76 Load 79(inF0) - 1576: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1575 - Store 1574(r035) 1576 + 1576: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1575 + Store 1574(r034) 1576 1578: 76 Load 79(inF0) - 1579: 48(fvec4) CompositeConstruct 175 175 175 175 - 1580: 48(fvec4) CompositeConstruct 284 284 284 284 - 1581: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1578 1579 1580 - Store 1577(r036) 1581 - 1583: 76 Load 79(inF0) - 1584: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1583 - Store 1582(r037) 1584 + 1579: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1578 + Store 1577(r035) 1579 + 1581: 76 Load 79(inF0) + 1582: 48(fvec4) CompositeConstruct 175 175 175 175 + 1583: 48(fvec4) CompositeConstruct 283 283 283 283 + 1584: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1581 1582 1583 + Store 1580(r036) 1584 1586: 76 Load 79(inF0) - 1587: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1586 - Store 1585(r038) 1587 - 1588: 76 Load 79(inF0) - 1589: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1588 - Store 80(inF1) 1589 - 1590: 76 Load 79(inF0) - 1591: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1590 - Store 81(inF2) 1591 + 1587: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1586 + Store 1585(r037) 1587 + 1589: 76 Load 79(inF0) + 1590: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1589 + Store 1588(r038) 1590 + 1591: 76 Load 79(inF0) + 1592: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1591 + Store 80(inF1) 1592 1593: 76 Load 79(inF0) - 1594: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1593 - Store 1592(r039) 1594 + 1594: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1593 + Store 81(inF2) 1594 1596: 76 Load 79(inF0) - 1597: 76 Load 80(inF1) - 1598: 76 Load 81(inF2) - 1599: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1596 1597 1598 - Store 1595(r049) 1599 - 1601: 76 Load 79(inF0) - 1602: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1601 - Store 1600(r041) 1602 + 1597: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1596 + Store 1595(r039) 1597 + 1599: 76 Load 79(inF0) + 1600: 76 Load 80(inF1) + 1601: 76 Load 81(inF2) + 1602: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1599 1600 1601 + Store 1598(r049) 1602 1604: 76 Load 79(inF0) - 1605: 76 Load 80(inF1) - 1606: 76 ExtInst 1(GLSL.std.450) 48(Step) 1604 1605 - Store 1603(r042) 1606 - 1608: 76 Load 79(inF0) - 1609: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1608 - Store 1607(r043) 1609 + 1605: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1604 + Store 1603(r041) 1605 + 1607: 76 Load 79(inF0) + 1608: 76 Load 80(inF1) + 1609: 76 ExtInst 1(GLSL.std.450) 48(Step) 1607 1608 + Store 1606(r042) 1609 1611: 76 Load 79(inF0) - 1612: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1611 - Store 1610(r044) 1612 - 1613: 76 Load 79(inF0) - 1614: 76 Transpose 1613 + 1612: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1611 + Store 1610(r043) 1612 + 1614: 76 Load 79(inF0) + 1615: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1614 + Store 1613(r044) 1615 1616: 76 Load 79(inF0) - 1617: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1616 - Store 1615(r046) 1617 - ReturnValue 1619 + 1617: 76 Transpose 1616 + 1619: 76 Load 79(inF0) + 1620: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1619 + Store 1618(r046) 1620 + ReturnValue 1622 FunctionEnd 91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 84 85(inF0): 7(ptr) FunctionParameter @@ -8177,51 +8182,51 @@ gl_FragCoord origin is upper left 89(inFM0): 61(ptr) FunctionParameter 90(inFM1): 61(ptr) FunctionParameter 92: Label - 1622(r0): 7(ptr) Variable Function - 1626(r1): 25(ptr) Variable Function - 1630(r2): 25(ptr) Variable Function - 1634(r3): 7(ptr) Variable Function - 1638(r4): 25(ptr) Variable Function - 1642(r5): 25(ptr) Variable Function - 1646(r6): 61(ptr) Variable Function - 1650(r7): 61(ptr) Variable Function - 1654(r8): 61(ptr) Variable Function - 1623: 6(float) Load 86(inF1) - 1624: 6(float) Load 85(inF0) - 1625: 6(float) FMul 1623 1624 - Store 1622(r0) 1625 + 1625(r0): 7(ptr) Variable Function + 1629(r1): 25(ptr) Variable Function + 1633(r2): 25(ptr) Variable Function + 1637(r3): 7(ptr) Variable Function + 1641(r4): 25(ptr) Variable Function + 1645(r5): 25(ptr) Variable Function + 1649(r6): 61(ptr) Variable Function + 1653(r7): 61(ptr) Variable Function + 1657(r8): 61(ptr) Variable Function + 1626: 6(float) Load 86(inF1) 1627: 6(float) Load 85(inF0) - 1628: 24(fvec2) Load 87(inFV0) - 1629: 24(fvec2) VectorTimesScalar 1628 1627 - Store 1626(r1) 1629 + 1628: 6(float) FMul 1626 1627 + Store 1625(r0) 1628 + 1630: 6(float) Load 85(inF0) 1631: 24(fvec2) Load 87(inFV0) - 1632: 6(float) Load 85(inF0) - 1633: 24(fvec2) VectorTimesScalar 1631 1632 - Store 1630(r2) 1633 - 1635: 24(fvec2) Load 87(inFV0) - 1636: 24(fvec2) Load 88(inFV1) - 1637: 6(float) Dot 1635 1636 - Store 1634(r3) 1637 - 1639: 24(fvec2) Load 87(inFV0) - 1640: 60 Load 89(inFM0) - 1641: 24(fvec2) VectorTimesMatrix 1639 1640 - Store 1638(r4) 1641 + 1632: 24(fvec2) VectorTimesScalar 1631 1630 + Store 1629(r1) 1632 + 1634: 24(fvec2) Load 87(inFV0) + 1635: 6(float) Load 85(inF0) + 1636: 24(fvec2) VectorTimesScalar 1634 1635 + Store 1633(r2) 1636 + 1638: 24(fvec2) Load 87(inFV0) + 1639: 24(fvec2) Load 88(inFV1) + 1640: 6(float) Dot 1638 1639 + Store 1637(r3) 1640 + 1642: 24(fvec2) Load 87(inFV0) 1643: 60 Load 89(inFM0) - 1644: 24(fvec2) Load 87(inFV0) - 1645: 24(fvec2) MatrixTimesVector 1643 1644 - Store 1642(r5) 1645 - 1647: 6(float) Load 85(inF0) - 1648: 60 Load 89(inFM0) - 1649: 60 MatrixTimesScalar 1648 1647 - Store 1646(r6) 1649 + 1644: 24(fvec2) VectorTimesMatrix 1642 1643 + Store 1641(r4) 1644 + 1646: 60 Load 89(inFM0) + 1647: 24(fvec2) Load 87(inFV0) + 1648: 24(fvec2) MatrixTimesVector 1646 1647 + Store 1645(r5) 1648 + 1650: 6(float) Load 85(inF0) 1651: 60 Load 89(inFM0) - 1652: 6(float) Load 85(inF0) - 1653: 60 MatrixTimesScalar 1651 1652 - Store 1650(r7) 1653 - 1655: 60 Load 90(inFM1) - 1656: 60 Load 89(inFM0) - 1657: 60 MatrixTimesMatrix 1655 1656 - Store 1654(r8) 1657 + 1652: 60 MatrixTimesScalar 1651 1650 + Store 1649(r6) 1652 + 1654: 60 Load 89(inFM0) + 1655: 6(float) Load 85(inF0) + 1656: 60 MatrixTimesScalar 1654 1655 + Store 1653(r7) 1656 + 1658: 60 Load 90(inFM1) + 1659: 60 Load 89(inFM0) + 1660: 60 MatrixTimesMatrix 1658 1659 + Store 1657(r8) 1660 Return FunctionEnd 100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 93 @@ -8232,51 +8237,51 @@ gl_FragCoord origin is upper left 98(inFM0): 69(ptr) FunctionParameter 99(inFM1): 69(ptr) FunctionParameter 101: Label - 1658(r0): 7(ptr) Variable Function - 1662(r1): 37(ptr) Variable Function - 1666(r2): 37(ptr) Variable Function - 1670(r3): 7(ptr) Variable Function - 1674(r4): 37(ptr) Variable Function - 1678(r5): 37(ptr) Variable Function - 1682(r6): 69(ptr) Variable Function - 1686(r7): 69(ptr) Variable Function - 1690(r8): 69(ptr) Variable Function - 1659: 6(float) Load 95(inF1) - 1660: 6(float) Load 94(inF0) - 1661: 6(float) FMul 1659 1660 - Store 1658(r0) 1661 + 1661(r0): 7(ptr) Variable Function + 1665(r1): 37(ptr) Variable Function + 1669(r2): 37(ptr) Variable Function + 1673(r3): 7(ptr) Variable Function + 1677(r4): 37(ptr) Variable Function + 1681(r5): 37(ptr) Variable Function + 1685(r6): 69(ptr) Variable Function + 1689(r7): 69(ptr) Variable Function + 1693(r8): 69(ptr) Variable Function + 1662: 6(float) Load 95(inF1) 1663: 6(float) Load 94(inF0) - 1664: 36(fvec3) Load 96(inFV0) - 1665: 36(fvec3) VectorTimesScalar 1664 1663 - Store 1662(r1) 1665 + 1664: 6(float) FMul 1662 1663 + Store 1661(r0) 1664 + 1666: 6(float) Load 94(inF0) 1667: 36(fvec3) Load 96(inFV0) - 1668: 6(float) Load 94(inF0) - 1669: 36(fvec3) VectorTimesScalar 1667 1668 - Store 1666(r2) 1669 - 1671: 36(fvec3) Load 96(inFV0) - 1672: 36(fvec3) Load 97(inFV1) - 1673: 6(float) Dot 1671 1672 - Store 1670(r3) 1673 - 1675: 36(fvec3) Load 96(inFV0) - 1676: 68 Load 98(inFM0) - 1677: 36(fvec3) VectorTimesMatrix 1675 1676 - Store 1674(r4) 1677 + 1668: 36(fvec3) VectorTimesScalar 1667 1666 + Store 1665(r1) 1668 + 1670: 36(fvec3) Load 96(inFV0) + 1671: 6(float) Load 94(inF0) + 1672: 36(fvec3) VectorTimesScalar 1670 1671 + Store 1669(r2) 1672 + 1674: 36(fvec3) Load 96(inFV0) + 1675: 36(fvec3) Load 97(inFV1) + 1676: 6(float) Dot 1674 1675 + Store 1673(r3) 1676 + 1678: 36(fvec3) Load 96(inFV0) 1679: 68 Load 98(inFM0) - 1680: 36(fvec3) Load 96(inFV0) - 1681: 36(fvec3) MatrixTimesVector 1679 1680 - Store 1678(r5) 1681 - 1683: 6(float) Load 94(inF0) - 1684: 68 Load 98(inFM0) - 1685: 68 MatrixTimesScalar 1684 1683 - Store 1682(r6) 1685 + 1680: 36(fvec3) VectorTimesMatrix 1678 1679 + Store 1677(r4) 1680 + 1682: 68 Load 98(inFM0) + 1683: 36(fvec3) Load 96(inFV0) + 1684: 36(fvec3) MatrixTimesVector 1682 1683 + Store 1681(r5) 1684 + 1686: 6(float) Load 94(inF0) 1687: 68 Load 98(inFM0) - 1688: 6(float) Load 94(inF0) - 1689: 68 MatrixTimesScalar 1687 1688 - Store 1686(r7) 1689 - 1691: 68 Load 99(inFM1) - 1692: 68 Load 98(inFM0) - 1693: 68 MatrixTimesMatrix 1691 1692 - Store 1690(r8) 1693 + 1688: 68 MatrixTimesScalar 1687 1686 + Store 1685(r6) 1688 + 1690: 68 Load 98(inFM0) + 1691: 6(float) Load 94(inF0) + 1692: 68 MatrixTimesScalar 1690 1691 + Store 1689(r7) 1692 + 1694: 68 Load 99(inFM1) + 1695: 68 Load 98(inFM0) + 1696: 68 MatrixTimesMatrix 1694 1695 + Store 1693(r8) 1696 Return FunctionEnd 109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 102 @@ -8287,51 +8292,51 @@ gl_FragCoord origin is upper left 107(inFM0): 77(ptr) FunctionParameter 108(inFM1): 77(ptr) FunctionParameter 110: Label - 1694(r0): 7(ptr) Variable Function - 1698(r1): 49(ptr) Variable Function - 1702(r2): 49(ptr) Variable Function - 1706(r3): 7(ptr) Variable Function - 1710(r4): 49(ptr) Variable Function - 1714(r5): 49(ptr) Variable Function - 1718(r6): 77(ptr) Variable Function - 1722(r7): 77(ptr) Variable Function - 1726(r8): 77(ptr) Variable Function - 1695: 6(float) Load 104(inF1) - 1696: 6(float) Load 103(inF0) - 1697: 6(float) FMul 1695 1696 - Store 1694(r0) 1697 + 1697(r0): 7(ptr) Variable Function + 1701(r1): 49(ptr) Variable Function + 1705(r2): 49(ptr) Variable Function + 1709(r3): 7(ptr) Variable Function + 1713(r4): 49(ptr) Variable Function + 1717(r5): 49(ptr) Variable Function + 1721(r6): 77(ptr) Variable Function + 1725(r7): 77(ptr) Variable Function + 1729(r8): 77(ptr) Variable Function + 1698: 6(float) Load 104(inF1) 1699: 6(float) Load 103(inF0) - 1700: 48(fvec4) Load 105(inFV0) - 1701: 48(fvec4) VectorTimesScalar 1700 1699 - Store 1698(r1) 1701 + 1700: 6(float) FMul 1698 1699 + Store 1697(r0) 1700 + 1702: 6(float) Load 103(inF0) 1703: 48(fvec4) Load 105(inFV0) - 1704: 6(float) Load 103(inF0) - 1705: 48(fvec4) VectorTimesScalar 1703 1704 - Store 1702(r2) 1705 - 1707: 48(fvec4) Load 105(inFV0) - 1708: 48(fvec4) Load 106(inFV1) - 1709: 6(float) Dot 1707 1708 - Store 1706(r3) 1709 - 1711: 48(fvec4) Load 105(inFV0) - 1712: 76 Load 107(inFM0) - 1713: 48(fvec4) VectorTimesMatrix 1711 1712 - Store 1710(r4) 1713 + 1704: 48(fvec4) VectorTimesScalar 1703 1702 + Store 1701(r1) 1704 + 1706: 48(fvec4) Load 105(inFV0) + 1707: 6(float) Load 103(inF0) + 1708: 48(fvec4) VectorTimesScalar 1706 1707 + Store 1705(r2) 1708 + 1710: 48(fvec4) Load 105(inFV0) + 1711: 48(fvec4) Load 106(inFV1) + 1712: 6(float) Dot 1710 1711 + Store 1709(r3) 1712 + 1714: 48(fvec4) Load 105(inFV0) 1715: 76 Load 107(inFM0) - 1716: 48(fvec4) Load 105(inFV0) - 1717: 48(fvec4) MatrixTimesVector 1715 1716 - Store 1714(r5) 1717 - 1719: 6(float) Load 103(inF0) - 1720: 76 Load 107(inFM0) - 1721: 76 MatrixTimesScalar 1720 1719 - Store 1718(r6) 1721 + 1716: 48(fvec4) VectorTimesMatrix 1714 1715 + Store 1713(r4) 1716 + 1718: 76 Load 107(inFM0) + 1719: 48(fvec4) Load 105(inFV0) + 1720: 48(fvec4) MatrixTimesVector 1718 1719 + Store 1717(r5) 1720 + 1722: 6(float) Load 103(inF0) 1723: 76 Load 107(inFM0) - 1724: 6(float) Load 103(inF0) - 1725: 76 MatrixTimesScalar 1723 1724 - Store 1722(r7) 1725 - 1727: 76 Load 108(inFM1) - 1728: 76 Load 107(inFM0) - 1729: 76 MatrixTimesMatrix 1727 1728 - Store 1726(r8) 1729 + 1724: 76 MatrixTimesScalar 1723 1722 + Store 1721(r6) 1724 + 1726: 76 Load 107(inFM0) + 1727: 6(float) Load 103(inF0) + 1728: 76 MatrixTimesScalar 1726 1727 + Store 1725(r7) 1728 + 1730: 76 Load 108(inFM1) + 1731: 76 Load 107(inFM0) + 1732: 76 MatrixTimesMatrix 1730 1731 + Store 1729(r8) 1732 Return FunctionEnd 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 119 @@ -8345,90 +8350,90 @@ gl_FragCoord origin is upper left 127(inFM3x4): 116(ptr) FunctionParameter 128(inFM2x4): 118(ptr) FunctionParameter 130: Label - 1730(r00): 7(ptr) Variable Function - 1734(r01): 25(ptr) Variable Function - 1738(r02): 37(ptr) Variable Function - 1742(r03): 25(ptr) Variable Function - 1746(r04): 37(ptr) Variable Function - 1750(r05): 7(ptr) Variable Function - 1754(r06): 7(ptr) Variable Function - 1758(r07): 37(ptr) Variable Function - 1762(r08): 25(ptr) Variable Function - 1766(r09): 25(ptr) Variable Function - 1770(r10): 37(ptr) Variable Function - 1774(r11): 112(ptr) Variable Function - 1778(r12): 114(ptr) Variable Function - 1782(r13): 61(ptr) Variable Function - 1786(r14): 112(ptr) Variable Function - 1790(r15): 118(ptr) Variable Function - 1794(r16): 116(ptr) Variable Function - 1731: 6(float) Load 121(inF1) - 1732: 6(float) Load 120(inF0) - 1733: 6(float) FMul 1731 1732 - Store 1730(r00) 1733 + 1733(r00): 7(ptr) Variable Function + 1737(r01): 25(ptr) Variable Function + 1741(r02): 37(ptr) Variable Function + 1745(r03): 25(ptr) Variable Function + 1749(r04): 37(ptr) Variable Function + 1753(r05): 7(ptr) Variable Function + 1757(r06): 7(ptr) Variable Function + 1761(r07): 37(ptr) Variable Function + 1765(r08): 25(ptr) Variable Function + 1769(r09): 25(ptr) Variable Function + 1773(r10): 37(ptr) Variable Function + 1777(r11): 112(ptr) Variable Function + 1781(r12): 114(ptr) Variable Function + 1785(r13): 61(ptr) Variable Function + 1789(r14): 112(ptr) Variable Function + 1793(r15): 118(ptr) Variable Function + 1797(r16): 116(ptr) Variable Function + 1734: 6(float) Load 121(inF1) 1735: 6(float) Load 120(inF0) - 1736: 24(fvec2) Load 122(inFV2) - 1737: 24(fvec2) VectorTimesScalar 1736 1735 - Store 1734(r01) 1737 - 1739: 6(float) Load 120(inF0) - 1740: 36(fvec3) Load 123(inFV3) - 1741: 36(fvec3) VectorTimesScalar 1740 1739 - Store 1738(r02) 1741 - 1743: 24(fvec2) Load 122(inFV2) - 1744: 6(float) Load 120(inF0) - 1745: 24(fvec2) VectorTimesScalar 1743 1744 - Store 1742(r03) 1745 - 1747: 36(fvec3) Load 123(inFV3) - 1748: 6(float) Load 120(inF0) - 1749: 36(fvec3) VectorTimesScalar 1747 1748 - Store 1746(r04) 1749 - 1751: 24(fvec2) Load 122(inFV2) - 1752: 24(fvec2) Load 122(inFV2) - 1753: 6(float) Dot 1751 1752 - Store 1750(r05) 1753 - 1755: 36(fvec3) Load 123(inFV3) - 1756: 36(fvec3) Load 123(inFV3) - 1757: 6(float) Dot 1755 1756 - Store 1754(r06) 1757 - 1759: 111 Load 124(inFM2x3) - 1760: 24(fvec2) Load 122(inFV2) - 1761: 36(fvec3) MatrixTimesVector 1759 1760 - Store 1758(r07) 1761 - 1763: 113 Load 125(inFM3x2) - 1764: 36(fvec3) Load 123(inFV3) - 1765: 24(fvec2) MatrixTimesVector 1763 1764 - Store 1762(r08) 1765 + 1736: 6(float) FMul 1734 1735 + Store 1733(r00) 1736 + 1738: 6(float) Load 120(inF0) + 1739: 24(fvec2) Load 122(inFV2) + 1740: 24(fvec2) VectorTimesScalar 1739 1738 + Store 1737(r01) 1740 + 1742: 6(float) Load 120(inF0) + 1743: 36(fvec3) Load 123(inFV3) + 1744: 36(fvec3) VectorTimesScalar 1743 1742 + Store 1741(r02) 1744 + 1746: 24(fvec2) Load 122(inFV2) + 1747: 6(float) Load 120(inF0) + 1748: 24(fvec2) VectorTimesScalar 1746 1747 + Store 1745(r03) 1748 + 1750: 36(fvec3) Load 123(inFV3) + 1751: 6(float) Load 120(inF0) + 1752: 36(fvec3) VectorTimesScalar 1750 1751 + Store 1749(r04) 1752 + 1754: 24(fvec2) Load 122(inFV2) + 1755: 24(fvec2) Load 122(inFV2) + 1756: 6(float) Dot 1754 1755 + Store 1753(r05) 1756 + 1758: 36(fvec3) Load 123(inFV3) + 1759: 36(fvec3) Load 123(inFV3) + 1760: 6(float) Dot 1758 1759 + Store 1757(r06) 1760 + 1762: 111 Load 124(inFM2x3) + 1763: 24(fvec2) Load 122(inFV2) + 1764: 36(fvec3) MatrixTimesVector 1762 1763 + Store 1761(r07) 1764 + 1766: 113 Load 125(inFM3x2) 1767: 36(fvec3) Load 123(inFV3) - 1768: 111 Load 124(inFM2x3) - 1769: 24(fvec2) VectorTimesMatrix 1767 1768 - Store 1766(r09) 1769 - 1771: 24(fvec2) Load 122(inFV2) - 1772: 113 Load 125(inFM3x2) - 1773: 36(fvec3) VectorTimesMatrix 1771 1772 - Store 1770(r10) 1773 - 1775: 6(float) Load 120(inF0) - 1776: 111 Load 124(inFM2x3) - 1777: 111 MatrixTimesScalar 1776 1775 - Store 1774(r11) 1777 - 1779: 6(float) Load 120(inF0) - 1780: 113 Load 125(inFM3x2) - 1781: 113 MatrixTimesScalar 1780 1779 - Store 1778(r12) 1781 + 1768: 24(fvec2) MatrixTimesVector 1766 1767 + Store 1765(r08) 1768 + 1770: 36(fvec3) Load 123(inFV3) + 1771: 111 Load 124(inFM2x3) + 1772: 24(fvec2) VectorTimesMatrix 1770 1771 + Store 1769(r09) 1772 + 1774: 24(fvec2) Load 122(inFV2) + 1775: 113 Load 125(inFM3x2) + 1776: 36(fvec3) VectorTimesMatrix 1774 1775 + Store 1773(r10) 1776 + 1778: 6(float) Load 120(inF0) + 1779: 111 Load 124(inFM2x3) + 1780: 111 MatrixTimesScalar 1779 1778 + Store 1777(r11) 1780 + 1782: 6(float) Load 120(inF0) 1783: 113 Load 125(inFM3x2) - 1784: 111 Load 124(inFM2x3) - 1785: 60 MatrixTimesMatrix 1783 1784 - Store 1782(r13) 1785 - 1787: 68 Load 126(inFM3x3) - 1788: 111 Load 124(inFM2x3) - 1789: 111 MatrixTimesMatrix 1787 1788 - Store 1786(r14) 1789 - 1791: 115 Load 127(inFM3x4) - 1792: 111 Load 124(inFM2x3) - 1793: 117 MatrixTimesMatrix 1791 1792 - Store 1790(r15) 1793 - 1795: 117 Load 128(inFM2x4) - 1796: 113 Load 125(inFM3x2) - 1797: 115 MatrixTimesMatrix 1795 1796 - Store 1794(r16) 1797 + 1784: 113 MatrixTimesScalar 1783 1782 + Store 1781(r12) 1784 + 1786: 113 Load 125(inFM3x2) + 1787: 111 Load 124(inFM2x3) + 1788: 60 MatrixTimesMatrix 1786 1787 + Store 1785(r13) 1788 + 1790: 68 Load 126(inFM3x3) + 1791: 111 Load 124(inFM2x3) + 1792: 111 MatrixTimesMatrix 1790 1791 + Store 1789(r14) 1792 + 1794: 115 Load 127(inFM3x4) + 1795: 111 Load 124(inFM2x3) + 1796: 117 MatrixTimesMatrix 1794 1795 + Store 1793(r15) 1796 + 1798: 117 Load 128(inFM2x4) + 1799: 113 Load 125(inFM3x2) + 1800: 115 MatrixTimesMatrix 1798 1799 + Store 1797(r16) 1800 Return FunctionEnd diff --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out new file mode 100644 index 00000000..f5ba86b0 --- /dev/null +++ b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out @@ -0,0 +1,184 @@ +hlsl.intrinsics.promote.down.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:15 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:15 Function Parameters: +0:? Sequence +0:16 Sequence +0:16 move second child to first child (temp uint) +0:16 'r00' (temp uint) +0:16 bitCount (temp uint) +0:16 Convert float to uint (temp uint) +0:16 f: direct index for structure (layout(offset=8 ) uniform float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2}) +0:16 Constant: +0:16 2 (const uint) +0:17 Sequence +0:17 move second child to first child (temp 2-component vector of uint) +0:17 'r01' (temp 2-component vector of uint) +0:17 bitFieldReverse (temp 2-component vector of uint) +0:17 Convert float to uint (temp 2-component vector of uint) +0:17 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:17 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2}) +0:17 Constant: +0:17 6 (const uint) +0:20 move second child to first child (temp 4-component vector of float) +0:20 color: direct index for structure (temp 4-component vector of float) +0:20 'ps_output' (temp structure{temp 4-component vector of float color}) +0:20 Constant: +0:20 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:21 Sequence +0:21 Sequence +0:21 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:21 color: direct index for structure (temp 4-component vector of float) +0:21 'ps_output' (temp structure{temp 4-component vector of float color}) +0:21 Constant: +0:21 0 (const int) +0:21 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:15 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:15 Function Parameters: +0:? Sequence +0:16 Sequence +0:16 move second child to first child (temp uint) +0:16 'r00' (temp uint) +0:16 bitCount (temp uint) +0:16 Convert float to uint (temp uint) +0:16 f: direct index for structure (layout(offset=8 ) uniform float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2}) +0:16 Constant: +0:16 2 (const uint) +0:17 Sequence +0:17 move second child to first child (temp 2-component vector of uint) +0:17 'r01' (temp 2-component vector of uint) +0:17 bitFieldReverse (temp 2-component vector of uint) +0:17 Convert float to uint (temp 2-component vector of uint) +0:17 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:17 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2}) +0:17 Constant: +0:17 6 (const uint) +0:20 move second child to first child (temp 4-component vector of float) +0:20 color: direct index for structure (temp 4-component vector of float) +0:20 'ps_output' (temp structure{temp 4-component vector of float color}) +0:20 Constant: +0:20 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:21 Sequence +0:21 Sequence +0:21 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:21 color: direct index for structure (temp 4-component vector of float) +0:21 'ps_output' (temp structure{temp 4-component vector of float color}) +0:21 Constant: +0:21 0 (const int) +0:21 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 45 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 41 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 14 "$Global" + MemberName 14($Global) 0 "i" + MemberName 14($Global) 1 "u" + MemberName 14($Global) 2 "f" + MemberName 14($Global) 3 "b" + MemberName 14($Global) 4 "i2" + MemberName 14($Global) 5 "u2" + MemberName 14($Global) 6 "f2" + MemberName 14($Global) 7 "b2" + Name 16 "" + Name 24 "r01" + Name 32 "PS_OUTPUT" + MemberName 32(PS_OUTPUT) 0 "color" + Name 34 "ps_output" + Name 41 "color" + MemberDecorate 14($Global) 0 Offset 0 + MemberDecorate 14($Global) 1 Offset 4 + MemberDecorate 14($Global) 2 Offset 8 + MemberDecorate 14($Global) 3 Offset 12 + MemberDecorate 14($Global) 4 Offset 16 + MemberDecorate 14($Global) 5 Offset 24 + MemberDecorate 14($Global) 6 Offset 32 + MemberDecorate 14($Global) 7 Offset 40 + Decorate 14($Global) Block + Decorate 16 DescriptorSet 0 + Decorate 41(color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeInt 32 1 + 10: TypeFloat 32 + 11: TypeVector 9(int) 2 + 12: TypeVector 6(int) 2 + 13: TypeVector 10(float) 2 + 14($Global): TypeStruct 9(int) 6(int) 10(float) 6(int) 11(ivec2) 12(ivec2) 13(fvec2) 12(ivec2) + 15: TypePointer Uniform 14($Global) + 16: 15(ptr) Variable Uniform + 17: 9(int) Constant 2 + 18: TypePointer Uniform 10(float) + 23: TypePointer Function 12(ivec2) + 25: 9(int) Constant 6 + 26: TypePointer Uniform 13(fvec2) + 31: TypeVector 10(float) 4 + 32(PS_OUTPUT): TypeStruct 31(fvec4) + 33: TypePointer Function 32(PS_OUTPUT) + 35: 9(int) Constant 0 + 36: 10(float) Constant 0 + 37: 31(fvec4) ConstantComposite 36 36 36 36 + 38: TypePointer Function 31(fvec4) + 40: TypePointer Output 31(fvec4) + 41(color): 40(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 24(r01): 23(ptr) Variable Function + 34(ps_output): 33(ptr) Variable Function + 19: 18(ptr) AccessChain 16 17 + 20: 10(float) Load 19 + 21: 6(int) ConvertFToU 20 + 22: 6(int) BitCount 21 + Store 8(r00) 22 + 27: 26(ptr) AccessChain 16 25 + 28: 13(fvec2) Load 27 + 29: 12(ivec2) ConvertFToU 28 + 30: 12(ivec2) BitReverse 29 + Store 24(r01) 30 + 39: 38(ptr) AccessChain 34(ps_output) 35 + Store 39 37 + 42: 38(ptr) AccessChain 34(ps_output) 35 + 43: 31(fvec4) Load 42 + Store 41(color) 43 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out new file mode 100644 index 00000000..82b9e686 --- /dev/null +++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out @@ -0,0 +1,1313 @@ +hlsl.intrinsics.promote.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp float) +0:23 'r00' (temp float) +0:23 max (temp float) +0:23 Convert bool to float (temp float) +0:23 b: direct index for structure (layout(offset=12 ) uniform bool) +0:23 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:23 Constant: +0:23 3 (const uint) +0:23 f: direct index for structure (layout(offset=8 ) uniform float) +0:23 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:23 Constant: +0:23 2 (const uint) +0:24 Sequence +0:24 move second child to first child (temp uint) +0:24 'r01' (temp uint) +0:24 max (temp uint) +0:24 Convert bool to uint (temp uint) +0:24 b: direct index for structure (layout(offset=12 ) uniform bool) +0:24 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:24 Constant: +0:24 3 (const uint) +0:24 u: direct index for structure (layout(offset=4 ) uniform uint) +0:24 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:24 Constant: +0:24 1 (const uint) +0:25 Sequence +0:25 move second child to first child (temp int) +0:25 'r02' (temp int) +0:25 max (temp int) +0:25 Convert bool to int (temp int) +0:25 b: direct index for structure (layout(offset=12 ) uniform bool) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:25 Constant: +0:25 3 (const uint) +0:25 i: direct index for structure (layout(offset=0 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:25 Constant: +0:25 0 (const uint) +0:26 Sequence +0:26 move second child to first child (temp float) +0:26 'r03' (temp float) +0:26 max (temp float) +0:26 Convert int to float (temp float) +0:26 i: direct index for structure (layout(offset=0 ) uniform int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:26 Constant: +0:26 0 (const uint) +0:26 f: direct index for structure (layout(offset=8 ) uniform float) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:26 Constant: +0:26 2 (const uint) +0:27 Sequence +0:27 move second child to first child (temp float) +0:27 'r04' (temp float) +0:27 max (temp float) +0:27 Convert uint to float (temp float) +0:27 u: direct index for structure (layout(offset=4 ) uniform uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:27 Constant: +0:27 1 (const uint) +0:27 f: direct index for structure (layout(offset=8 ) uniform float) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:27 Constant: +0:27 2 (const uint) +0:29 Sequence +0:29 move second child to first child (temp 2-component vector of float) +0:29 'r10' (temp 2-component vector of float) +0:29 max (temp 2-component vector of float) +0:29 Convert bool to float (temp 2-component vector of float) +0:29 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:29 Constant: +0:29 7 (const uint) +0:29 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:29 Constant: +0:29 6 (const uint) +0:30 Sequence +0:30 move second child to first child (temp 2-component vector of uint) +0:30 'r11' (temp 2-component vector of uint) +0:30 max (temp 2-component vector of uint) +0:30 Convert bool to uint (temp 2-component vector of uint) +0:30 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:30 Constant: +0:30 7 (const uint) +0:30 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:30 Constant: +0:30 5 (const uint) +0:31 Sequence +0:31 move second child to first child (temp 2-component vector of int) +0:31 'r12' (temp 2-component vector of int) +0:31 max (temp 2-component vector of int) +0:31 Convert bool to int (temp 2-component vector of int) +0:31 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:31 Constant: +0:31 7 (const uint) +0:31 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:31 Constant: +0:31 4 (const uint) +0:32 Sequence +0:32 move second child to first child (temp 2-component vector of float) +0:32 'r13' (temp 2-component vector of float) +0:32 max (temp 2-component vector of float) +0:32 Convert int to float (temp 2-component vector of float) +0:32 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:32 Constant: +0:32 4 (const uint) +0:32 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:32 Constant: +0:32 6 (const uint) +0:33 Sequence +0:33 move second child to first child (temp 2-component vector of float) +0:33 'r14' (temp 2-component vector of float) +0:33 max (temp 2-component vector of float) +0:33 Convert uint to float (temp 2-component vector of float) +0:33 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:33 Constant: +0:33 5 (const uint) +0:33 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:33 Constant: +0:33 6 (const uint) +0:35 Sequence +0:35 move second child to first child (temp 2-component vector of float) +0:35 'r20' (temp 2-component vector of float) +0:35 clamp (temp 2-component vector of float) +0:35 Convert int to float (temp 2-component vector of float) +0:35 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:35 Constant: +0:35 4 (const uint) +0:35 Convert uint to float (temp 2-component vector of float) +0:35 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:35 Constant: +0:35 5 (const uint) +0:35 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:35 Constant: +0:35 6 (const uint) +0:36 Sequence +0:36 move second child to first child (temp 2-component vector of uint) +0:36 'r21' (temp 2-component vector of uint) +0:36 clamp (temp 2-component vector of uint) +0:36 Convert bool to uint (temp 2-component vector of uint) +0:36 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:36 Constant: +0:36 7 (const uint) +0:36 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:36 Constant: +0:36 5 (const uint) +0:36 Convert bool to uint (temp 2-component vector of uint) +0:36 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:36 Constant: +0:36 7 (const uint) +0:37 Sequence +0:37 move second child to first child (temp 2-component vector of float) +0:37 'r22' (temp 2-component vector of float) +0:37 clamp (temp 2-component vector of float) +0:37 Convert bool to float (temp 2-component vector of float) +0:37 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 7 (const uint) +0:37 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 6 (const uint) +0:37 Convert bool to float (temp 2-component vector of float) +0:37 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 7 (const uint) +0:40 Sequence +0:40 move second child to first child (temp 2-component vector of float) +0:40 'r30' (temp 2-component vector of float) +0:40 max (temp 2-component vector of float) +0:40 Construct vec2 (in 2-component vector of float) +0:40 Convert bool to float (temp float) +0:40 b: direct index for structure (layout(offset=12 ) uniform bool) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:40 Constant: +0:40 3 (const uint) +0:40 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:40 Constant: +0:40 6 (const uint) +0:41 Sequence +0:41 move second child to first child (temp 2-component vector of uint) +0:41 'r31' (temp 2-component vector of uint) +0:41 max (temp 2-component vector of uint) +0:41 Construct uvec2 (in 2-component vector of uint) +0:41 Convert bool to uint (temp uint) +0:41 b: direct index for structure (layout(offset=12 ) uniform bool) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:41 Constant: +0:41 3 (const uint) +0:41 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:41 Constant: +0:41 5 (const uint) +0:42 Sequence +0:42 move second child to first child (temp 2-component vector of int) +0:42 'r32' (temp 2-component vector of int) +0:42 max (temp 2-component vector of int) +0:42 Construct ivec2 (in 2-component vector of int) +0:42 Convert bool to int (temp int) +0:42 b: direct index for structure (layout(offset=12 ) uniform bool) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:42 Constant: +0:42 3 (const uint) +0:42 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:42 Constant: +0:42 4 (const uint) +0:43 Sequence +0:43 move second child to first child (temp 2-component vector of float) +0:43 'r33' (temp 2-component vector of float) +0:43 max (temp 2-component vector of float) +0:43 Construct vec2 (in 2-component vector of float) +0:43 Convert int to float (temp float) +0:43 i: direct index for structure (layout(offset=0 ) uniform int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:43 Constant: +0:43 0 (const uint) +0:43 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:43 Constant: +0:43 6 (const uint) +0:44 Sequence +0:44 move second child to first child (temp 2-component vector of float) +0:44 'r34' (temp 2-component vector of float) +0:44 max (temp 2-component vector of float) +0:44 Construct vec2 (in 2-component vector of float) +0:44 Convert uint to float (temp float) +0:44 u: direct index for structure (layout(offset=4 ) uniform uint) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:44 Constant: +0:44 1 (const uint) +0:44 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:44 Constant: +0:44 6 (const uint) +0:46 Sequence +0:46 move second child to first child (temp 2-component vector of float) +0:46 'r40' (temp 2-component vector of float) +0:46 clamp (temp 2-component vector of float) +0:46 Construct vec2 (in 2-component vector of float) +0:46 Convert int to float (temp float) +0:46 i: direct index for structure (layout(offset=0 ) uniform int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:46 Constant: +0:46 0 (const uint) +0:46 Convert uint to float (temp 2-component vector of float) +0:46 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:46 Constant: +0:46 5 (const uint) +0:46 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:46 Constant: +0:46 6 (const uint) +0:47 Sequence +0:47 move second child to first child (temp 2-component vector of uint) +0:47 'r41' (temp 2-component vector of uint) +0:47 clamp (temp 2-component vector of uint) +0:47 Convert bool to uint (temp 2-component vector of uint) +0:47 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:47 Constant: +0:47 7 (const uint) +0:47 Construct uvec2 (in 2-component vector of uint) +0:47 u: direct index for structure (layout(offset=4 ) uniform uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:47 Constant: +0:47 1 (const uint) +0:47 Convert bool to uint (temp 2-component vector of uint) +0:47 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:47 Constant: +0:47 7 (const uint) +0:48 Sequence +0:48 move second child to first child (temp 2-component vector of float) +0:48 'r42' (temp 2-component vector of float) +0:48 clamp (temp 2-component vector of float) +0:48 Convert bool to float (temp 2-component vector of float) +0:48 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:48 Constant: +0:48 7 (const uint) +0:48 Construct vec2 (in 2-component vector of float) +0:48 f: direct index for structure (layout(offset=8 ) uniform float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:48 Constant: +0:48 2 (const uint) +0:48 Construct vec2 (in 2-component vector of float) +0:48 Convert bool to float (temp float) +0:48 b: direct index for structure (layout(offset=12 ) uniform bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:48 Constant: +0:48 3 (const uint) +0:49 Sequence +0:49 move second child to first child (temp 2-component vector of int) +0:49 'r43' (temp 2-component vector of int) +0:49 Convert uint to int (temp 2-component vector of int) +0:49 clamp (temp 2-component vector of uint) +0:49 Construct uvec2 (in 2-component vector of uint) +0:49 Convert int to uint (temp uint) +0:49 i: direct index for structure (layout(offset=0 ) uniform int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:49 Constant: +0:49 0 (const uint) +0:49 Convert int to uint (temp 2-component vector of uint) +0:49 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:49 Constant: +0:49 4 (const uint) +0:49 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:49 Constant: +0:49 5 (const uint) +0:51 Sequence +0:51 move second child to first child (temp float) +0:51 'r50' (temp float) +0:51 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:51 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:51 Convert uint to int (temp int) +0:51 upos: direct index for structure (layout(offset=48 ) uniform uint) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:51 Constant: +0:51 8 (const uint) +0:52 Sequence +0:52 move second child to first child (temp float) +0:52 'r51' (temp float) +0:52 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:52 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:52 Convert float to int (temp int) +0:52 fpos: direct index for structure (layout(offset=52 ) uniform float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:52 Constant: +0:52 9 (const uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 textureSize (temp uint) +0:70 'g_tTex1df4' (uniform texture1D) +0:70 move second child to first child (temp int) +0:70 'WidthI' (temp int) +0:70 Convert uint to int (temp int) +0:70 'sizeQueryTemp' (temp uint) +0:71 Sequence +0:71 move second child to first child (temp uint) +0:71 'sizeQueryTemp' (temp uint) +0:71 textureSize (temp uint) +0:71 'g_tTex1df4' (uniform texture1D) +0:71 Constant: +0:71 6 (const uint) +0:71 move second child to first child (temp int) +0:71 'WidthI' (temp int) +0:71 Convert uint to int (temp int) +0:71 'sizeQueryTemp' (temp uint) +0:71 move second child to first child (temp uint) +0:71 'NumberOfLevelsU' (temp uint) +0:71 textureQueryLevels (temp uint) +0:71 'g_tTex1df4' (uniform texture1D) +0:72 Sequence +0:72 move second child to first child (temp uint) +0:72 'sizeQueryTemp' (temp uint) +0:72 textureSize (temp uint) +0:72 'g_tTex1df4' (uniform texture1D) +0:72 Constant: +0:72 6 (const uint) +0:72 move second child to first child (temp uint) +0:72 'WidthU' (temp uint) +0:72 'sizeQueryTemp' (temp uint) +0:72 move second child to first child (temp int) +0:72 'NumberOfLevelsI' (temp int) +0:72 Convert uint to int (temp int) +0:72 textureQueryLevels (temp uint) +0:72 'g_tTex1df4' (uniform texture1D) +0:73 Sequence +0:73 move second child to first child (temp uint) +0:73 'sizeQueryTemp' (temp uint) +0:73 textureSize (temp uint) +0:73 'g_tTex1df4' (uniform texture1D) +0:73 Constant: +0:73 6 (const uint) +0:73 move second child to first child (temp int) +0:73 'WidthI' (temp int) +0:73 Convert uint to int (temp int) +0:73 'sizeQueryTemp' (temp uint) +0:73 move second child to first child (temp int) +0:73 'NumberOfLevelsI' (temp int) +0:73 Convert uint to int (temp int) +0:73 textureQueryLevels (temp uint) +0:73 'g_tTex1df4' (uniform texture1D) +0:77 move second child to first child (temp 4-component vector of float) +0:77 color: direct index for structure (temp 4-component vector of float) +0:77 'ps_output' (temp structure{temp 4-component vector of float color}) +0:77 Constant: +0:77 0 (const int) +0:77 Construct vec4 (temp 4-component vector of float) +0:77 'r00' (temp float) +0:78 Sequence +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:78 color: direct index for structure (temp 4-component vector of float) +0:78 'ps_output' (temp structure{temp 4-component vector of float color}) +0:78 Constant: +0:78 0 (const int) +0:78 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTex1df4' (uniform texture1D) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp float) +0:23 'r00' (temp float) +0:23 max (temp float) +0:23 Convert bool to float (temp float) +0:23 b: direct index for structure (layout(offset=12 ) uniform bool) +0:23 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:23 Constant: +0:23 3 (const uint) +0:23 f: direct index for structure (layout(offset=8 ) uniform float) +0:23 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:23 Constant: +0:23 2 (const uint) +0:24 Sequence +0:24 move second child to first child (temp uint) +0:24 'r01' (temp uint) +0:24 max (temp uint) +0:24 Convert bool to uint (temp uint) +0:24 b: direct index for structure (layout(offset=12 ) uniform bool) +0:24 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:24 Constant: +0:24 3 (const uint) +0:24 u: direct index for structure (layout(offset=4 ) uniform uint) +0:24 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:24 Constant: +0:24 1 (const uint) +0:25 Sequence +0:25 move second child to first child (temp int) +0:25 'r02' (temp int) +0:25 max (temp int) +0:25 Convert bool to int (temp int) +0:25 b: direct index for structure (layout(offset=12 ) uniform bool) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:25 Constant: +0:25 3 (const uint) +0:25 i: direct index for structure (layout(offset=0 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:25 Constant: +0:25 0 (const uint) +0:26 Sequence +0:26 move second child to first child (temp float) +0:26 'r03' (temp float) +0:26 max (temp float) +0:26 Convert int to float (temp float) +0:26 i: direct index for structure (layout(offset=0 ) uniform int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:26 Constant: +0:26 0 (const uint) +0:26 f: direct index for structure (layout(offset=8 ) uniform float) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:26 Constant: +0:26 2 (const uint) +0:27 Sequence +0:27 move second child to first child (temp float) +0:27 'r04' (temp float) +0:27 max (temp float) +0:27 Convert uint to float (temp float) +0:27 u: direct index for structure (layout(offset=4 ) uniform uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:27 Constant: +0:27 1 (const uint) +0:27 f: direct index for structure (layout(offset=8 ) uniform float) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:27 Constant: +0:27 2 (const uint) +0:29 Sequence +0:29 move second child to first child (temp 2-component vector of float) +0:29 'r10' (temp 2-component vector of float) +0:29 max (temp 2-component vector of float) +0:29 Convert bool to float (temp 2-component vector of float) +0:29 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:29 Constant: +0:29 7 (const uint) +0:29 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:29 Constant: +0:29 6 (const uint) +0:30 Sequence +0:30 move second child to first child (temp 2-component vector of uint) +0:30 'r11' (temp 2-component vector of uint) +0:30 max (temp 2-component vector of uint) +0:30 Convert bool to uint (temp 2-component vector of uint) +0:30 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:30 Constant: +0:30 7 (const uint) +0:30 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:30 Constant: +0:30 5 (const uint) +0:31 Sequence +0:31 move second child to first child (temp 2-component vector of int) +0:31 'r12' (temp 2-component vector of int) +0:31 max (temp 2-component vector of int) +0:31 Convert bool to int (temp 2-component vector of int) +0:31 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:31 Constant: +0:31 7 (const uint) +0:31 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:31 Constant: +0:31 4 (const uint) +0:32 Sequence +0:32 move second child to first child (temp 2-component vector of float) +0:32 'r13' (temp 2-component vector of float) +0:32 max (temp 2-component vector of float) +0:32 Convert int to float (temp 2-component vector of float) +0:32 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:32 Constant: +0:32 4 (const uint) +0:32 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:32 Constant: +0:32 6 (const uint) +0:33 Sequence +0:33 move second child to first child (temp 2-component vector of float) +0:33 'r14' (temp 2-component vector of float) +0:33 max (temp 2-component vector of float) +0:33 Convert uint to float (temp 2-component vector of float) +0:33 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:33 Constant: +0:33 5 (const uint) +0:33 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:33 Constant: +0:33 6 (const uint) +0:35 Sequence +0:35 move second child to first child (temp 2-component vector of float) +0:35 'r20' (temp 2-component vector of float) +0:35 clamp (temp 2-component vector of float) +0:35 Convert int to float (temp 2-component vector of float) +0:35 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:35 Constant: +0:35 4 (const uint) +0:35 Convert uint to float (temp 2-component vector of float) +0:35 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:35 Constant: +0:35 5 (const uint) +0:35 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:35 Constant: +0:35 6 (const uint) +0:36 Sequence +0:36 move second child to first child (temp 2-component vector of uint) +0:36 'r21' (temp 2-component vector of uint) +0:36 clamp (temp 2-component vector of uint) +0:36 Convert bool to uint (temp 2-component vector of uint) +0:36 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:36 Constant: +0:36 7 (const uint) +0:36 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:36 Constant: +0:36 5 (const uint) +0:36 Convert bool to uint (temp 2-component vector of uint) +0:36 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:36 Constant: +0:36 7 (const uint) +0:37 Sequence +0:37 move second child to first child (temp 2-component vector of float) +0:37 'r22' (temp 2-component vector of float) +0:37 clamp (temp 2-component vector of float) +0:37 Convert bool to float (temp 2-component vector of float) +0:37 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 7 (const uint) +0:37 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 6 (const uint) +0:37 Convert bool to float (temp 2-component vector of float) +0:37 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 7 (const uint) +0:40 Sequence +0:40 move second child to first child (temp 2-component vector of float) +0:40 'r30' (temp 2-component vector of float) +0:40 max (temp 2-component vector of float) +0:40 Construct vec2 (in 2-component vector of float) +0:40 Convert bool to float (temp float) +0:40 b: direct index for structure (layout(offset=12 ) uniform bool) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:40 Constant: +0:40 3 (const uint) +0:40 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:40 Constant: +0:40 6 (const uint) +0:41 Sequence +0:41 move second child to first child (temp 2-component vector of uint) +0:41 'r31' (temp 2-component vector of uint) +0:41 max (temp 2-component vector of uint) +0:41 Construct uvec2 (in 2-component vector of uint) +0:41 Convert bool to uint (temp uint) +0:41 b: direct index for structure (layout(offset=12 ) uniform bool) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:41 Constant: +0:41 3 (const uint) +0:41 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:41 Constant: +0:41 5 (const uint) +0:42 Sequence +0:42 move second child to first child (temp 2-component vector of int) +0:42 'r32' (temp 2-component vector of int) +0:42 max (temp 2-component vector of int) +0:42 Construct ivec2 (in 2-component vector of int) +0:42 Convert bool to int (temp int) +0:42 b: direct index for structure (layout(offset=12 ) uniform bool) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:42 Constant: +0:42 3 (const uint) +0:42 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:42 Constant: +0:42 4 (const uint) +0:43 Sequence +0:43 move second child to first child (temp 2-component vector of float) +0:43 'r33' (temp 2-component vector of float) +0:43 max (temp 2-component vector of float) +0:43 Construct vec2 (in 2-component vector of float) +0:43 Convert int to float (temp float) +0:43 i: direct index for structure (layout(offset=0 ) uniform int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:43 Constant: +0:43 0 (const uint) +0:43 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:43 Constant: +0:43 6 (const uint) +0:44 Sequence +0:44 move second child to first child (temp 2-component vector of float) +0:44 'r34' (temp 2-component vector of float) +0:44 max (temp 2-component vector of float) +0:44 Construct vec2 (in 2-component vector of float) +0:44 Convert uint to float (temp float) +0:44 u: direct index for structure (layout(offset=4 ) uniform uint) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:44 Constant: +0:44 1 (const uint) +0:44 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:44 Constant: +0:44 6 (const uint) +0:46 Sequence +0:46 move second child to first child (temp 2-component vector of float) +0:46 'r40' (temp 2-component vector of float) +0:46 clamp (temp 2-component vector of float) +0:46 Construct vec2 (in 2-component vector of float) +0:46 Convert int to float (temp float) +0:46 i: direct index for structure (layout(offset=0 ) uniform int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:46 Constant: +0:46 0 (const uint) +0:46 Convert uint to float (temp 2-component vector of float) +0:46 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:46 Constant: +0:46 5 (const uint) +0:46 f2: direct index for structure (layout(offset=32 ) uniform 2-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:46 Constant: +0:46 6 (const uint) +0:47 Sequence +0:47 move second child to first child (temp 2-component vector of uint) +0:47 'r41' (temp 2-component vector of uint) +0:47 clamp (temp 2-component vector of uint) +0:47 Convert bool to uint (temp 2-component vector of uint) +0:47 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:47 Constant: +0:47 7 (const uint) +0:47 Construct uvec2 (in 2-component vector of uint) +0:47 u: direct index for structure (layout(offset=4 ) uniform uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:47 Constant: +0:47 1 (const uint) +0:47 Convert bool to uint (temp 2-component vector of uint) +0:47 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:47 Constant: +0:47 7 (const uint) +0:48 Sequence +0:48 move second child to first child (temp 2-component vector of float) +0:48 'r42' (temp 2-component vector of float) +0:48 clamp (temp 2-component vector of float) +0:48 Convert bool to float (temp 2-component vector of float) +0:48 b2: direct index for structure (layout(offset=40 ) uniform 2-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:48 Constant: +0:48 7 (const uint) +0:48 Construct vec2 (in 2-component vector of float) +0:48 f: direct index for structure (layout(offset=8 ) uniform float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:48 Constant: +0:48 2 (const uint) +0:48 Construct vec2 (in 2-component vector of float) +0:48 Convert bool to float (temp float) +0:48 b: direct index for structure (layout(offset=12 ) uniform bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:48 Constant: +0:48 3 (const uint) +0:49 Sequence +0:49 move second child to first child (temp 2-component vector of int) +0:49 'r43' (temp 2-component vector of int) +0:49 Convert uint to int (temp 2-component vector of int) +0:49 clamp (temp 2-component vector of uint) +0:49 Construct uvec2 (in 2-component vector of uint) +0:49 Convert int to uint (temp uint) +0:49 i: direct index for structure (layout(offset=0 ) uniform int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:49 Constant: +0:49 0 (const uint) +0:49 Convert int to uint (temp 2-component vector of uint) +0:49 i2: direct index for structure (layout(offset=16 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:49 Constant: +0:49 4 (const uint) +0:49 u2: direct index for structure (layout(offset=24 ) uniform 2-component vector of uint) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:49 Constant: +0:49 5 (const uint) +0:51 Sequence +0:51 move second child to first child (temp float) +0:51 'r50' (temp float) +0:51 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:51 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:51 Convert uint to int (temp int) +0:51 upos: direct index for structure (layout(offset=48 ) uniform uint) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:51 Constant: +0:51 8 (const uint) +0:52 Sequence +0:52 move second child to first child (temp float) +0:52 'r51' (temp float) +0:52 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:52 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:52 Convert float to int (temp int) +0:52 fpos: direct index for structure (layout(offset=52 ) uniform float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:52 Constant: +0:52 9 (const uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 textureSize (temp uint) +0:70 'g_tTex1df4' (uniform texture1D) +0:70 move second child to first child (temp int) +0:70 'WidthI' (temp int) +0:70 Convert uint to int (temp int) +0:70 'sizeQueryTemp' (temp uint) +0:71 Sequence +0:71 move second child to first child (temp uint) +0:71 'sizeQueryTemp' (temp uint) +0:71 textureSize (temp uint) +0:71 'g_tTex1df4' (uniform texture1D) +0:71 Constant: +0:71 6 (const uint) +0:71 move second child to first child (temp int) +0:71 'WidthI' (temp int) +0:71 Convert uint to int (temp int) +0:71 'sizeQueryTemp' (temp uint) +0:71 move second child to first child (temp uint) +0:71 'NumberOfLevelsU' (temp uint) +0:71 textureQueryLevels (temp uint) +0:71 'g_tTex1df4' (uniform texture1D) +0:72 Sequence +0:72 move second child to first child (temp uint) +0:72 'sizeQueryTemp' (temp uint) +0:72 textureSize (temp uint) +0:72 'g_tTex1df4' (uniform texture1D) +0:72 Constant: +0:72 6 (const uint) +0:72 move second child to first child (temp uint) +0:72 'WidthU' (temp uint) +0:72 'sizeQueryTemp' (temp uint) +0:72 move second child to first child (temp int) +0:72 'NumberOfLevelsI' (temp int) +0:72 Convert uint to int (temp int) +0:72 textureQueryLevels (temp uint) +0:72 'g_tTex1df4' (uniform texture1D) +0:73 Sequence +0:73 move second child to first child (temp uint) +0:73 'sizeQueryTemp' (temp uint) +0:73 textureSize (temp uint) +0:73 'g_tTex1df4' (uniform texture1D) +0:73 Constant: +0:73 6 (const uint) +0:73 move second child to first child (temp int) +0:73 'WidthI' (temp int) +0:73 Convert uint to int (temp int) +0:73 'sizeQueryTemp' (temp uint) +0:73 move second child to first child (temp int) +0:73 'NumberOfLevelsI' (temp int) +0:73 Convert uint to int (temp int) +0:73 textureQueryLevels (temp uint) +0:73 'g_tTex1df4' (uniform texture1D) +0:77 move second child to first child (temp 4-component vector of float) +0:77 color: direct index for structure (temp 4-component vector of float) +0:77 'ps_output' (temp structure{temp 4-component vector of float color}) +0:77 Constant: +0:77 0 (const int) +0:77 Construct vec4 (temp 4-component vector of float) +0:77 'r00' (temp float) +0:78 Sequence +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:78 color: direct index for structure (temp 4-component vector of float) +0:78 'ps_output' (temp structure{temp 4-component vector of float color}) +0:78 Constant: +0:78 0 (const int) +0:78 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTex1df4' (uniform texture1D) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 320 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 316 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 14 "$Global" + MemberName 14($Global) 0 "i" + MemberName 14($Global) 1 "u" + MemberName 14($Global) 2 "f" + MemberName 14($Global) 3 "b" + MemberName 14($Global) 4 "i2" + MemberName 14($Global) 5 "u2" + MemberName 14($Global) 6 "f2" + MemberName 14($Global) 7 "b2" + MemberName 14($Global) 8 "upos" + MemberName 14($Global) 9 "fpos" + Name 16 "" + Name 33 "r01" + Name 44 "r02" + Name 54 "r03" + Name 61 "r04" + Name 69 "r10" + Name 86 "r11" + Name 97 "r12" + Name 109 "r13" + Name 116 "r14" + Name 123 "r20" + Name 133 "r21" + Name 145 "r22" + Name 157 "r30" + Name 166 "r31" + Name 175 "r32" + Name 184 "r33" + Name 192 "r34" + Name 200 "r40" + Name 211 "r41" + Name 224 "r42" + Name 238 "r43" + Name 250 "r50" + Name 254 "g_tTexbfs" + Name 264 "r51" + Name 273 "sizeQueryTemp" + Name 276 "g_tTex1df4" + Name 279 "WidthI" + Name 282 "sizeQueryTemp" + Name 288 "NumberOfLevelsU" + Name 291 "sizeQueryTemp" + Name 294 "WidthU" + Name 296 "NumberOfLevelsI" + Name 300 "sizeQueryTemp" + Name 308 "PS_OUTPUT" + MemberName 308(PS_OUTPUT) 0 "color" + Name 310 "ps_output" + Name 316 "color" + MemberDecorate 14($Global) 0 Offset 0 + MemberDecorate 14($Global) 1 Offset 4 + MemberDecorate 14($Global) 2 Offset 8 + MemberDecorate 14($Global) 3 Offset 12 + MemberDecorate 14($Global) 4 Offset 16 + MemberDecorate 14($Global) 5 Offset 24 + MemberDecorate 14($Global) 6 Offset 32 + MemberDecorate 14($Global) 7 Offset 40 + MemberDecorate 14($Global) 8 Offset 48 + MemberDecorate 14($Global) 9 Offset 52 + Decorate 14($Global) Block + Decorate 16 DescriptorSet 0 + Decorate 254(g_tTexbfs) DescriptorSet 0 + Decorate 276(g_tTex1df4) DescriptorSet 0 + Decorate 316(color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeInt 32 1 + 10: TypeInt 32 0 + 11: TypeVector 9(int) 2 + 12: TypeVector 10(int) 2 + 13: TypeVector 6(float) 2 + 14($Global): TypeStruct 9(int) 10(int) 6(float) 10(int) 11(ivec2) 12(ivec2) 13(fvec2) 12(ivec2) 10(int) 6(float) + 15: TypePointer Uniform 14($Global) + 16: 15(ptr) Variable Uniform + 17: 9(int) Constant 3 + 18: TypePointer Uniform 10(int) + 21: TypeBool + 22: 10(int) Constant 0 + 24: 6(float) Constant 0 + 25: 6(float) Constant 1065353216 + 27: 9(int) Constant 2 + 28: TypePointer Uniform 6(float) + 32: TypePointer Function 10(int) + 37: 10(int) Constant 1 + 39: 9(int) Constant 1 + 43: TypePointer Function 9(int) + 48: 9(int) Constant 0 + 50: TypePointer Uniform 9(int) + 68: TypePointer Function 13(fvec2) + 70: 9(int) Constant 7 + 71: TypePointer Uniform 12(ivec2) + 74: TypeVector 21(bool) 2 + 75: 12(ivec2) ConstantComposite 22 22 + 77: 13(fvec2) ConstantComposite 24 24 + 78: 13(fvec2) ConstantComposite 25 25 + 80: 9(int) Constant 6 + 81: TypePointer Uniform 13(fvec2) + 85: TypePointer Function 12(ivec2) + 90: 12(ivec2) ConstantComposite 37 37 + 92: 9(int) Constant 5 + 96: TypePointer Function 11(ivec2) + 101: 11(ivec2) ConstantComposite 48 48 + 102: 11(ivec2) ConstantComposite 39 39 + 104: 9(int) Constant 4 + 105: TypePointer Uniform 11(ivec2) + 251: TypeImage 6(float) Buffer sampled format:R32f + 252: TypeSampledImage 251 + 253: TypePointer UniformConstant 252 + 254(g_tTexbfs): 253(ptr) Variable UniformConstant + 256: 9(int) Constant 8 + 261: TypeVector 6(float) 4 + 266: 9(int) Constant 9 + 274: TypeImage 6(float) 1D sampled format:Unknown + 275: TypePointer UniformConstant 274 + 276(g_tTex1df4): 275(ptr) Variable UniformConstant + 284: 10(int) Constant 6 + 308(PS_OUTPUT): TypeStruct 261(fvec4) + 309: TypePointer Function 308(PS_OUTPUT) + 313: TypePointer Function 261(fvec4) + 315: TypePointer Output 261(fvec4) + 316(color): 315(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 33(r01): 32(ptr) Variable Function + 44(r02): 43(ptr) Variable Function + 54(r03): 7(ptr) Variable Function + 61(r04): 7(ptr) Variable Function + 69(r10): 68(ptr) Variable Function + 86(r11): 85(ptr) Variable Function + 97(r12): 96(ptr) Variable Function + 109(r13): 68(ptr) Variable Function + 116(r14): 68(ptr) Variable Function + 123(r20): 68(ptr) Variable Function + 133(r21): 85(ptr) Variable Function + 145(r22): 68(ptr) Variable Function + 157(r30): 68(ptr) Variable Function + 166(r31): 85(ptr) Variable Function + 175(r32): 96(ptr) Variable Function + 184(r33): 68(ptr) Variable Function + 192(r34): 68(ptr) Variable Function + 200(r40): 68(ptr) Variable Function + 211(r41): 85(ptr) Variable Function + 224(r42): 68(ptr) Variable Function + 238(r43): 96(ptr) Variable Function + 250(r50): 7(ptr) Variable Function + 264(r51): 7(ptr) Variable Function +273(sizeQueryTemp): 32(ptr) Variable Function + 279(WidthI): 43(ptr) Variable Function +282(sizeQueryTemp): 32(ptr) Variable Function +288(NumberOfLevelsU): 32(ptr) Variable Function +291(sizeQueryTemp): 32(ptr) Variable Function + 294(WidthU): 32(ptr) Variable Function +296(NumberOfLevelsI): 43(ptr) Variable Function +300(sizeQueryTemp): 32(ptr) Variable Function + 310(ps_output): 309(ptr) Variable Function + 19: 18(ptr) AccessChain 16 17 + 20: 10(int) Load 19 + 23: 21(bool) INotEqual 20 22 + 26: 6(float) Select 23 25 24 + 29: 28(ptr) AccessChain 16 27 + 30: 6(float) Load 29 + 31: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 26 30 + Store 8(r00) 31 + 34: 18(ptr) AccessChain 16 17 + 35: 10(int) Load 34 + 36: 21(bool) INotEqual 35 22 + 38: 10(int) Select 36 37 22 + 40: 18(ptr) AccessChain 16 39 + 41: 10(int) Load 40 + 42: 10(int) ExtInst 1(GLSL.std.450) 41(UMax) 38 41 + Store 33(r01) 42 + 45: 18(ptr) AccessChain 16 17 + 46: 10(int) Load 45 + 47: 21(bool) INotEqual 46 22 + 49: 9(int) Select 47 39 48 + 51: 50(ptr) AccessChain 16 48 + 52: 9(int) Load 51 + 53: 9(int) ExtInst 1(GLSL.std.450) 42(SMax) 49 52 + Store 44(r02) 53 + 55: 50(ptr) AccessChain 16 48 + 56: 9(int) Load 55 + 57: 6(float) ConvertSToF 56 + 58: 28(ptr) AccessChain 16 27 + 59: 6(float) Load 58 + 60: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 57 59 + Store 54(r03) 60 + 62: 18(ptr) AccessChain 16 39 + 63: 10(int) Load 62 + 64: 6(float) ConvertUToF 63 + 65: 28(ptr) AccessChain 16 27 + 66: 6(float) Load 65 + 67: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 64 66 + Store 61(r04) 67 + 72: 71(ptr) AccessChain 16 70 + 73: 12(ivec2) Load 72 + 76: 74(bvec2) INotEqual 73 75 + 79: 13(fvec2) Select 76 78 77 + 82: 81(ptr) AccessChain 16 80 + 83: 13(fvec2) Load 82 + 84: 13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 79 83 + Store 69(r10) 84 + 87: 71(ptr) AccessChain 16 70 + 88: 12(ivec2) Load 87 + 89: 74(bvec2) INotEqual 88 75 + 91: 12(ivec2) Select 89 90 75 + 93: 71(ptr) AccessChain 16 92 + 94: 12(ivec2) Load 93 + 95: 12(ivec2) ExtInst 1(GLSL.std.450) 41(UMax) 91 94 + Store 86(r11) 95 + 98: 71(ptr) AccessChain 16 70 + 99: 12(ivec2) Load 98 + 100: 74(bvec2) INotEqual 99 75 + 103: 11(ivec2) Select 100 102 101 + 106: 105(ptr) AccessChain 16 104 + 107: 11(ivec2) Load 106 + 108: 11(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 103 107 + Store 97(r12) 108 + 110: 105(ptr) AccessChain 16 104 + 111: 11(ivec2) Load 110 + 112: 13(fvec2) ConvertSToF 111 + 113: 81(ptr) AccessChain 16 80 + 114: 13(fvec2) Load 113 + 115: 13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 112 114 + Store 109(r13) 115 + 117: 71(ptr) AccessChain 16 92 + 118: 12(ivec2) Load 117 + 119: 13(fvec2) ConvertUToF 118 + 120: 81(ptr) AccessChain 16 80 + 121: 13(fvec2) Load 120 + 122: 13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 119 121 + Store 116(r14) 122 + 124: 105(ptr) AccessChain 16 104 + 125: 11(ivec2) Load 124 + 126: 13(fvec2) ConvertSToF 125 + 127: 71(ptr) AccessChain 16 92 + 128: 12(ivec2) Load 127 + 129: 13(fvec2) ConvertUToF 128 + 130: 81(ptr) AccessChain 16 80 + 131: 13(fvec2) Load 130 + 132: 13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 126 129 131 + Store 123(r20) 132 + 134: 71(ptr) AccessChain 16 70 + 135: 12(ivec2) Load 134 + 136: 74(bvec2) INotEqual 135 75 + 137: 12(ivec2) Select 136 90 75 + 138: 71(ptr) AccessChain 16 92 + 139: 12(ivec2) Load 138 + 140: 71(ptr) AccessChain 16 70 + 141: 12(ivec2) Load 140 + 142: 74(bvec2) INotEqual 141 75 + 143: 12(ivec2) Select 142 90 75 + 144: 12(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 137 139 143 + Store 133(r21) 144 + 146: 71(ptr) AccessChain 16 70 + 147: 12(ivec2) Load 146 + 148: 74(bvec2) INotEqual 147 75 + 149: 13(fvec2) Select 148 78 77 + 150: 81(ptr) AccessChain 16 80 + 151: 13(fvec2) Load 150 + 152: 71(ptr) AccessChain 16 70 + 153: 12(ivec2) Load 152 + 154: 74(bvec2) INotEqual 153 75 + 155: 13(fvec2) Select 154 78 77 + 156: 13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 149 151 155 + Store 145(r22) 156 + 158: 18(ptr) AccessChain 16 17 + 159: 10(int) Load 158 + 160: 21(bool) INotEqual 159 22 + 161: 6(float) Select 160 25 24 + 162: 13(fvec2) CompositeConstruct 161 161 + 163: 81(ptr) AccessChain 16 80 + 164: 13(fvec2) Load 163 + 165: 13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 162 164 + Store 157(r30) 165 + 167: 18(ptr) AccessChain 16 17 + 168: 10(int) Load 167 + 169: 21(bool) INotEqual 168 22 + 170: 10(int) Select 169 37 22 + 171: 12(ivec2) CompositeConstruct 170 170 + 172: 71(ptr) AccessChain 16 92 + 173: 12(ivec2) Load 172 + 174: 12(ivec2) ExtInst 1(GLSL.std.450) 41(UMax) 171 173 + Store 166(r31) 174 + 176: 18(ptr) AccessChain 16 17 + 177: 10(int) Load 176 + 178: 21(bool) INotEqual 177 22 + 179: 9(int) Select 178 39 48 + 180: 11(ivec2) CompositeConstruct 179 179 + 181: 105(ptr) AccessChain 16 104 + 182: 11(ivec2) Load 181 + 183: 11(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 180 182 + Store 175(r32) 183 + 185: 50(ptr) AccessChain 16 48 + 186: 9(int) Load 185 + 187: 6(float) ConvertSToF 186 + 188: 13(fvec2) CompositeConstruct 187 187 + 189: 81(ptr) AccessChain 16 80 + 190: 13(fvec2) Load 189 + 191: 13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 188 190 + Store 184(r33) 191 + 193: 18(ptr) AccessChain 16 39 + 194: 10(int) Load 193 + 195: 6(float) ConvertUToF 194 + 196: 13(fvec2) CompositeConstruct 195 195 + 197: 81(ptr) AccessChain 16 80 + 198: 13(fvec2) Load 197 + 199: 13(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 196 198 + Store 192(r34) 199 + 201: 50(ptr) AccessChain 16 48 + 202: 9(int) Load 201 + 203: 6(float) ConvertSToF 202 + 204: 13(fvec2) CompositeConstruct 203 203 + 205: 71(ptr) AccessChain 16 92 + 206: 12(ivec2) Load 205 + 207: 13(fvec2) ConvertUToF 206 + 208: 81(ptr) AccessChain 16 80 + 209: 13(fvec2) Load 208 + 210: 13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 204 207 209 + Store 200(r40) 210 + 212: 71(ptr) AccessChain 16 70 + 213: 12(ivec2) Load 212 + 214: 74(bvec2) INotEqual 213 75 + 215: 12(ivec2) Select 214 90 75 + 216: 18(ptr) AccessChain 16 39 + 217: 10(int) Load 216 + 218: 12(ivec2) CompositeConstruct 217 217 + 219: 71(ptr) AccessChain 16 70 + 220: 12(ivec2) Load 219 + 221: 74(bvec2) INotEqual 220 75 + 222: 12(ivec2) Select 221 90 75 + 223: 12(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 215 218 222 + Store 211(r41) 223 + 225: 71(ptr) AccessChain 16 70 + 226: 12(ivec2) Load 225 + 227: 74(bvec2) INotEqual 226 75 + 228: 13(fvec2) Select 227 78 77 + 229: 28(ptr) AccessChain 16 27 + 230: 6(float) Load 229 + 231: 13(fvec2) CompositeConstruct 230 230 + 232: 18(ptr) AccessChain 16 17 + 233: 10(int) Load 232 + 234: 21(bool) INotEqual 233 22 + 235: 6(float) Select 234 25 24 + 236: 13(fvec2) CompositeConstruct 235 235 + 237: 13(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 228 231 236 + Store 224(r42) 237 + 239: 50(ptr) AccessChain 16 48 + 240: 9(int) Load 239 + 241: 10(int) Bitcast 240 + 242: 12(ivec2) CompositeConstruct 241 241 + 243: 105(ptr) AccessChain 16 104 + 244: 11(ivec2) Load 243 + 245: 12(ivec2) Bitcast 244 + 246: 71(ptr) AccessChain 16 92 + 247: 12(ivec2) Load 246 + 248: 12(ivec2) ExtInst 1(GLSL.std.450) 44(UClamp) 242 245 247 + 249: 11(ivec2) Bitcast 248 + Store 238(r43) 249 + 255: 252 Load 254(g_tTexbfs) + 257: 18(ptr) AccessChain 16 256 + 258: 10(int) Load 257 + 259: 9(int) Bitcast 258 + 260: 251 Image 255 + 262: 261(fvec4) ImageFetch 260 259 + 263: 6(float) CompositeExtract 262 0 + Store 250(r50) 263 + 265: 252 Load 254(g_tTexbfs) + 267: 28(ptr) AccessChain 16 266 + 268: 6(float) Load 267 + 269: 9(int) ConvertFToS 268 + 270: 251 Image 265 + 271: 261(fvec4) ImageFetch 270 269 + 272: 6(float) CompositeExtract 271 0 + Store 264(r51) 272 + 277: 274 Load 276(g_tTex1df4) + 278: 9(int) ImageQuerySize 277 + Store 273(sizeQueryTemp) 278 + 280: 10(int) Load 273(sizeQueryTemp) + 281: 9(int) Bitcast 280 + Store 279(WidthI) 281 + 283: 274 Load 276(g_tTex1df4) + 285: 9(int) ImageQuerySizeLod 283 284 + Store 282(sizeQueryTemp) 285 + 286: 10(int) Load 282(sizeQueryTemp) + 287: 9(int) Bitcast 286 + Store 279(WidthI) 287 + 289: 274 Load 276(g_tTex1df4) + 290: 9(int) ImageQueryLevels 289 + Store 288(NumberOfLevelsU) 290 + 292: 274 Load 276(g_tTex1df4) + 293: 9(int) ImageQuerySizeLod 292 284 + Store 291(sizeQueryTemp) 293 + 295: 10(int) Load 291(sizeQueryTemp) + Store 294(WidthU) 295 + 297: 274 Load 276(g_tTex1df4) + 298: 9(int) ImageQueryLevels 297 + 299: 9(int) Bitcast 298 + Store 296(NumberOfLevelsI) 299 + 301: 274 Load 276(g_tTex1df4) + 302: 9(int) ImageQuerySizeLod 301 284 + Store 300(sizeQueryTemp) 302 + 303: 10(int) Load 300(sizeQueryTemp) + 304: 9(int) Bitcast 303 + Store 279(WidthI) 304 + 305: 274 Load 276(g_tTex1df4) + 306: 9(int) ImageQueryLevels 305 + 307: 9(int) Bitcast 306 + Store 296(NumberOfLevelsI) 307 + 311: 6(float) Load 8(r00) + 312: 261(fvec4) CompositeConstruct 311 311 311 311 + 314: 313(ptr) AccessChain 310(ps_output) 48 + Store 314 312 + 317: 313(ptr) AccessChain 310(ps_output) 48 + 318: 261(fvec4) Load 317 + Store 316(color) 318 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out new file mode 100644 index 00000000..ebe6a24c --- /dev/null +++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out @@ -0,0 +1,337 @@ +hlsl.intrinsics.promote.outputs.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:20 Function Parameters: +0:? Sequence +0:37 clamp (temp float) +0:37 fpos: direct index for structure (layout(offset=52 ) uniform float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 9 (const uint) +0:37 Constant: +0:37 0.000000 +0:37 Constant: +0:37 1.000000 +0:40 Sequence +0:40 move second child to first child (temp uint) +0:40 'sizeQueryTemp' (temp uint) +0:40 textureSize (temp uint) +0:40 'g_tTex1df4' (uniform texture1D) +0:40 move second child to first child (temp int) +0:40 'WidthI' (temp int) +0:40 Convert uint to int (temp int) +0:40 'sizeQueryTemp' (temp uint) +0:41 Sequence +0:41 move second child to first child (temp uint) +0:41 'sizeQueryTemp' (temp uint) +0:41 textureSize (temp uint) +0:41 'g_tTex1df4' (uniform texture1D) +0:41 Constant: +0:41 6 (const uint) +0:41 move second child to first child (temp int) +0:41 'WidthI' (temp int) +0:41 Convert uint to int (temp int) +0:41 'sizeQueryTemp' (temp uint) +0:41 move second child to first child (temp uint) +0:41 'NumberOfLevelsU' (temp uint) +0:41 textureQueryLevels (temp uint) +0:41 'g_tTex1df4' (uniform texture1D) +0:42 Sequence +0:42 move second child to first child (temp uint) +0:42 'sizeQueryTemp' (temp uint) +0:42 textureSize (temp uint) +0:42 'g_tTex1df4' (uniform texture1D) +0:42 Constant: +0:42 6 (const uint) +0:42 move second child to first child (temp uint) +0:42 'WidthU' (temp uint) +0:42 'sizeQueryTemp' (temp uint) +0:42 move second child to first child (temp int) +0:42 'NumberOfLevelsI' (temp int) +0:42 Convert uint to int (temp int) +0:42 textureQueryLevels (temp uint) +0:42 'g_tTex1df4' (uniform texture1D) +0:43 Sequence +0:43 move second child to first child (temp uint) +0:43 'sizeQueryTemp' (temp uint) +0:43 textureSize (temp uint) +0:43 'g_tTex1df4' (uniform texture1D) +0:43 Constant: +0:43 6 (const uint) +0:43 move second child to first child (temp int) +0:43 'WidthI' (temp int) +0:43 Convert uint to int (temp int) +0:43 'sizeQueryTemp' (temp uint) +0:43 move second child to first child (temp int) +0:43 'NumberOfLevelsI' (temp int) +0:43 Convert uint to int (temp int) +0:43 textureQueryLevels (temp uint) +0:43 'g_tTex1df4' (uniform texture1D) +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 'ps_output' (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 Sequence +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:48 color: direct index for structure (temp 4-component vector of float) +0:48 'ps_output' (temp structure{temp 4-component vector of float color}) +0:48 Constant: +0:48 0 (const int) +0:48 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTex1df4' (uniform texture1D) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:20 Function Parameters: +0:? Sequence +0:37 clamp (temp float) +0:37 fpos: direct index for structure (layout(offset=52 ) uniform float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) +0:37 Constant: +0:37 9 (const uint) +0:37 Constant: +0:37 0.000000 +0:37 Constant: +0:37 1.000000 +0:40 Sequence +0:40 move second child to first child (temp uint) +0:40 'sizeQueryTemp' (temp uint) +0:40 textureSize (temp uint) +0:40 'g_tTex1df4' (uniform texture1D) +0:40 move second child to first child (temp int) +0:40 'WidthI' (temp int) +0:40 Convert uint to int (temp int) +0:40 'sizeQueryTemp' (temp uint) +0:41 Sequence +0:41 move second child to first child (temp uint) +0:41 'sizeQueryTemp' (temp uint) +0:41 textureSize (temp uint) +0:41 'g_tTex1df4' (uniform texture1D) +0:41 Constant: +0:41 6 (const uint) +0:41 move second child to first child (temp int) +0:41 'WidthI' (temp int) +0:41 Convert uint to int (temp int) +0:41 'sizeQueryTemp' (temp uint) +0:41 move second child to first child (temp uint) +0:41 'NumberOfLevelsU' (temp uint) +0:41 textureQueryLevels (temp uint) +0:41 'g_tTex1df4' (uniform texture1D) +0:42 Sequence +0:42 move second child to first child (temp uint) +0:42 'sizeQueryTemp' (temp uint) +0:42 textureSize (temp uint) +0:42 'g_tTex1df4' (uniform texture1D) +0:42 Constant: +0:42 6 (const uint) +0:42 move second child to first child (temp uint) +0:42 'WidthU' (temp uint) +0:42 'sizeQueryTemp' (temp uint) +0:42 move second child to first child (temp int) +0:42 'NumberOfLevelsI' (temp int) +0:42 Convert uint to int (temp int) +0:42 textureQueryLevels (temp uint) +0:42 'g_tTex1df4' (uniform texture1D) +0:43 Sequence +0:43 move second child to first child (temp uint) +0:43 'sizeQueryTemp' (temp uint) +0:43 textureSize (temp uint) +0:43 'g_tTex1df4' (uniform texture1D) +0:43 Constant: +0:43 6 (const uint) +0:43 move second child to first child (temp int) +0:43 'WidthI' (temp int) +0:43 Convert uint to int (temp int) +0:43 'sizeQueryTemp' (temp uint) +0:43 move second child to first child (temp int) +0:43 'NumberOfLevelsI' (temp int) +0:43 Convert uint to int (temp int) +0:43 textureQueryLevels (temp uint) +0:43 'g_tTex1df4' (uniform texture1D) +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 'ps_output' (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 Sequence +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:48 color: direct index for structure (temp 4-component vector of float) +0:48 'ps_output' (temp structure{temp 4-component vector of float color}) +0:48 Constant: +0:48 0 (const int) +0:48 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTex1df4' (uniform texture1D) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int i, layout(offset=4 ) uniform uint u, layout(offset=8 ) uniform float f, layout(offset=12 ) uniform bool b, layout(offset=16 ) uniform 2-component vector of int i2, layout(offset=24 ) uniform 2-component vector of uint u2, layout(offset=32 ) uniform 2-component vector of float f2, layout(offset=40 ) uniform 2-component vector of bool b2, layout(offset=48 ) uniform uint upos, layout(offset=52 ) uniform float fpos}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 76 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 68 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 12 "$Global" + MemberName 12($Global) 0 "i" + MemberName 12($Global) 1 "u" + MemberName 12($Global) 2 "f" + MemberName 12($Global) 3 "b" + MemberName 12($Global) 4 "i2" + MemberName 12($Global) 5 "u2" + MemberName 12($Global) 6 "f2" + MemberName 12($Global) 7 "b2" + MemberName 12($Global) 8 "upos" + MemberName 12($Global) 9 "fpos" + Name 14 "" + Name 23 "sizeQueryTemp" + Name 26 "g_tTex1df4" + Name 30 "WidthI" + Name 33 "sizeQueryTemp" + Name 39 "NumberOfLevelsU" + Name 42 "sizeQueryTemp" + Name 45 "WidthU" + Name 47 "NumberOfLevelsI" + Name 51 "sizeQueryTemp" + Name 60 "PS_OUTPUT" + MemberName 60(PS_OUTPUT) 0 "color" + Name 62 "ps_output" + Name 68 "color" + Name 75 "g_tTexbfs" + MemberDecorate 12($Global) 0 Offset 0 + MemberDecorate 12($Global) 1 Offset 4 + MemberDecorate 12($Global) 2 Offset 8 + MemberDecorate 12($Global) 3 Offset 12 + MemberDecorate 12($Global) 4 Offset 16 + MemberDecorate 12($Global) 5 Offset 24 + MemberDecorate 12($Global) 6 Offset 32 + MemberDecorate 12($Global) 7 Offset 40 + MemberDecorate 12($Global) 8 Offset 48 + MemberDecorate 12($Global) 9 Offset 52 + Decorate 12($Global) Block + Decorate 14 DescriptorSet 0 + Decorate 26(g_tTex1df4) DescriptorSet 0 + Decorate 68(color) Location 0 + Decorate 75(g_tTexbfs) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeInt 32 0 + 8: TypeFloat 32 + 9: TypeVector 6(int) 2 + 10: TypeVector 7(int) 2 + 11: TypeVector 8(float) 2 + 12($Global): TypeStruct 6(int) 7(int) 8(float) 7(int) 9(ivec2) 10(ivec2) 11(fvec2) 10(ivec2) 7(int) 8(float) + 13: TypePointer Uniform 12($Global) + 14: 13(ptr) Variable Uniform + 15: 6(int) Constant 9 + 16: TypePointer Uniform 8(float) + 19: 8(float) Constant 0 + 20: 8(float) Constant 1065353216 + 22: TypePointer Function 7(int) + 24: TypeImage 8(float) 1D sampled format:Unknown + 25: TypePointer UniformConstant 24 + 26(g_tTex1df4): 25(ptr) Variable UniformConstant + 29: TypePointer Function 6(int) + 35: 7(int) Constant 6 + 59: TypeVector 8(float) 4 + 60(PS_OUTPUT): TypeStruct 59(fvec4) + 61: TypePointer Function 60(PS_OUTPUT) + 63: 6(int) Constant 0 + 64: 59(fvec4) ConstantComposite 19 19 19 19 + 65: TypePointer Function 59(fvec4) + 67: TypePointer Output 59(fvec4) + 68(color): 67(ptr) Variable Output + 72: TypeImage 8(float) Buffer sampled format:R32f + 73: TypeSampledImage 72 + 74: TypePointer UniformConstant 73 + 75(g_tTexbfs): 74(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label +23(sizeQueryTemp): 22(ptr) Variable Function + 30(WidthI): 29(ptr) Variable Function +33(sizeQueryTemp): 22(ptr) Variable Function +39(NumberOfLevelsU): 22(ptr) Variable Function +42(sizeQueryTemp): 22(ptr) Variable Function + 45(WidthU): 22(ptr) Variable Function +47(NumberOfLevelsI): 29(ptr) Variable Function +51(sizeQueryTemp): 22(ptr) Variable Function + 62(ps_output): 61(ptr) Variable Function + 17: 16(ptr) AccessChain 14 15 + 18: 8(float) Load 17 + 21: 8(float) ExtInst 1(GLSL.std.450) 43(FClamp) 18 19 20 + 27: 24 Load 26(g_tTex1df4) + 28: 6(int) ImageQuerySize 27 + Store 23(sizeQueryTemp) 28 + 31: 7(int) Load 23(sizeQueryTemp) + 32: 6(int) Bitcast 31 + Store 30(WidthI) 32 + 34: 24 Load 26(g_tTex1df4) + 36: 6(int) ImageQuerySizeLod 34 35 + Store 33(sizeQueryTemp) 36 + 37: 7(int) Load 33(sizeQueryTemp) + 38: 6(int) Bitcast 37 + Store 30(WidthI) 38 + 40: 24 Load 26(g_tTex1df4) + 41: 6(int) ImageQueryLevels 40 + Store 39(NumberOfLevelsU) 41 + 43: 24 Load 26(g_tTex1df4) + 44: 6(int) ImageQuerySizeLod 43 35 + Store 42(sizeQueryTemp) 44 + 46: 7(int) Load 42(sizeQueryTemp) + Store 45(WidthU) 46 + 48: 24 Load 26(g_tTex1df4) + 49: 6(int) ImageQueryLevels 48 + 50: 6(int) Bitcast 49 + Store 47(NumberOfLevelsI) 50 + 52: 24 Load 26(g_tTex1df4) + 53: 6(int) ImageQuerySizeLod 52 35 + Store 51(sizeQueryTemp) 53 + 54: 7(int) Load 51(sizeQueryTemp) + 55: 6(int) Bitcast 54 + Store 30(WidthI) 55 + 56: 24 Load 26(g_tTex1df4) + 57: 6(int) ImageQueryLevels 56 + 58: 6(int) Bitcast 57 + Store 47(NumberOfLevelsI) 58 + 66: 65(ptr) AccessChain 62(ps_output) 63 + Store 66 64 + 69: 65(ptr) AccessChain 62(ps_output) 63 + 70: 59(fvec4) Load 69 + Store 68(color) 70 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out index 7e7a5119..c3a55137 100644 --- a/Test/baseResults/hlsl.intrinsics.vert.out +++ b/Test/baseResults/hlsl.intrinsics.vert.out @@ -40,9 +40,9 @@ Shader version: 450 0:16 'inF0' (in float) 0:17 hyp. cosine (temp float) 0:17 'inF0' (in float) -0:18 bitCount (temp uint) +0:18 bitCount (temp int) 0:18 Constant: -0:18 7 (const uint) +0:18 7 (const int) 0:19 degrees (temp float) 0:19 'inF0' (in float) 0:23 exp (temp float) @@ -96,9 +96,9 @@ Shader version: 450 0:42 'inF1' (in float) 0:43 radians (temp float) 0:43 'inF0' (in float) -0:44 bitFieldReverse (temp uint) +0:44 bitFieldReverse (temp int) 0:44 Constant: -0:44 2 (const uint) +0:44 2 (const int) 0:45 roundEven (temp float) 0:45 'inF0' (in float) 0:46 inverse sqrt (temp float) @@ -190,10 +190,10 @@ Shader version: 450 0:84 'inF0' (in 2-component vector of float) 0:85 hyp. cosine (temp 2-component vector of float) 0:85 'inF0' (in 2-component vector of float) -0:? bitCount (temp 2-component vector of uint) +0:? bitCount (temp 2-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) +0:? 7 (const int) +0:? 3 (const int) 0:87 degrees (temp 2-component vector of float) 0:87 'inF0' (in 2-component vector of float) 0:88 distance (temp float) @@ -269,10 +269,10 @@ Shader version: 450 0:118 'inF1' (in 2-component vector of float) 0:118 Constant: 0:118 2.000000 -0:? bitFieldReverse (temp 2-component vector of uint) +0:? bitFieldReverse (temp 2-component vector of int) 0:? Constant: -0:? 1 (const uint) -0:? 2 (const uint) +0:? 1 (const int) +0:? 2 (const int) 0:120 roundEven (temp 2-component vector of float) 0:120 'inF0' (in 2-component vector of float) 0:121 inverse sqrt (temp 2-component vector of float) @@ -356,11 +356,11 @@ Shader version: 450 0:154 'inF0' (in 3-component vector of float) 0:155 hyp. cosine (temp 3-component vector of float) 0:155 'inF0' (in 3-component vector of float) -0:? bitCount (temp 3-component vector of uint) +0:? bitCount (temp 3-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) -0:? 5 (const uint) +0:? 7 (const int) +0:? 3 (const int) +0:? 5 (const int) 0:157 cross-product (temp 3-component vector of float) 0:157 'inF0' (in 3-component vector of float) 0:157 'inF1' (in 3-component vector of float) @@ -439,11 +439,11 @@ Shader version: 450 0:189 'inF1' (in 3-component vector of float) 0:189 Constant: 0:189 2.000000 -0:? bitFieldReverse (temp 3-component vector of uint) +0:? bitFieldReverse (temp 3-component vector of int) 0:? Constant: -0:? 1 (const uint) -0:? 2 (const uint) -0:? 3 (const uint) +0:? 1 (const int) +0:? 2 (const int) +0:? 3 (const int) 0:191 roundEven (temp 3-component vector of float) 0:191 'inF0' (in 3-component vector of float) 0:192 inverse sqrt (temp 3-component vector of float) @@ -528,12 +528,12 @@ Shader version: 450 0:225 'inF0' (in 4-component vector of float) 0:226 hyp. cosine (temp 4-component vector of float) 0:226 'inF0' (in 4-component vector of float) -0:? bitCount (temp 4-component vector of uint) +0:? bitCount (temp 4-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) -0:? 5 (const uint) -0:? 2 (const uint) +0:? 7 (const int) +0:? 3 (const int) +0:? 5 (const int) +0:? 2 (const int) 0:228 degrees (temp 4-component vector of float) 0:228 'inF0' (in 4-component vector of float) 0:229 distance (temp float) @@ -629,12 +629,12 @@ Shader version: 450 0:260 'inF1' (in 4-component vector of float) 0:260 Constant: 0:260 2.000000 -0:? bitFieldReverse (temp 4-component vector of uint) +0:? bitFieldReverse (temp 4-component vector of int) 0:? Constant: -0:? 1 (const uint) -0:? 2 (const uint) -0:? 3 (const uint) -0:? 4 (const uint) +0:? 1 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) 0:262 roundEven (temp 4-component vector of float) 0:262 'inF0' (in 4-component vector of float) 0:263 inverse sqrt (temp 4-component vector of float) @@ -1438,9 +1438,9 @@ Shader version: 450 0:16 'inF0' (in float) 0:17 hyp. cosine (temp float) 0:17 'inF0' (in float) -0:18 bitCount (temp uint) +0:18 bitCount (temp int) 0:18 Constant: -0:18 7 (const uint) +0:18 7 (const int) 0:19 degrees (temp float) 0:19 'inF0' (in float) 0:23 exp (temp float) @@ -1494,9 +1494,9 @@ Shader version: 450 0:42 'inF1' (in float) 0:43 radians (temp float) 0:43 'inF0' (in float) -0:44 bitFieldReverse (temp uint) +0:44 bitFieldReverse (temp int) 0:44 Constant: -0:44 2 (const uint) +0:44 2 (const int) 0:45 roundEven (temp float) 0:45 'inF0' (in float) 0:46 inverse sqrt (temp float) @@ -1588,10 +1588,10 @@ Shader version: 450 0:84 'inF0' (in 2-component vector of float) 0:85 hyp. cosine (temp 2-component vector of float) 0:85 'inF0' (in 2-component vector of float) -0:? bitCount (temp 2-component vector of uint) +0:? bitCount (temp 2-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) +0:? 7 (const int) +0:? 3 (const int) 0:87 degrees (temp 2-component vector of float) 0:87 'inF0' (in 2-component vector of float) 0:88 distance (temp float) @@ -1667,10 +1667,10 @@ Shader version: 450 0:118 'inF1' (in 2-component vector of float) 0:118 Constant: 0:118 2.000000 -0:? bitFieldReverse (temp 2-component vector of uint) +0:? bitFieldReverse (temp 2-component vector of int) 0:? Constant: -0:? 1 (const uint) -0:? 2 (const uint) +0:? 1 (const int) +0:? 2 (const int) 0:120 roundEven (temp 2-component vector of float) 0:120 'inF0' (in 2-component vector of float) 0:121 inverse sqrt (temp 2-component vector of float) @@ -1754,11 +1754,11 @@ Shader version: 450 0:154 'inF0' (in 3-component vector of float) 0:155 hyp. cosine (temp 3-component vector of float) 0:155 'inF0' (in 3-component vector of float) -0:? bitCount (temp 3-component vector of uint) +0:? bitCount (temp 3-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) -0:? 5 (const uint) +0:? 7 (const int) +0:? 3 (const int) +0:? 5 (const int) 0:157 cross-product (temp 3-component vector of float) 0:157 'inF0' (in 3-component vector of float) 0:157 'inF1' (in 3-component vector of float) @@ -1837,11 +1837,11 @@ Shader version: 450 0:189 'inF1' (in 3-component vector of float) 0:189 Constant: 0:189 2.000000 -0:? bitFieldReverse (temp 3-component vector of uint) +0:? bitFieldReverse (temp 3-component vector of int) 0:? Constant: -0:? 1 (const uint) -0:? 2 (const uint) -0:? 3 (const uint) +0:? 1 (const int) +0:? 2 (const int) +0:? 3 (const int) 0:191 roundEven (temp 3-component vector of float) 0:191 'inF0' (in 3-component vector of float) 0:192 inverse sqrt (temp 3-component vector of float) @@ -1926,12 +1926,12 @@ Shader version: 450 0:225 'inF0' (in 4-component vector of float) 0:226 hyp. cosine (temp 4-component vector of float) 0:226 'inF0' (in 4-component vector of float) -0:? bitCount (temp 4-component vector of uint) +0:? bitCount (temp 4-component vector of int) 0:? Constant: -0:? 7 (const uint) -0:? 3 (const uint) -0:? 5 (const uint) -0:? 2 (const uint) +0:? 7 (const int) +0:? 3 (const int) +0:? 5 (const int) +0:? 2 (const int) 0:228 degrees (temp 4-component vector of float) 0:228 'inF0' (in 4-component vector of float) 0:229 distance (temp float) @@ -2027,12 +2027,12 @@ Shader version: 450 0:260 'inF1' (in 4-component vector of float) 0:260 Constant: 0:260 2.000000 -0:? bitFieldReverse (temp 4-component vector of uint) +0:? bitFieldReverse (temp 4-component vector of int) 0:? Constant: -0:? 1 (const uint) -0:? 2 (const uint) -0:? 3 (const uint) -0:? 4 (const uint) +0:? 1 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) 0:262 roundEven (temp 4-component vector of float) 0:262 'inF0' (in 4-component vector of float) 0:263 inverse sqrt (temp 4-component vector of float) @@ -2793,7 +2793,7 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 1238 +// Id's are bound by 1240 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -2871,57 +2871,57 @@ Shader version: 450 Name 126 "inFM3x3" Name 127 "inFM3x4" Name 128 "inFM2x4" - Name 183 "ResType" - Name 317 "ResType" - Name 465 "ResType" - Name 618 "ResType" - Name 751 "ResType" - Name 871 "ResType" - Name 994 "ResType" - Name 1062 "r0" - Name 1066 "r1" - Name 1070 "r2" - Name 1074 "r3" - Name 1078 "r4" - Name 1082 "r5" - Name 1086 "r6" - Name 1090 "r7" - Name 1094 "r8" - Name 1098 "r0" - Name 1102 "r1" - Name 1106 "r2" - Name 1110 "r3" - Name 1114 "r4" - Name 1118 "r5" - Name 1122 "r6" - Name 1126 "r7" - Name 1130 "r8" - Name 1134 "r0" - Name 1138 "r1" - Name 1142 "r2" - Name 1146 "r3" - Name 1150 "r4" - Name 1154 "r5" - Name 1158 "r6" - Name 1162 "r7" - Name 1166 "r8" - Name 1170 "r00" - Name 1174 "r01" - Name 1178 "r02" - Name 1182 "r03" - Name 1186 "r04" - Name 1190 "r05" - Name 1194 "r06" - Name 1198 "r07" - Name 1202 "r08" - Name 1206 "r09" - Name 1210 "r10" - Name 1214 "r11" - Name 1218 "r12" - Name 1222 "r13" - Name 1226 "r14" - Name 1230 "r15" - Name 1234 "r16" + Name 182 "ResType" + Name 316 "ResType" + Name 464 "ResType" + Name 620 "ResType" + Name 753 "ResType" + Name 873 "ResType" + Name 996 "ResType" + Name 1064 "r0" + Name 1068 "r1" + Name 1072 "r2" + Name 1076 "r3" + Name 1080 "r4" + Name 1084 "r5" + Name 1088 "r6" + Name 1092 "r7" + Name 1096 "r8" + Name 1100 "r0" + Name 1104 "r1" + Name 1108 "r2" + Name 1112 "r3" + Name 1116 "r4" + Name 1120 "r5" + Name 1124 "r6" + Name 1128 "r7" + Name 1132 "r8" + Name 1136 "r0" + Name 1140 "r1" + Name 1144 "r2" + Name 1148 "r3" + Name 1152 "r4" + Name 1156 "r5" + Name 1160 "r6" + Name 1164 "r7" + Name 1168 "r8" + Name 1172 "r00" + Name 1176 "r01" + Name 1180 "r02" + Name 1184 "r03" + Name 1188 "r04" + Name 1192 "r05" + Name 1196 "r06" + Name 1200 "r07" + Name 1204 "r08" + Name 1208 "r09" + Name 1212 "r10" + Name 1216 "r11" + Name 1220 "r12" + Name 1224 "r13" + Name 1228 "r14" + Name 1232 "r15" + Name 1236 "r16" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -2968,47 +2968,49 @@ Shader version: 450 119: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr) 132: TypeBool 143: TypeInt 32 1 - 164: 8(int) Constant 7 - 172: 143(int) Constant 7 - 183(ResType): TypeStruct 6(float) 143(int) - 202: 6(float) Constant 1050288283 - 217: 8(int) Constant 2 - 224: 6(float) Constant 0 - 225: 6(float) Constant 1065353216 - 267: TypeVector 143(int) 2 - 288: 8(int) Constant 3 - 289: 26(ivec2) ConstantComposite 164 288 - 317(ResType): TypeStruct 24(fvec2) 267(ivec2) - 322: TypeVector 132(bool) 2 - 360: 6(float) Constant 1073741824 - 362: 8(int) Constant 1 - 363: 26(ivec2) ConstantComposite 362 217 - 398: 24(fvec2) ConstantComposite 225 360 - 412: TypeVector 143(int) 3 - 433: 8(int) Constant 5 - 434: 38(ivec3) ConstantComposite 164 288 433 - 465(ResType): TypeStruct 36(fvec3) 412(ivec3) - 470: TypeVector 132(bool) 3 - 509: 38(ivec3) ConstantComposite 362 217 288 - 544: 6(float) Constant 1077936128 - 545: 36(fvec3) ConstantComposite 225 360 544 - 559: TypeVector 143(int) 4 - 580: 50(ivec4) ConstantComposite 164 288 433 217 - 618(ResType): TypeStruct 48(fvec4) 559(ivec4) - 623: TypeVector 132(bool) 4 - 662: 8(int) Constant 4 - 663: 50(ivec4) ConstantComposite 362 217 288 662 - 698: 6(float) Constant 1082130432 - 699: 48(fvec4) ConstantComposite 225 360 544 698 - 751(ResType): TypeStruct 60 267(ivec2) - 815: 24(fvec2) ConstantComposite 360 360 - 816: 60 ConstantComposite 815 815 - 871(ResType): TypeStruct 68 412(ivec3) - 935: 36(fvec3) ConstantComposite 544 544 544 - 936: 68 ConstantComposite 935 935 935 - 994(ResType): TypeStruct 76 559(ivec4) - 1058: 48(fvec4) ConstantComposite 698 698 698 698 - 1059: 76 ConstantComposite 1058 1058 1058 1058 + 164: 143(int) Constant 7 + 182(ResType): TypeStruct 6(float) 143(int) + 201: 6(float) Constant 1050288283 + 216: 143(int) Constant 2 + 223: 6(float) Constant 0 + 224: 6(float) Constant 1065353216 + 266: TypeVector 143(int) 2 + 287: 143(int) Constant 3 + 288: 266(ivec2) ConstantComposite 164 287 + 316(ResType): TypeStruct 24(fvec2) 266(ivec2) + 321: TypeVector 132(bool) 2 + 359: 6(float) Constant 1073741824 + 361: 143(int) Constant 1 + 362: 266(ivec2) ConstantComposite 361 216 + 397: 24(fvec2) ConstantComposite 224 359 + 411: TypeVector 143(int) 3 + 432: 143(int) Constant 5 + 433: 411(ivec3) ConstantComposite 164 287 432 + 464(ResType): TypeStruct 36(fvec3) 411(ivec3) + 469: TypeVector 132(bool) 3 + 508: 411(ivec3) ConstantComposite 361 216 287 + 543: 6(float) Constant 1077936128 + 544: 36(fvec3) ConstantComposite 224 359 543 + 558: TypeVector 143(int) 4 + 579: 558(ivec4) ConstantComposite 164 287 432 216 + 589: 8(int) Constant 1 + 595: 8(int) Constant 2 + 598: 8(int) Constant 3 + 620(ResType): TypeStruct 48(fvec4) 558(ivec4) + 625: TypeVector 132(bool) 4 + 664: 143(int) Constant 4 + 665: 558(ivec4) ConstantComposite 361 216 287 664 + 700: 6(float) Constant 1082130432 + 701: 48(fvec4) ConstantComposite 224 359 543 700 + 753(ResType): TypeStruct 60 266(ivec2) + 817: 24(fvec2) ConstantComposite 359 359 + 818: 60 ConstantComposite 817 817 + 873(ResType): TypeStruct 68 411(ivec3) + 937: 36(fvec3) ConstantComposite 543 543 543 + 938: 68 ConstantComposite 937 937 937 + 996(ResType): TypeStruct 76 558(ivec4) + 1060: 48(fvec4) ConstantComposite 700 700 700 700 + 1061: 76 ConstantComposite 1060 1060 1060 1060 4(VertexShaderFunction): 2 Function None 3 5: Label FunctionEnd @@ -3050,98 +3052,98 @@ Shader version: 450 161: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 160 162: 6(float) Load 11(inF0) 163: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 162 - 165: 8(int) BitCount 164 + 165: 143(int) BitCount 164 166: 6(float) Load 11(inF0) 167: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 166 168: 6(float) Load 11(inF0) 169: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 168 170: 6(float) Load 11(inF0) 171: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 170 - 173: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172 - 174: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172 - 175: 6(float) Load 11(inF0) - 176: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 175 - 177: 6(float) Load 11(inF0) - 178: 6(float) Load 12(inF1) - 179: 6(float) FMod 177 178 - 180: 6(float) Load 11(inF0) - 181: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 180 - 182: 6(float) Load 11(inF0) - 184:183(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 182 - 185: 143(int) CompositeExtract 184 1 - Store 12(inF1) 185 - 186: 6(float) CompositeExtract 184 0 - 187: 6(float) Load 11(inF0) - 188: 132(bool) IsInf 187 - 189: 6(float) Load 11(inF0) - 190: 132(bool) IsNan 189 - 191: 6(float) Load 11(inF0) - 192: 6(float) Load 12(inF1) - 193: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 191 192 - 194: 6(float) Load 11(inF0) - 195: 6(float) Load 12(inF1) - 196: 6(float) Load 13(inF2) - 197: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 194 195 196 - 198: 6(float) Load 11(inF0) - 199: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 198 - 200: 6(float) Load 11(inF0) - 201: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 200 - 203: 6(float) FMul 201 202 - 204: 6(float) Load 11(inF0) - 205: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 204 - 206: 6(float) Load 11(inF0) - 207: 6(float) Load 12(inF1) - 208: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 206 207 - 209: 6(float) Load 11(inF0) - 210: 6(float) Load 12(inF1) - 211: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 209 210 - 212: 6(float) Load 11(inF0) - 213: 6(float) Load 12(inF1) - 214: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 212 213 - 215: 6(float) Load 11(inF0) - 216: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 215 - 218: 8(int) BitReverse 217 - 219: 6(float) Load 11(inF0) - 220: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 219 - 221: 6(float) Load 11(inF0) - 222: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 221 - 223: 6(float) Load 11(inF0) - 226: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 223 224 225 - 227: 6(float) Load 11(inF0) - 228: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 227 - 229: 6(float) Load 11(inF0) - 230: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 229 - 231: 6(float) Load 11(inF0) - 232: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 231 - Store 12(inF1) 232 - 233: 6(float) Load 11(inF0) - 234: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 233 - Store 13(inF2) 234 - 235: 6(float) Load 11(inF0) - 236: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 235 - 237: 6(float) Load 11(inF0) - 238: 6(float) Load 12(inF1) - 239: 6(float) Load 13(inF2) - 240: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 237 238 239 - 241: 6(float) Load 11(inF0) - 242: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 241 - 243: 6(float) Load 11(inF0) - 244: 6(float) Load 12(inF1) - 245: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 243 244 - 246: 6(float) Load 11(inF0) - 247: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 246 - 248: 6(float) Load 11(inF0) - 249: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 248 - 250: 6(float) Load 11(inF0) - 251: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 250 - ReturnValue 224 + 172: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164 + 173: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164 + 174: 6(float) Load 11(inF0) + 175: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 174 + 176: 6(float) Load 11(inF0) + 177: 6(float) Load 12(inF1) + 178: 6(float) FMod 176 177 + 179: 6(float) Load 11(inF0) + 180: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 179 + 181: 6(float) Load 11(inF0) + 183:182(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 181 + 184: 143(int) CompositeExtract 183 1 + Store 12(inF1) 184 + 185: 6(float) CompositeExtract 183 0 + 186: 6(float) Load 11(inF0) + 187: 132(bool) IsInf 186 + 188: 6(float) Load 11(inF0) + 189: 132(bool) IsNan 188 + 190: 6(float) Load 11(inF0) + 191: 6(float) Load 12(inF1) + 192: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 190 191 + 193: 6(float) Load 11(inF0) + 194: 6(float) Load 12(inF1) + 195: 6(float) Load 13(inF2) + 196: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 193 194 195 + 197: 6(float) Load 11(inF0) + 198: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 197 + 199: 6(float) Load 11(inF0) + 200: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 199 + 202: 6(float) FMul 200 201 + 203: 6(float) Load 11(inF0) + 204: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 203 + 205: 6(float) Load 11(inF0) + 206: 6(float) Load 12(inF1) + 207: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 205 206 + 208: 6(float) Load 11(inF0) + 209: 6(float) Load 12(inF1) + 210: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 208 209 + 211: 6(float) Load 11(inF0) + 212: 6(float) Load 12(inF1) + 213: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 211 212 + 214: 6(float) Load 11(inF0) + 215: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 214 + 217: 143(int) BitReverse 216 + 218: 6(float) Load 11(inF0) + 219: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 218 + 220: 6(float) Load 11(inF0) + 221: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 220 + 222: 6(float) Load 11(inF0) + 225: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 222 223 224 + 226: 6(float) Load 11(inF0) + 227: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 226 + 228: 6(float) Load 11(inF0) + 229: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 228 + 230: 6(float) Load 11(inF0) + 231: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 230 + Store 12(inF1) 231 + 232: 6(float) Load 11(inF0) + 233: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 232 + Store 13(inF2) 233 + 234: 6(float) Load 11(inF0) + 235: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 234 + 236: 6(float) Load 11(inF0) + 237: 6(float) Load 12(inF1) + 238: 6(float) Load 13(inF2) + 239: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 236 237 238 + 240: 6(float) Load 11(inF0) + 241: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 240 + 242: 6(float) Load 11(inF0) + 243: 6(float) Load 12(inF1) + 244: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 242 243 + 245: 6(float) Load 11(inF0) + 246: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 245 + 247: 6(float) Load 11(inF0) + 248: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 247 + 249: 6(float) Load 11(inF0) + 250: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 249 + ReturnValue 223 FunctionEnd 22(VertexShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18 19(inF0): 7(ptr) FunctionParameter 20(inF1): 7(ptr) FunctionParameter 21(inF2): 7(ptr) FunctionParameter 23: Label - ReturnValue 224 + ReturnValue 223 FunctionEnd 34(VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 24(fvec2) Function None 28 29(inF0): 25(ptr) FunctionParameter @@ -3150,144 +3152,144 @@ Shader version: 450 32(inU0): 27(ptr) FunctionParameter 33(inU1): 27(ptr) FunctionParameter 35: Label - 256: 24(fvec2) Load 29(inF0) - 257: 132(bool) All 256 - 258: 24(fvec2) Load 29(inF0) - 259: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 258 - 260: 24(fvec2) Load 29(inF0) - 261: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 260 - 262: 24(fvec2) Load 29(inF0) - 263: 132(bool) Any 262 - 264: 24(fvec2) Load 29(inF0) - 265: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 264 - 266: 24(fvec2) Load 29(inF0) - 268: 267(ivec2) Bitcast 266 - 269: 24(fvec2) Load 29(inF0) - 270: 26(ivec2) Bitcast 269 - 271: 26(ivec2) Load 32(inU0) - 272: 24(fvec2) Bitcast 271 - 273: 24(fvec2) Load 29(inF0) - 274: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 273 - 275: 24(fvec2) Load 29(inF0) - 276: 24(fvec2) Load 30(inF1) - 277: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 275 276 - 278: 24(fvec2) Load 29(inF0) - 279: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 278 - 280: 24(fvec2) Load 29(inF0) - 281: 24(fvec2) Load 30(inF1) - 282: 24(fvec2) Load 31(inF2) - 283: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 280 281 282 - 284: 24(fvec2) Load 29(inF0) - 285: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 284 - 286: 24(fvec2) Load 29(inF0) - 287: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 286 - 290: 26(ivec2) BitCount 289 - 291: 24(fvec2) Load 29(inF0) - 292: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 291 - 293: 24(fvec2) Load 29(inF0) - 294: 24(fvec2) Load 30(inF1) - 295: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 293 294 - 296: 24(fvec2) Load 29(inF0) - 297: 24(fvec2) Load 30(inF1) - 298: 6(float) Dot 296 297 - 299: 24(fvec2) Load 29(inF0) - 300: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 299 - 301: 24(fvec2) Load 29(inF0) - 302: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 301 - 303: 24(fvec2) Load 29(inF0) - 304: 24(fvec2) Load 30(inF1) - 305: 24(fvec2) Load 31(inF2) - 306: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 303 304 305 - 307: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172 - 308: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172 - 309: 24(fvec2) Load 29(inF0) - 310: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 309 - 311: 24(fvec2) Load 29(inF0) - 312: 24(fvec2) Load 30(inF1) - 313: 24(fvec2) FMod 311 312 - 314: 24(fvec2) Load 29(inF0) - 315: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 314 - 316: 24(fvec2) Load 29(inF0) - 318:317(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 316 - 319: 267(ivec2) CompositeExtract 318 1 - Store 30(inF1) 319 - 320: 24(fvec2) CompositeExtract 318 0 - 321: 24(fvec2) Load 29(inF0) - 323: 322(bvec2) IsInf 321 - 324: 24(fvec2) Load 29(inF0) - 325: 322(bvec2) IsNan 324 - 326: 24(fvec2) Load 29(inF0) - 327: 24(fvec2) Load 30(inF1) - 328: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 326 327 - 329: 24(fvec2) Load 29(inF0) - 330: 24(fvec2) Load 30(inF1) - 331: 24(fvec2) Load 31(inF2) - 332: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 329 330 331 - 333: 24(fvec2) Load 29(inF0) - 334: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 333 - 335: 24(fvec2) Load 29(inF0) - 336: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 335 - 337: 24(fvec2) Load 29(inF0) - 338: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 337 - 339: 24(fvec2) VectorTimesScalar 338 202 - 340: 24(fvec2) Load 29(inF0) - 341: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 340 - 342: 24(fvec2) Load 29(inF0) - 343: 24(fvec2) Load 30(inF1) - 344: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 342 343 - 345: 24(fvec2) Load 29(inF0) - 346: 24(fvec2) Load 30(inF1) - 347: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 345 346 - 348: 24(fvec2) Load 29(inF0) - 349: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 348 - 350: 24(fvec2) Load 29(inF0) - 351: 24(fvec2) Load 30(inF1) - 352: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 350 351 - 353: 24(fvec2) Load 29(inF0) - 354: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 353 - 355: 24(fvec2) Load 29(inF0) - 356: 24(fvec2) Load 30(inF1) - 357: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 355 356 - 358: 24(fvec2) Load 29(inF0) - 359: 24(fvec2) Load 30(inF1) - 361: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 358 359 360 - 364: 26(ivec2) BitReverse 363 - 365: 24(fvec2) Load 29(inF0) - 366: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 365 - 367: 24(fvec2) Load 29(inF0) - 368: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 367 - 369: 24(fvec2) Load 29(inF0) + 255: 24(fvec2) Load 29(inF0) + 256: 132(bool) All 255 + 257: 24(fvec2) Load 29(inF0) + 258: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 257 + 259: 24(fvec2) Load 29(inF0) + 260: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 259 + 261: 24(fvec2) Load 29(inF0) + 262: 132(bool) Any 261 + 263: 24(fvec2) Load 29(inF0) + 264: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 263 + 265: 24(fvec2) Load 29(inF0) + 267: 266(ivec2) Bitcast 265 + 268: 24(fvec2) Load 29(inF0) + 269: 26(ivec2) Bitcast 268 + 270: 26(ivec2) Load 32(inU0) + 271: 24(fvec2) Bitcast 270 + 272: 24(fvec2) Load 29(inF0) + 273: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 272 + 274: 24(fvec2) Load 29(inF0) + 275: 24(fvec2) Load 30(inF1) + 276: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 274 275 + 277: 24(fvec2) Load 29(inF0) + 278: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 277 + 279: 24(fvec2) Load 29(inF0) + 280: 24(fvec2) Load 30(inF1) + 281: 24(fvec2) Load 31(inF2) + 282: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 279 280 281 + 283: 24(fvec2) Load 29(inF0) + 284: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 283 + 285: 24(fvec2) Load 29(inF0) + 286: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 285 + 289: 266(ivec2) BitCount 288 + 290: 24(fvec2) Load 29(inF0) + 291: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 290 + 292: 24(fvec2) Load 29(inF0) + 293: 24(fvec2) Load 30(inF1) + 294: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 292 293 + 295: 24(fvec2) Load 29(inF0) + 296: 24(fvec2) Load 30(inF1) + 297: 6(float) Dot 295 296 + 298: 24(fvec2) Load 29(inF0) + 299: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 298 + 300: 24(fvec2) Load 29(inF0) + 301: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 300 + 302: 24(fvec2) Load 29(inF0) + 303: 24(fvec2) Load 30(inF1) + 304: 24(fvec2) Load 31(inF2) + 305: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 302 303 304 + 306: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164 + 307: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164 + 308: 24(fvec2) Load 29(inF0) + 309: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 308 + 310: 24(fvec2) Load 29(inF0) + 311: 24(fvec2) Load 30(inF1) + 312: 24(fvec2) FMod 310 311 + 313: 24(fvec2) Load 29(inF0) + 314: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 313 + 315: 24(fvec2) Load 29(inF0) + 317:316(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 315 + 318: 266(ivec2) CompositeExtract 317 1 + Store 30(inF1) 318 + 319: 24(fvec2) CompositeExtract 317 0 + 320: 24(fvec2) Load 29(inF0) + 322: 321(bvec2) IsInf 320 + 323: 24(fvec2) Load 29(inF0) + 324: 321(bvec2) IsNan 323 + 325: 24(fvec2) Load 29(inF0) + 326: 24(fvec2) Load 30(inF1) + 327: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 325 326 + 328: 24(fvec2) Load 29(inF0) + 329: 24(fvec2) Load 30(inF1) + 330: 24(fvec2) Load 31(inF2) + 331: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 328 329 330 + 332: 24(fvec2) Load 29(inF0) + 333: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 332 + 334: 24(fvec2) Load 29(inF0) + 335: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 334 + 336: 24(fvec2) Load 29(inF0) + 337: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 336 + 338: 24(fvec2) VectorTimesScalar 337 201 + 339: 24(fvec2) Load 29(inF0) + 340: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 339 + 341: 24(fvec2) Load 29(inF0) + 342: 24(fvec2) Load 30(inF1) + 343: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 341 342 + 344: 24(fvec2) Load 29(inF0) + 345: 24(fvec2) Load 30(inF1) + 346: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 344 345 + 347: 24(fvec2) Load 29(inF0) + 348: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 347 + 349: 24(fvec2) Load 29(inF0) + 350: 24(fvec2) Load 30(inF1) + 351: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 349 350 + 352: 24(fvec2) Load 29(inF0) + 353: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 352 + 354: 24(fvec2) Load 29(inF0) + 355: 24(fvec2) Load 30(inF1) + 356: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 354 355 + 357: 24(fvec2) Load 29(inF0) + 358: 24(fvec2) Load 30(inF1) + 360: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 357 358 359 + 363: 266(ivec2) BitReverse 362 + 364: 24(fvec2) Load 29(inF0) + 365: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 364 + 366: 24(fvec2) Load 29(inF0) + 367: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 366 + 368: 24(fvec2) Load 29(inF0) + 369: 24(fvec2) CompositeConstruct 223 223 370: 24(fvec2) CompositeConstruct 224 224 - 371: 24(fvec2) CompositeConstruct 225 225 - 372: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 369 370 371 - 373: 24(fvec2) Load 29(inF0) - 374: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 373 - 375: 24(fvec2) Load 29(inF0) - 376: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 375 - 377: 24(fvec2) Load 29(inF0) - 378: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 377 - Store 30(inF1) 378 - 379: 24(fvec2) Load 29(inF0) - 380: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 379 - Store 31(inF2) 380 - 381: 24(fvec2) Load 29(inF0) - 382: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 381 - 383: 24(fvec2) Load 29(inF0) - 384: 24(fvec2) Load 30(inF1) - 385: 24(fvec2) Load 31(inF2) - 386: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 383 384 385 - 387: 24(fvec2) Load 29(inF0) - 388: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 387 - 389: 24(fvec2) Load 29(inF0) - 390: 24(fvec2) Load 30(inF1) - 391: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 389 390 - 392: 24(fvec2) Load 29(inF0) - 393: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 392 - 394: 24(fvec2) Load 29(inF0) - 395: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 394 - 396: 24(fvec2) Load 29(inF0) - 397: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 396 - ReturnValue 398 + 371: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 368 369 370 + 372: 24(fvec2) Load 29(inF0) + 373: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 372 + 374: 24(fvec2) Load 29(inF0) + 375: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 374 + 376: 24(fvec2) Load 29(inF0) + 377: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 376 + Store 30(inF1) 377 + 378: 24(fvec2) Load 29(inF0) + 379: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 378 + Store 31(inF2) 379 + 380: 24(fvec2) Load 29(inF0) + 381: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 380 + 382: 24(fvec2) Load 29(inF0) + 383: 24(fvec2) Load 30(inF1) + 384: 24(fvec2) Load 31(inF2) + 385: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 382 383 384 + 386: 24(fvec2) Load 29(inF0) + 387: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 386 + 388: 24(fvec2) Load 29(inF0) + 389: 24(fvec2) Load 30(inF1) + 390: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 388 389 + 391: 24(fvec2) Load 29(inF0) + 392: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 391 + 393: 24(fvec2) Load 29(inF0) + 394: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 393 + 395: 24(fvec2) Load 29(inF0) + 396: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 395 + ReturnValue 397 FunctionEnd 46(VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40 41(inF0): 37(ptr) FunctionParameter @@ -3296,147 +3298,147 @@ Shader version: 450 44(inU0): 39(ptr) FunctionParameter 45(inU1): 39(ptr) FunctionParameter 47: Label - 401: 36(fvec3) Load 41(inF0) - 402: 132(bool) All 401 - 403: 36(fvec3) Load 41(inF0) - 404: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 403 - 405: 36(fvec3) Load 41(inF0) - 406: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 405 - 407: 36(fvec3) Load 41(inF0) - 408: 132(bool) Any 407 - 409: 36(fvec3) Load 41(inF0) - 410: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 409 - 411: 36(fvec3) Load 41(inF0) - 413: 412(ivec3) Bitcast 411 - 414: 36(fvec3) Load 41(inF0) - 415: 38(ivec3) Bitcast 414 - 416: 38(ivec3) Load 44(inU0) - 417: 36(fvec3) Bitcast 416 - 418: 36(fvec3) Load 41(inF0) - 419: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 418 - 420: 36(fvec3) Load 41(inF0) - 421: 36(fvec3) Load 42(inF1) - 422: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 420 421 - 423: 36(fvec3) Load 41(inF0) - 424: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 423 - 425: 36(fvec3) Load 41(inF0) - 426: 36(fvec3) Load 42(inF1) - 427: 36(fvec3) Load 43(inF2) - 428: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 425 426 427 - 429: 36(fvec3) Load 41(inF0) - 430: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 429 - 431: 36(fvec3) Load 41(inF0) - 432: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 431 - 435: 38(ivec3) BitCount 434 - 436: 36(fvec3) Load 41(inF0) - 437: 36(fvec3) Load 42(inF1) - 438: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 436 437 - 439: 36(fvec3) Load 41(inF0) - 440: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 439 - 441: 36(fvec3) Load 41(inF0) - 442: 36(fvec3) Load 42(inF1) - 443: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 441 442 - 444: 36(fvec3) Load 41(inF0) - 445: 36(fvec3) Load 42(inF1) - 446: 6(float) Dot 444 445 - 447: 36(fvec3) Load 41(inF0) - 448: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 447 - 449: 36(fvec3) Load 41(inF0) - 450: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 449 - 451: 36(fvec3) Load 41(inF0) - 452: 36(fvec3) Load 42(inF1) - 453: 36(fvec3) Load 43(inF2) - 454: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 451 452 453 - 455: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172 - 456: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172 - 457: 36(fvec3) Load 41(inF0) - 458: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 457 - 459: 36(fvec3) Load 41(inF0) - 460: 36(fvec3) Load 42(inF1) - 461: 36(fvec3) FMod 459 460 - 462: 36(fvec3) Load 41(inF0) - 463: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 462 - 464: 36(fvec3) Load 41(inF0) - 466:465(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 464 - 467: 412(ivec3) CompositeExtract 466 1 - Store 42(inF1) 467 - 468: 36(fvec3) CompositeExtract 466 0 - 469: 36(fvec3) Load 41(inF0) - 471: 470(bvec3) IsInf 469 - 472: 36(fvec3) Load 41(inF0) - 473: 470(bvec3) IsNan 472 - 474: 36(fvec3) Load 41(inF0) - 475: 36(fvec3) Load 42(inF1) - 476: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 474 475 - 477: 36(fvec3) Load 41(inF0) - 478: 36(fvec3) Load 42(inF1) - 479: 36(fvec3) Load 43(inF2) - 480: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 477 478 479 - 481: 36(fvec3) Load 41(inF0) - 482: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 481 - 483: 36(fvec3) Load 41(inF0) - 484: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 483 - 485: 36(fvec3) Load 41(inF0) - 486: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 485 - 487: 36(fvec3) VectorTimesScalar 486 202 - 488: 36(fvec3) Load 41(inF0) - 489: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 488 - 490: 36(fvec3) Load 41(inF0) - 491: 36(fvec3) Load 42(inF1) - 492: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 490 491 - 493: 36(fvec3) Load 41(inF0) - 494: 36(fvec3) Load 42(inF1) - 495: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 493 494 - 496: 36(fvec3) Load 41(inF0) - 497: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 496 - 498: 36(fvec3) Load 41(inF0) - 499: 36(fvec3) Load 42(inF1) - 500: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 498 499 - 501: 36(fvec3) Load 41(inF0) - 502: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 501 - 503: 36(fvec3) Load 41(inF0) - 504: 36(fvec3) Load 42(inF1) - 505: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 503 504 - 506: 36(fvec3) Load 41(inF0) - 507: 36(fvec3) Load 42(inF1) - 508: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 506 507 360 - 510: 38(ivec3) BitReverse 509 - 511: 36(fvec3) Load 41(inF0) - 512: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 511 - 513: 36(fvec3) Load 41(inF0) - 514: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 513 - 515: 36(fvec3) Load 41(inF0) + 400: 36(fvec3) Load 41(inF0) + 401: 132(bool) All 400 + 402: 36(fvec3) Load 41(inF0) + 403: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 402 + 404: 36(fvec3) Load 41(inF0) + 405: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 404 + 406: 36(fvec3) Load 41(inF0) + 407: 132(bool) Any 406 + 408: 36(fvec3) Load 41(inF0) + 409: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 408 + 410: 36(fvec3) Load 41(inF0) + 412: 411(ivec3) Bitcast 410 + 413: 36(fvec3) Load 41(inF0) + 414: 38(ivec3) Bitcast 413 + 415: 38(ivec3) Load 44(inU0) + 416: 36(fvec3) Bitcast 415 + 417: 36(fvec3) Load 41(inF0) + 418: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 417 + 419: 36(fvec3) Load 41(inF0) + 420: 36(fvec3) Load 42(inF1) + 421: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 419 420 + 422: 36(fvec3) Load 41(inF0) + 423: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 422 + 424: 36(fvec3) Load 41(inF0) + 425: 36(fvec3) Load 42(inF1) + 426: 36(fvec3) Load 43(inF2) + 427: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 424 425 426 + 428: 36(fvec3) Load 41(inF0) + 429: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 428 + 430: 36(fvec3) Load 41(inF0) + 431: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 430 + 434: 411(ivec3) BitCount 433 + 435: 36(fvec3) Load 41(inF0) + 436: 36(fvec3) Load 42(inF1) + 437: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 435 436 + 438: 36(fvec3) Load 41(inF0) + 439: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 438 + 440: 36(fvec3) Load 41(inF0) + 441: 36(fvec3) Load 42(inF1) + 442: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 440 441 + 443: 36(fvec3) Load 41(inF0) + 444: 36(fvec3) Load 42(inF1) + 445: 6(float) Dot 443 444 + 446: 36(fvec3) Load 41(inF0) + 447: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 446 + 448: 36(fvec3) Load 41(inF0) + 449: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 448 + 450: 36(fvec3) Load 41(inF0) + 451: 36(fvec3) Load 42(inF1) + 452: 36(fvec3) Load 43(inF2) + 453: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 450 451 452 + 454: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164 + 455: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164 + 456: 36(fvec3) Load 41(inF0) + 457: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 456 + 458: 36(fvec3) Load 41(inF0) + 459: 36(fvec3) Load 42(inF1) + 460: 36(fvec3) FMod 458 459 + 461: 36(fvec3) Load 41(inF0) + 462: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 461 + 463: 36(fvec3) Load 41(inF0) + 465:464(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 463 + 466: 411(ivec3) CompositeExtract 465 1 + Store 42(inF1) 466 + 467: 36(fvec3) CompositeExtract 465 0 + 468: 36(fvec3) Load 41(inF0) + 470: 469(bvec3) IsInf 468 + 471: 36(fvec3) Load 41(inF0) + 472: 469(bvec3) IsNan 471 + 473: 36(fvec3) Load 41(inF0) + 474: 36(fvec3) Load 42(inF1) + 475: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 473 474 + 476: 36(fvec3) Load 41(inF0) + 477: 36(fvec3) Load 42(inF1) + 478: 36(fvec3) Load 43(inF2) + 479: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 476 477 478 + 480: 36(fvec3) Load 41(inF0) + 481: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 480 + 482: 36(fvec3) Load 41(inF0) + 483: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 482 + 484: 36(fvec3) Load 41(inF0) + 485: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 484 + 486: 36(fvec3) VectorTimesScalar 485 201 + 487: 36(fvec3) Load 41(inF0) + 488: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 487 + 489: 36(fvec3) Load 41(inF0) + 490: 36(fvec3) Load 42(inF1) + 491: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 489 490 + 492: 36(fvec3) Load 41(inF0) + 493: 36(fvec3) Load 42(inF1) + 494: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 492 493 + 495: 36(fvec3) Load 41(inF0) + 496: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 495 + 497: 36(fvec3) Load 41(inF0) + 498: 36(fvec3) Load 42(inF1) + 499: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 497 498 + 500: 36(fvec3) Load 41(inF0) + 501: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 500 + 502: 36(fvec3) Load 41(inF0) + 503: 36(fvec3) Load 42(inF1) + 504: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 502 503 + 505: 36(fvec3) Load 41(inF0) + 506: 36(fvec3) Load 42(inF1) + 507: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 505 506 359 + 509: 411(ivec3) BitReverse 508 + 510: 36(fvec3) Load 41(inF0) + 511: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 510 + 512: 36(fvec3) Load 41(inF0) + 513: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 512 + 514: 36(fvec3) Load 41(inF0) + 515: 36(fvec3) CompositeConstruct 223 223 223 516: 36(fvec3) CompositeConstruct 224 224 224 - 517: 36(fvec3) CompositeConstruct 225 225 225 - 518: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 515 516 517 - 519: 36(fvec3) Load 41(inF0) - 520: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 519 - 521: 36(fvec3) Load 41(inF0) - 522: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 521 - 523: 36(fvec3) Load 41(inF0) - 524: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 523 - Store 42(inF1) 524 - 525: 36(fvec3) Load 41(inF0) - 526: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 525 - Store 43(inF2) 526 - 527: 36(fvec3) Load 41(inF0) - 528: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 527 - 529: 36(fvec3) Load 41(inF0) - 530: 36(fvec3) Load 42(inF1) - 531: 36(fvec3) Load 43(inF2) - 532: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 529 530 531 - 533: 36(fvec3) Load 41(inF0) - 534: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 533 - 535: 36(fvec3) Load 41(inF0) - 536: 36(fvec3) Load 42(inF1) - 537: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 535 536 - 538: 36(fvec3) Load 41(inF0) - 539: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 538 - 540: 36(fvec3) Load 41(inF0) - 541: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 540 - 542: 36(fvec3) Load 41(inF0) - 543: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 542 - ReturnValue 545 + 517: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 514 515 516 + 518: 36(fvec3) Load 41(inF0) + 519: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 518 + 520: 36(fvec3) Load 41(inF0) + 521: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 520 + 522: 36(fvec3) Load 41(inF0) + 523: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 522 + Store 42(inF1) 523 + 524: 36(fvec3) Load 41(inF0) + 525: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 524 + Store 43(inF2) 525 + 526: 36(fvec3) Load 41(inF0) + 527: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 526 + 528: 36(fvec3) Load 41(inF0) + 529: 36(fvec3) Load 42(inF1) + 530: 36(fvec3) Load 43(inF2) + 531: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 528 529 530 + 532: 36(fvec3) Load 41(inF0) + 533: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 532 + 534: 36(fvec3) Load 41(inF0) + 535: 36(fvec3) Load 42(inF1) + 536: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 534 535 + 537: 36(fvec3) Load 41(inF0) + 538: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 537 + 539: 36(fvec3) Load 41(inF0) + 540: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 539 + 541: 36(fvec3) Load 41(inF0) + 542: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 541 + ReturnValue 544 FunctionEnd 58(VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52 53(inF0): 49(ptr) FunctionParameter @@ -3445,529 +3447,529 @@ Shader version: 450 56(inU0): 51(ptr) FunctionParameter 57(inU1): 51(ptr) FunctionParameter 59: Label - 548: 48(fvec4) Load 53(inF0) - 549: 132(bool) All 548 - 550: 48(fvec4) Load 53(inF0) - 551: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 550 - 552: 48(fvec4) Load 53(inF0) - 553: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 552 - 554: 48(fvec4) Load 53(inF0) - 555: 132(bool) Any 554 - 556: 48(fvec4) Load 53(inF0) - 557: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 556 - 558: 48(fvec4) Load 53(inF0) - 560: 559(ivec4) Bitcast 558 - 561: 48(fvec4) Load 53(inF0) - 562: 50(ivec4) Bitcast 561 - 563: 50(ivec4) Load 56(inU0) - 564: 48(fvec4) Bitcast 563 - 565: 48(fvec4) Load 53(inF0) - 566: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 565 - 567: 48(fvec4) Load 53(inF0) - 568: 48(fvec4) Load 54(inF1) - 569: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 567 568 - 570: 48(fvec4) Load 53(inF0) - 571: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 570 - 572: 48(fvec4) Load 53(inF0) - 573: 48(fvec4) Load 54(inF1) - 574: 48(fvec4) Load 55(inF2) - 575: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 572 573 574 - 576: 48(fvec4) Load 53(inF0) - 577: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 576 - 578: 48(fvec4) Load 53(inF0) - 579: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 578 - 581: 50(ivec4) BitCount 580 - 582: 48(fvec4) Load 53(inF0) - 583: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 582 - 584: 48(fvec4) Load 53(inF0) - 585: 48(fvec4) Load 54(inF1) - 586: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 584 585 - 587: 48(fvec4) Load 53(inF0) - 588: 48(fvec4) Load 54(inF1) - 589: 6(float) Dot 587 588 - 590: 7(ptr) AccessChain 53(inF0) 362 + 547: 48(fvec4) Load 53(inF0) + 548: 132(bool) All 547 + 549: 48(fvec4) Load 53(inF0) + 550: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 549 + 551: 48(fvec4) Load 53(inF0) + 552: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 551 + 553: 48(fvec4) Load 53(inF0) + 554: 132(bool) Any 553 + 555: 48(fvec4) Load 53(inF0) + 556: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 555 + 557: 48(fvec4) Load 53(inF0) + 559: 558(ivec4) Bitcast 557 + 560: 48(fvec4) Load 53(inF0) + 561: 50(ivec4) Bitcast 560 + 562: 50(ivec4) Load 56(inU0) + 563: 48(fvec4) Bitcast 562 + 564: 48(fvec4) Load 53(inF0) + 565: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 564 + 566: 48(fvec4) Load 53(inF0) + 567: 48(fvec4) Load 54(inF1) + 568: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 566 567 + 569: 48(fvec4) Load 53(inF0) + 570: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 569 + 571: 48(fvec4) Load 53(inF0) + 572: 48(fvec4) Load 54(inF1) + 573: 48(fvec4) Load 55(inF2) + 574: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 571 572 573 + 575: 48(fvec4) Load 53(inF0) + 576: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 575 + 577: 48(fvec4) Load 53(inF0) + 578: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 577 + 580: 558(ivec4) BitCount 579 + 581: 48(fvec4) Load 53(inF0) + 582: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 581 + 583: 48(fvec4) Load 53(inF0) + 584: 48(fvec4) Load 54(inF1) + 585: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 583 584 + 586: 48(fvec4) Load 53(inF0) + 587: 48(fvec4) Load 54(inF1) + 588: 6(float) Dot 586 587 + 590: 7(ptr) AccessChain 53(inF0) 589 591: 6(float) Load 590 - 592: 7(ptr) AccessChain 54(inF1) 362 + 592: 7(ptr) AccessChain 54(inF1) 589 593: 6(float) Load 592 594: 6(float) FMul 591 593 - 595: 7(ptr) AccessChain 53(inF0) 217 - 596: 6(float) Load 595 - 597: 7(ptr) AccessChain 54(inF1) 288 - 598: 6(float) Load 597 - 599: 48(fvec4) CompositeConstruct 225 594 596 598 - 600: 48(fvec4) Load 53(inF0) - 601: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 600 + 596: 7(ptr) AccessChain 53(inF0) 595 + 597: 6(float) Load 596 + 599: 7(ptr) AccessChain 54(inF1) 598 + 600: 6(float) Load 599 + 601: 48(fvec4) CompositeConstruct 224 594 597 600 602: 48(fvec4) Load 53(inF0) - 603: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 602 + 603: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 602 604: 48(fvec4) Load 53(inF0) - 605: 48(fvec4) Load 54(inF1) - 606: 48(fvec4) Load 55(inF2) - 607: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 604 605 606 - 608: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172 - 609: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172 - 610: 48(fvec4) Load 53(inF0) - 611: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 610 + 605: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 604 + 606: 48(fvec4) Load 53(inF0) + 607: 48(fvec4) Load 54(inF1) + 608: 48(fvec4) Load 55(inF2) + 609: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 606 607 608 + 610: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164 + 611: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164 612: 48(fvec4) Load 53(inF0) - 613: 48(fvec4) Load 54(inF1) - 614: 48(fvec4) FMod 612 613 - 615: 48(fvec4) Load 53(inF0) - 616: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 615 + 613: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 612 + 614: 48(fvec4) Load 53(inF0) + 615: 48(fvec4) Load 54(inF1) + 616: 48(fvec4) FMod 614 615 617: 48(fvec4) Load 53(inF0) - 619:618(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 617 - 620: 559(ivec4) CompositeExtract 619 1 - Store 54(inF1) 620 - 621: 48(fvec4) CompositeExtract 619 0 - 622: 48(fvec4) Load 53(inF0) - 624: 623(bvec4) IsInf 622 - 625: 48(fvec4) Load 53(inF0) - 626: 623(bvec4) IsNan 625 + 618: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 617 + 619: 48(fvec4) Load 53(inF0) + 621:620(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 619 + 622: 558(ivec4) CompositeExtract 621 1 + Store 54(inF1) 622 + 623: 48(fvec4) CompositeExtract 621 0 + 624: 48(fvec4) Load 53(inF0) + 626: 625(bvec4) IsInf 624 627: 48(fvec4) Load 53(inF0) - 628: 48(fvec4) Load 54(inF1) - 629: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 627 628 - 630: 48(fvec4) Load 53(inF0) - 631: 48(fvec4) Load 54(inF1) - 632: 48(fvec4) Load 55(inF2) - 633: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 630 631 632 - 634: 48(fvec4) Load 53(inF0) - 635: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 634 + 628: 625(bvec4) IsNan 627 + 629: 48(fvec4) Load 53(inF0) + 630: 48(fvec4) Load 54(inF1) + 631: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 629 630 + 632: 48(fvec4) Load 53(inF0) + 633: 48(fvec4) Load 54(inF1) + 634: 48(fvec4) Load 55(inF2) + 635: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 632 633 634 636: 48(fvec4) Load 53(inF0) - 637: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 636 + 637: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 636 638: 48(fvec4) Load 53(inF0) - 639: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 638 - 640: 48(fvec4) VectorTimesScalar 639 202 - 641: 48(fvec4) Load 53(inF0) - 642: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 641 + 639: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 638 + 640: 48(fvec4) Load 53(inF0) + 641: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 640 + 642: 48(fvec4) VectorTimesScalar 641 201 643: 48(fvec4) Load 53(inF0) - 644: 48(fvec4) Load 54(inF1) - 645: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 643 644 - 646: 48(fvec4) Load 53(inF0) - 647: 48(fvec4) Load 54(inF1) - 648: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 646 647 - 649: 48(fvec4) Load 53(inF0) - 650: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 649 + 644: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 643 + 645: 48(fvec4) Load 53(inF0) + 646: 48(fvec4) Load 54(inF1) + 647: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 645 646 + 648: 48(fvec4) Load 53(inF0) + 649: 48(fvec4) Load 54(inF1) + 650: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 648 649 651: 48(fvec4) Load 53(inF0) - 652: 48(fvec4) Load 54(inF1) - 653: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 651 652 - 654: 48(fvec4) Load 53(inF0) - 655: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 654 + 652: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 651 + 653: 48(fvec4) Load 53(inF0) + 654: 48(fvec4) Load 54(inF1) + 655: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 653 654 656: 48(fvec4) Load 53(inF0) - 657: 48(fvec4) Load 54(inF1) - 658: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 656 657 - 659: 48(fvec4) Load 53(inF0) - 660: 48(fvec4) Load 54(inF1) - 661: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 659 660 360 - 664: 50(ivec4) BitReverse 663 - 665: 48(fvec4) Load 53(inF0) - 666: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 665 + 657: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 656 + 658: 48(fvec4) Load 53(inF0) + 659: 48(fvec4) Load 54(inF1) + 660: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 658 659 + 661: 48(fvec4) Load 53(inF0) + 662: 48(fvec4) Load 54(inF1) + 663: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 661 662 359 + 666: 558(ivec4) BitReverse 665 667: 48(fvec4) Load 53(inF0) - 668: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 667 + 668: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 667 669: 48(fvec4) Load 53(inF0) - 670: 48(fvec4) CompositeConstruct 224 224 224 224 - 671: 48(fvec4) CompositeConstruct 225 225 225 225 - 672: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 669 670 671 - 673: 48(fvec4) Load 53(inF0) - 674: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 673 + 670: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 669 + 671: 48(fvec4) Load 53(inF0) + 672: 48(fvec4) CompositeConstruct 223 223 223 223 + 673: 48(fvec4) CompositeConstruct 224 224 224 224 + 674: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 671 672 673 675: 48(fvec4) Load 53(inF0) - 676: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 675 + 676: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 675 677: 48(fvec4) Load 53(inF0) 678: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 677 - Store 54(inF1) 678 679: 48(fvec4) Load 53(inF0) - 680: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 679 - Store 55(inF2) 680 + 680: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 679 + Store 54(inF1) 680 681: 48(fvec4) Load 53(inF0) - 682: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 681 + 682: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 681 + Store 55(inF2) 682 683: 48(fvec4) Load 53(inF0) - 684: 48(fvec4) Load 54(inF1) - 685: 48(fvec4) Load 55(inF2) - 686: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 683 684 685 - 687: 48(fvec4) Load 53(inF0) - 688: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 687 + 684: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 683 + 685: 48(fvec4) Load 53(inF0) + 686: 48(fvec4) Load 54(inF1) + 687: 48(fvec4) Load 55(inF2) + 688: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 685 686 687 689: 48(fvec4) Load 53(inF0) - 690: 48(fvec4) Load 54(inF1) - 691: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 689 690 - 692: 48(fvec4) Load 53(inF0) - 693: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 692 + 690: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 689 + 691: 48(fvec4) Load 53(inF0) + 692: 48(fvec4) Load 54(inF1) + 693: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 691 692 694: 48(fvec4) Load 53(inF0) - 695: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 694 + 695: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 694 696: 48(fvec4) Load 53(inF0) - 697: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 696 - ReturnValue 699 + 697: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 696 + 698: 48(fvec4) Load 53(inF0) + 699: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 698 + ReturnValue 701 FunctionEnd 66(VertexShaderFunction2x2(mf22;mf22;mf22;): 60 Function None 62 63(inF0): 61(ptr) FunctionParameter 64(inF1): 61(ptr) FunctionParameter 65(inF2): 61(ptr) FunctionParameter 67: Label - 702: 60 Load 63(inF0) - 703: 132(bool) All 702 704: 60 Load 63(inF0) - 705: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 704 + 705: 132(bool) All 704 706: 60 Load 63(inF0) - 707: 60 ExtInst 1(GLSL.std.450) 17(Acos) 706 + 707: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 706 708: 60 Load 63(inF0) - 709: 132(bool) Any 708 + 709: 60 ExtInst 1(GLSL.std.450) 17(Acos) 708 710: 60 Load 63(inF0) - 711: 60 ExtInst 1(GLSL.std.450) 16(Asin) 710 + 711: 132(bool) Any 710 712: 60 Load 63(inF0) - 713: 60 ExtInst 1(GLSL.std.450) 18(Atan) 712 + 713: 60 ExtInst 1(GLSL.std.450) 16(Asin) 712 714: 60 Load 63(inF0) - 715: 60 Load 64(inF1) - 716: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 714 715 - 717: 60 Load 63(inF0) - 718: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 717 + 715: 60 ExtInst 1(GLSL.std.450) 18(Atan) 714 + 716: 60 Load 63(inF0) + 717: 60 Load 64(inF1) + 718: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 716 717 719: 60 Load 63(inF0) - 720: 60 Load 64(inF1) - 721: 60 Load 65(inF2) - 722: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 719 720 721 - 723: 60 Load 63(inF0) - 724: 60 ExtInst 1(GLSL.std.450) 14(Cos) 723 + 720: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 719 + 721: 60 Load 63(inF0) + 722: 60 Load 64(inF1) + 723: 60 Load 65(inF2) + 724: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 721 722 723 725: 60 Load 63(inF0) - 726: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 725 + 726: 60 ExtInst 1(GLSL.std.450) 14(Cos) 725 727: 60 Load 63(inF0) - 728: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 727 + 728: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 727 729: 60 Load 63(inF0) - 730: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 729 + 730: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 729 731: 60 Load 63(inF0) - 732: 60 ExtInst 1(GLSL.std.450) 27(Exp) 731 + 732: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 731 733: 60 Load 63(inF0) - 734: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 733 - 735: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172 - 736: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172 - 737: 60 Load 63(inF0) - 738: 60 ExtInst 1(GLSL.std.450) 8(Floor) 737 + 734: 60 ExtInst 1(GLSL.std.450) 27(Exp) 733 + 735: 60 Load 63(inF0) + 736: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 735 + 737: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164 + 738: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164 739: 60 Load 63(inF0) - 740: 60 Load 64(inF1) - 741: 24(fvec2) CompositeExtract 739 0 - 742: 24(fvec2) CompositeExtract 740 0 - 743: 24(fvec2) FMod 741 742 - 744: 24(fvec2) CompositeExtract 739 1 - 745: 24(fvec2) CompositeExtract 740 1 - 746: 24(fvec2) FMod 744 745 - 747: 60 CompositeConstruct 743 746 - 748: 60 Load 63(inF0) - 749: 60 ExtInst 1(GLSL.std.450) 10(Fract) 748 + 740: 60 ExtInst 1(GLSL.std.450) 8(Floor) 739 + 741: 60 Load 63(inF0) + 742: 60 Load 64(inF1) + 743: 24(fvec2) CompositeExtract 741 0 + 744: 24(fvec2) CompositeExtract 742 0 + 745: 24(fvec2) FMod 743 744 + 746: 24(fvec2) CompositeExtract 741 1 + 747: 24(fvec2) CompositeExtract 742 1 + 748: 24(fvec2) FMod 746 747 + 749: 60 CompositeConstruct 745 748 750: 60 Load 63(inF0) - 752:751(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 750 - 753: 267(ivec2) CompositeExtract 752 1 - Store 64(inF1) 753 - 754: 60 CompositeExtract 752 0 - 755: 60 Load 63(inF0) - 756: 60 Load 64(inF1) - 757: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 755 756 - 758: 60 Load 63(inF0) - 759: 60 Load 64(inF1) - 760: 60 Load 65(inF2) - 761: 60 ExtInst 1(GLSL.std.450) 46(FMix) 758 759 760 - 762: 60 Load 63(inF0) - 763: 60 ExtInst 1(GLSL.std.450) 28(Log) 762 + 751: 60 ExtInst 1(GLSL.std.450) 10(Fract) 750 + 752: 60 Load 63(inF0) + 754:753(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 752 + 755: 266(ivec2) CompositeExtract 754 1 + Store 64(inF1) 755 + 756: 60 CompositeExtract 754 0 + 757: 60 Load 63(inF0) + 758: 60 Load 64(inF1) + 759: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 757 758 + 760: 60 Load 63(inF0) + 761: 60 Load 64(inF1) + 762: 60 Load 65(inF2) + 763: 60 ExtInst 1(GLSL.std.450) 46(FMix) 760 761 762 764: 60 Load 63(inF0) - 765: 60 ExtInst 1(GLSL.std.450) 30(Log2) 764 - 766: 60 MatrixTimesScalar 765 202 - 767: 60 Load 63(inF0) - 768: 60 ExtInst 1(GLSL.std.450) 30(Log2) 767 + 765: 60 ExtInst 1(GLSL.std.450) 28(Log) 764 + 766: 60 Load 63(inF0) + 767: 60 ExtInst 1(GLSL.std.450) 30(Log2) 766 + 768: 60 MatrixTimesScalar 767 201 769: 60 Load 63(inF0) - 770: 60 Load 64(inF1) - 771: 60 ExtInst 1(GLSL.std.450) 40(FMax) 769 770 - 772: 60 Load 63(inF0) - 773: 60 Load 64(inF1) - 774: 60 ExtInst 1(GLSL.std.450) 37(FMin) 772 773 - 775: 60 Load 63(inF0) - 776: 60 Load 64(inF1) - 777: 60 ExtInst 1(GLSL.std.450) 26(Pow) 775 776 - 778: 60 Load 63(inF0) - 779: 60 ExtInst 1(GLSL.std.450) 11(Radians) 778 + 770: 60 ExtInst 1(GLSL.std.450) 30(Log2) 769 + 771: 60 Load 63(inF0) + 772: 60 Load 64(inF1) + 773: 60 ExtInst 1(GLSL.std.450) 40(FMax) 771 772 + 774: 60 Load 63(inF0) + 775: 60 Load 64(inF1) + 776: 60 ExtInst 1(GLSL.std.450) 37(FMin) 774 775 + 777: 60 Load 63(inF0) + 778: 60 Load 64(inF1) + 779: 60 ExtInst 1(GLSL.std.450) 26(Pow) 777 778 780: 60 Load 63(inF0) - 781: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 780 + 781: 60 ExtInst 1(GLSL.std.450) 11(Radians) 780 782: 60 Load 63(inF0) - 783: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 782 + 783: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 782 784: 60 Load 63(inF0) - 785: 24(fvec2) CompositeConstruct 224 224 - 786: 24(fvec2) CompositeConstruct 225 225 - 787: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 784 785 786 - 788: 60 Load 63(inF0) - 789: 60 ExtInst 1(GLSL.std.450) 6(FSign) 788 + 785: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 784 + 786: 60 Load 63(inF0) + 787: 24(fvec2) CompositeConstruct 223 223 + 788: 24(fvec2) CompositeConstruct 224 224 + 789: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 786 787 788 790: 60 Load 63(inF0) - 791: 60 ExtInst 1(GLSL.std.450) 13(Sin) 790 + 791: 60 ExtInst 1(GLSL.std.450) 6(FSign) 790 792: 60 Load 63(inF0) 793: 60 ExtInst 1(GLSL.std.450) 13(Sin) 792 - Store 64(inF1) 793 794: 60 Load 63(inF0) - 795: 60 ExtInst 1(GLSL.std.450) 14(Cos) 794 - Store 65(inF2) 795 + 795: 60 ExtInst 1(GLSL.std.450) 13(Sin) 794 + Store 64(inF1) 795 796: 60 Load 63(inF0) - 797: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 796 + 797: 60 ExtInst 1(GLSL.std.450) 14(Cos) 796 + Store 65(inF2) 797 798: 60 Load 63(inF0) - 799: 60 Load 64(inF1) - 800: 60 Load 65(inF2) - 801: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 798 799 800 - 802: 60 Load 63(inF0) - 803: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 802 + 799: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 798 + 800: 60 Load 63(inF0) + 801: 60 Load 64(inF1) + 802: 60 Load 65(inF2) + 803: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 800 801 802 804: 60 Load 63(inF0) - 805: 60 Load 64(inF1) - 806: 60 ExtInst 1(GLSL.std.450) 48(Step) 804 805 - 807: 60 Load 63(inF0) - 808: 60 ExtInst 1(GLSL.std.450) 15(Tan) 807 + 805: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 804 + 806: 60 Load 63(inF0) + 807: 60 Load 64(inF1) + 808: 60 ExtInst 1(GLSL.std.450) 48(Step) 806 807 809: 60 Load 63(inF0) - 810: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 809 + 810: 60 ExtInst 1(GLSL.std.450) 15(Tan) 809 811: 60 Load 63(inF0) - 812: 60 Transpose 811 + 812: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 811 813: 60 Load 63(inF0) - 814: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 813 - ReturnValue 816 + 814: 60 Transpose 813 + 815: 60 Load 63(inF0) + 816: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 815 + ReturnValue 818 FunctionEnd 74(VertexShaderFunction3x3(mf33;mf33;mf33;): 68 Function None 70 71(inF0): 69(ptr) FunctionParameter 72(inF1): 69(ptr) FunctionParameter 73(inF2): 69(ptr) FunctionParameter 75: Label - 819: 68 Load 71(inF0) - 820: 132(bool) All 819 821: 68 Load 71(inF0) - 822: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 821 + 822: 132(bool) All 821 823: 68 Load 71(inF0) - 824: 68 ExtInst 1(GLSL.std.450) 17(Acos) 823 + 824: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 823 825: 68 Load 71(inF0) - 826: 132(bool) Any 825 + 826: 68 ExtInst 1(GLSL.std.450) 17(Acos) 825 827: 68 Load 71(inF0) - 828: 68 ExtInst 1(GLSL.std.450) 16(Asin) 827 + 828: 132(bool) Any 827 829: 68 Load 71(inF0) - 830: 68 ExtInst 1(GLSL.std.450) 18(Atan) 829 + 830: 68 ExtInst 1(GLSL.std.450) 16(Asin) 829 831: 68 Load 71(inF0) - 832: 68 Load 72(inF1) - 833: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 831 832 - 834: 68 Load 71(inF0) - 835: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 834 + 832: 68 ExtInst 1(GLSL.std.450) 18(Atan) 831 + 833: 68 Load 71(inF0) + 834: 68 Load 72(inF1) + 835: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 833 834 836: 68 Load 71(inF0) - 837: 68 Load 72(inF1) - 838: 68 Load 73(inF2) - 839: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 836 837 838 - 840: 68 Load 71(inF0) - 841: 68 ExtInst 1(GLSL.std.450) 14(Cos) 840 + 837: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 836 + 838: 68 Load 71(inF0) + 839: 68 Load 72(inF1) + 840: 68 Load 73(inF2) + 841: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 838 839 840 842: 68 Load 71(inF0) - 843: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 842 + 843: 68 ExtInst 1(GLSL.std.450) 14(Cos) 842 844: 68 Load 71(inF0) - 845: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 844 + 845: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 844 846: 68 Load 71(inF0) - 847: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 846 + 847: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 846 848: 68 Load 71(inF0) - 849: 68 ExtInst 1(GLSL.std.450) 27(Exp) 848 + 849: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 848 850: 68 Load 71(inF0) - 851: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 850 - 852: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172 - 853: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172 - 854: 68 Load 71(inF0) - 855: 68 ExtInst 1(GLSL.std.450) 8(Floor) 854 + 851: 68 ExtInst 1(GLSL.std.450) 27(Exp) 850 + 852: 68 Load 71(inF0) + 853: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 852 + 854: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164 + 855: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164 856: 68 Load 71(inF0) - 857: 68 Load 72(inF1) - 858: 36(fvec3) CompositeExtract 856 0 - 859: 36(fvec3) CompositeExtract 857 0 - 860: 36(fvec3) FMod 858 859 - 861: 36(fvec3) CompositeExtract 856 1 - 862: 36(fvec3) CompositeExtract 857 1 - 863: 36(fvec3) FMod 861 862 - 864: 36(fvec3) CompositeExtract 856 2 - 865: 36(fvec3) CompositeExtract 857 2 - 866: 36(fvec3) FMod 864 865 - 867: 68 CompositeConstruct 860 863 866 - 868: 68 Load 71(inF0) - 869: 68 ExtInst 1(GLSL.std.450) 10(Fract) 868 + 857: 68 ExtInst 1(GLSL.std.450) 8(Floor) 856 + 858: 68 Load 71(inF0) + 859: 68 Load 72(inF1) + 860: 36(fvec3) CompositeExtract 858 0 + 861: 36(fvec3) CompositeExtract 859 0 + 862: 36(fvec3) FMod 860 861 + 863: 36(fvec3) CompositeExtract 858 1 + 864: 36(fvec3) CompositeExtract 859 1 + 865: 36(fvec3) FMod 863 864 + 866: 36(fvec3) CompositeExtract 858 2 + 867: 36(fvec3) CompositeExtract 859 2 + 868: 36(fvec3) FMod 866 867 + 869: 68 CompositeConstruct 862 865 868 870: 68 Load 71(inF0) - 872:871(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 870 - 873: 412(ivec3) CompositeExtract 872 1 - Store 72(inF1) 873 - 874: 68 CompositeExtract 872 0 - 875: 68 Load 71(inF0) - 876: 68 Load 72(inF1) - 877: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 875 876 - 878: 68 Load 71(inF0) - 879: 68 Load 72(inF1) - 880: 68 Load 73(inF2) - 881: 68 ExtInst 1(GLSL.std.450) 46(FMix) 878 879 880 - 882: 68 Load 71(inF0) - 883: 68 ExtInst 1(GLSL.std.450) 28(Log) 882 + 871: 68 ExtInst 1(GLSL.std.450) 10(Fract) 870 + 872: 68 Load 71(inF0) + 874:873(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 872 + 875: 411(ivec3) CompositeExtract 874 1 + Store 72(inF1) 875 + 876: 68 CompositeExtract 874 0 + 877: 68 Load 71(inF0) + 878: 68 Load 72(inF1) + 879: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 877 878 + 880: 68 Load 71(inF0) + 881: 68 Load 72(inF1) + 882: 68 Load 73(inF2) + 883: 68 ExtInst 1(GLSL.std.450) 46(FMix) 880 881 882 884: 68 Load 71(inF0) - 885: 68 ExtInst 1(GLSL.std.450) 30(Log2) 884 - 886: 68 MatrixTimesScalar 885 202 - 887: 68 Load 71(inF0) - 888: 68 ExtInst 1(GLSL.std.450) 30(Log2) 887 + 885: 68 ExtInst 1(GLSL.std.450) 28(Log) 884 + 886: 68 Load 71(inF0) + 887: 68 ExtInst 1(GLSL.std.450) 30(Log2) 886 + 888: 68 MatrixTimesScalar 887 201 889: 68 Load 71(inF0) - 890: 68 Load 72(inF1) - 891: 68 ExtInst 1(GLSL.std.450) 40(FMax) 889 890 - 892: 68 Load 71(inF0) - 893: 68 Load 72(inF1) - 894: 68 ExtInst 1(GLSL.std.450) 37(FMin) 892 893 - 895: 68 Load 71(inF0) - 896: 68 Load 72(inF1) - 897: 68 ExtInst 1(GLSL.std.450) 26(Pow) 895 896 - 898: 68 Load 71(inF0) - 899: 68 ExtInst 1(GLSL.std.450) 11(Radians) 898 + 890: 68 ExtInst 1(GLSL.std.450) 30(Log2) 889 + 891: 68 Load 71(inF0) + 892: 68 Load 72(inF1) + 893: 68 ExtInst 1(GLSL.std.450) 40(FMax) 891 892 + 894: 68 Load 71(inF0) + 895: 68 Load 72(inF1) + 896: 68 ExtInst 1(GLSL.std.450) 37(FMin) 894 895 + 897: 68 Load 71(inF0) + 898: 68 Load 72(inF1) + 899: 68 ExtInst 1(GLSL.std.450) 26(Pow) 897 898 900: 68 Load 71(inF0) - 901: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 900 + 901: 68 ExtInst 1(GLSL.std.450) 11(Radians) 900 902: 68 Load 71(inF0) - 903: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 902 + 903: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 902 904: 68 Load 71(inF0) - 905: 36(fvec3) CompositeConstruct 224 224 224 - 906: 36(fvec3) CompositeConstruct 225 225 225 - 907: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 904 905 906 - 908: 68 Load 71(inF0) - 909: 68 ExtInst 1(GLSL.std.450) 6(FSign) 908 + 905: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 904 + 906: 68 Load 71(inF0) + 907: 36(fvec3) CompositeConstruct 223 223 223 + 908: 36(fvec3) CompositeConstruct 224 224 224 + 909: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 906 907 908 910: 68 Load 71(inF0) - 911: 68 ExtInst 1(GLSL.std.450) 13(Sin) 910 + 911: 68 ExtInst 1(GLSL.std.450) 6(FSign) 910 912: 68 Load 71(inF0) 913: 68 ExtInst 1(GLSL.std.450) 13(Sin) 912 - Store 72(inF1) 913 914: 68 Load 71(inF0) - 915: 68 ExtInst 1(GLSL.std.450) 14(Cos) 914 - Store 73(inF2) 915 + 915: 68 ExtInst 1(GLSL.std.450) 13(Sin) 914 + Store 72(inF1) 915 916: 68 Load 71(inF0) - 917: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 916 + 917: 68 ExtInst 1(GLSL.std.450) 14(Cos) 916 + Store 73(inF2) 917 918: 68 Load 71(inF0) - 919: 68 Load 72(inF1) - 920: 68 Load 73(inF2) - 921: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 918 919 920 - 922: 68 Load 71(inF0) - 923: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 922 + 919: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 918 + 920: 68 Load 71(inF0) + 921: 68 Load 72(inF1) + 922: 68 Load 73(inF2) + 923: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 920 921 922 924: 68 Load 71(inF0) - 925: 68 Load 72(inF1) - 926: 68 ExtInst 1(GLSL.std.450) 48(Step) 924 925 - 927: 68 Load 71(inF0) - 928: 68 ExtInst 1(GLSL.std.450) 15(Tan) 927 + 925: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 924 + 926: 68 Load 71(inF0) + 927: 68 Load 72(inF1) + 928: 68 ExtInst 1(GLSL.std.450) 48(Step) 926 927 929: 68 Load 71(inF0) - 930: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 929 + 930: 68 ExtInst 1(GLSL.std.450) 15(Tan) 929 931: 68 Load 71(inF0) - 932: 68 Transpose 931 + 932: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 931 933: 68 Load 71(inF0) - 934: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 933 - ReturnValue 936 + 934: 68 Transpose 933 + 935: 68 Load 71(inF0) + 936: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 935 + ReturnValue 938 FunctionEnd 82(VertexShaderFunction4x4(mf44;mf44;mf44;): 76 Function None 78 79(inF0): 77(ptr) FunctionParameter 80(inF1): 77(ptr) FunctionParameter 81(inF2): 77(ptr) FunctionParameter 83: Label - 939: 76 Load 79(inF0) - 940: 132(bool) All 939 941: 76 Load 79(inF0) - 942: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 941 + 942: 132(bool) All 941 943: 76 Load 79(inF0) - 944: 76 ExtInst 1(GLSL.std.450) 17(Acos) 943 + 944: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 943 945: 76 Load 79(inF0) - 946: 132(bool) Any 945 + 946: 76 ExtInst 1(GLSL.std.450) 17(Acos) 945 947: 76 Load 79(inF0) - 948: 76 ExtInst 1(GLSL.std.450) 16(Asin) 947 + 948: 132(bool) Any 947 949: 76 Load 79(inF0) - 950: 76 ExtInst 1(GLSL.std.450) 18(Atan) 949 + 950: 76 ExtInst 1(GLSL.std.450) 16(Asin) 949 951: 76 Load 79(inF0) - 952: 76 Load 80(inF1) - 953: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 951 952 - 954: 76 Load 79(inF0) - 955: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 954 + 952: 76 ExtInst 1(GLSL.std.450) 18(Atan) 951 + 953: 76 Load 79(inF0) + 954: 76 Load 80(inF1) + 955: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 953 954 956: 76 Load 79(inF0) - 957: 76 Load 80(inF1) - 958: 76 Load 81(inF2) - 959: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 956 957 958 - 960: 76 Load 79(inF0) - 961: 76 ExtInst 1(GLSL.std.450) 14(Cos) 960 + 957: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 956 + 958: 76 Load 79(inF0) + 959: 76 Load 80(inF1) + 960: 76 Load 81(inF2) + 961: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 958 959 960 962: 76 Load 79(inF0) - 963: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 962 + 963: 76 ExtInst 1(GLSL.std.450) 14(Cos) 962 964: 76 Load 79(inF0) - 965: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 964 + 965: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 964 966: 76 Load 79(inF0) - 967: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 966 + 967: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 966 968: 76 Load 79(inF0) - 969: 76 ExtInst 1(GLSL.std.450) 27(Exp) 968 + 969: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 968 970: 76 Load 79(inF0) - 971: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 970 - 972: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 172 - 973: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 172 - 974: 76 Load 79(inF0) - 975: 76 ExtInst 1(GLSL.std.450) 8(Floor) 974 + 971: 76 ExtInst 1(GLSL.std.450) 27(Exp) 970 + 972: 76 Load 79(inF0) + 973: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 972 + 974: 143(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 164 + 975: 143(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 164 976: 76 Load 79(inF0) - 977: 76 Load 80(inF1) - 978: 48(fvec4) CompositeExtract 976 0 - 979: 48(fvec4) CompositeExtract 977 0 - 980: 48(fvec4) FMod 978 979 - 981: 48(fvec4) CompositeExtract 976 1 - 982: 48(fvec4) CompositeExtract 977 1 - 983: 48(fvec4) FMod 981 982 - 984: 48(fvec4) CompositeExtract 976 2 - 985: 48(fvec4) CompositeExtract 977 2 - 986: 48(fvec4) FMod 984 985 - 987: 48(fvec4) CompositeExtract 976 3 - 988: 48(fvec4) CompositeExtract 977 3 - 989: 48(fvec4) FMod 987 988 - 990: 76 CompositeConstruct 980 983 986 989 - 991: 76 Load 79(inF0) - 992: 76 ExtInst 1(GLSL.std.450) 10(Fract) 991 + 977: 76 ExtInst 1(GLSL.std.450) 8(Floor) 976 + 978: 76 Load 79(inF0) + 979: 76 Load 80(inF1) + 980: 48(fvec4) CompositeExtract 978 0 + 981: 48(fvec4) CompositeExtract 979 0 + 982: 48(fvec4) FMod 980 981 + 983: 48(fvec4) CompositeExtract 978 1 + 984: 48(fvec4) CompositeExtract 979 1 + 985: 48(fvec4) FMod 983 984 + 986: 48(fvec4) CompositeExtract 978 2 + 987: 48(fvec4) CompositeExtract 979 2 + 988: 48(fvec4) FMod 986 987 + 989: 48(fvec4) CompositeExtract 978 3 + 990: 48(fvec4) CompositeExtract 979 3 + 991: 48(fvec4) FMod 989 990 + 992: 76 CompositeConstruct 982 985 988 991 993: 76 Load 79(inF0) - 995:994(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 993 - 996: 559(ivec4) CompositeExtract 995 1 - Store 80(inF1) 996 - 997: 76 CompositeExtract 995 0 - 998: 76 Load 79(inF0) - 999: 76 Load 80(inF1) - 1000: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 998 999 - 1001: 76 Load 79(inF0) - 1002: 76 Load 80(inF1) - 1003: 76 Load 81(inF2) - 1004: 76 ExtInst 1(GLSL.std.450) 46(FMix) 1001 1002 1003 - 1005: 76 Load 79(inF0) - 1006: 76 ExtInst 1(GLSL.std.450) 28(Log) 1005 + 994: 76 ExtInst 1(GLSL.std.450) 10(Fract) 993 + 995: 76 Load 79(inF0) + 997:996(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 995 + 998: 558(ivec4) CompositeExtract 997 1 + Store 80(inF1) 998 + 999: 76 CompositeExtract 997 0 + 1000: 76 Load 79(inF0) + 1001: 76 Load 80(inF1) + 1002: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1000 1001 + 1003: 76 Load 79(inF0) + 1004: 76 Load 80(inF1) + 1005: 76 Load 81(inF2) + 1006: 76 ExtInst 1(GLSL.std.450) 46(FMix) 1003 1004 1005 1007: 76 Load 79(inF0) - 1008: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1007 - 1009: 76 MatrixTimesScalar 1008 202 - 1010: 76 Load 79(inF0) - 1011: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1010 + 1008: 76 ExtInst 1(GLSL.std.450) 28(Log) 1007 + 1009: 76 Load 79(inF0) + 1010: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1009 + 1011: 76 MatrixTimesScalar 1010 201 1012: 76 Load 79(inF0) - 1013: 76 Load 80(inF1) - 1014: 76 ExtInst 1(GLSL.std.450) 40(FMax) 1012 1013 - 1015: 76 Load 79(inF0) - 1016: 76 Load 80(inF1) - 1017: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1015 1016 - 1018: 76 Load 79(inF0) - 1019: 76 Load 80(inF1) - 1020: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1018 1019 - 1021: 76 Load 79(inF0) - 1022: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1021 + 1013: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1012 + 1014: 76 Load 79(inF0) + 1015: 76 Load 80(inF1) + 1016: 76 ExtInst 1(GLSL.std.450) 40(FMax) 1014 1015 + 1017: 76 Load 79(inF0) + 1018: 76 Load 80(inF1) + 1019: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1017 1018 + 1020: 76 Load 79(inF0) + 1021: 76 Load 80(inF1) + 1022: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1020 1021 1023: 76 Load 79(inF0) - 1024: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1023 + 1024: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1023 1025: 76 Load 79(inF0) - 1026: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1025 + 1026: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1025 1027: 76 Load 79(inF0) - 1028: 48(fvec4) CompositeConstruct 224 224 224 224 - 1029: 48(fvec4) CompositeConstruct 225 225 225 225 - 1030: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1027 1028 1029 - 1031: 76 Load 79(inF0) - 1032: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1031 + 1028: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1027 + 1029: 76 Load 79(inF0) + 1030: 48(fvec4) CompositeConstruct 223 223 223 223 + 1031: 48(fvec4) CompositeConstruct 224 224 224 224 + 1032: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1029 1030 1031 1033: 76 Load 79(inF0) - 1034: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1033 + 1034: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1033 1035: 76 Load 79(inF0) 1036: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1035 - Store 80(inF1) 1036 1037: 76 Load 79(inF0) - 1038: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1037 - Store 81(inF2) 1038 + 1038: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1037 + Store 80(inF1) 1038 1039: 76 Load 79(inF0) - 1040: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1039 + 1040: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1039 + Store 81(inF2) 1040 1041: 76 Load 79(inF0) - 1042: 76 Load 80(inF1) - 1043: 76 Load 81(inF2) - 1044: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1041 1042 1043 - 1045: 76 Load 79(inF0) - 1046: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1045 + 1042: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1041 + 1043: 76 Load 79(inF0) + 1044: 76 Load 80(inF1) + 1045: 76 Load 81(inF2) + 1046: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1043 1044 1045 1047: 76 Load 79(inF0) - 1048: 76 Load 80(inF1) - 1049: 76 ExtInst 1(GLSL.std.450) 48(Step) 1047 1048 - 1050: 76 Load 79(inF0) - 1051: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1050 + 1048: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1047 + 1049: 76 Load 79(inF0) + 1050: 76 Load 80(inF1) + 1051: 76 ExtInst 1(GLSL.std.450) 48(Step) 1049 1050 1052: 76 Load 79(inF0) - 1053: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1052 + 1053: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1052 1054: 76 Load 79(inF0) - 1055: 76 Transpose 1054 + 1055: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1054 1056: 76 Load 79(inF0) - 1057: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1056 - ReturnValue 1059 + 1057: 76 Transpose 1056 + 1058: 76 Load 79(inF0) + 1059: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1058 + ReturnValue 1061 FunctionEnd 91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 84 85(inF0): 7(ptr) FunctionParameter @@ -3977,51 +3979,51 @@ Shader version: 450 89(inFM0): 61(ptr) FunctionParameter 90(inFM1): 61(ptr) FunctionParameter 92: Label - 1062(r0): 7(ptr) Variable Function - 1066(r1): 25(ptr) Variable Function - 1070(r2): 25(ptr) Variable Function - 1074(r3): 7(ptr) Variable Function - 1078(r4): 25(ptr) Variable Function - 1082(r5): 25(ptr) Variable Function - 1086(r6): 61(ptr) Variable Function - 1090(r7): 61(ptr) Variable Function - 1094(r8): 61(ptr) Variable Function - 1063: 6(float) Load 86(inF1) - 1064: 6(float) Load 85(inF0) - 1065: 6(float) FMul 1063 1064 - Store 1062(r0) 1065 - 1067: 6(float) Load 85(inF0) - 1068: 24(fvec2) Load 87(inFV0) - 1069: 24(fvec2) VectorTimesScalar 1068 1067 - Store 1066(r1) 1069 - 1071: 24(fvec2) Load 87(inFV0) - 1072: 6(float) Load 85(inF0) - 1073: 24(fvec2) VectorTimesScalar 1071 1072 - Store 1070(r2) 1073 - 1075: 24(fvec2) Load 87(inFV0) - 1076: 24(fvec2) Load 88(inFV1) - 1077: 6(float) Dot 1075 1076 - Store 1074(r3) 1077 - 1079: 24(fvec2) Load 87(inFV0) - 1080: 60 Load 89(inFM0) - 1081: 24(fvec2) VectorTimesMatrix 1079 1080 - Store 1078(r4) 1081 - 1083: 60 Load 89(inFM0) - 1084: 24(fvec2) Load 87(inFV0) - 1085: 24(fvec2) MatrixTimesVector 1083 1084 - Store 1082(r5) 1085 - 1087: 6(float) Load 85(inF0) - 1088: 60 Load 89(inFM0) - 1089: 60 MatrixTimesScalar 1088 1087 - Store 1086(r6) 1089 - 1091: 60 Load 89(inFM0) - 1092: 6(float) Load 85(inF0) - 1093: 60 MatrixTimesScalar 1091 1092 - Store 1090(r7) 1093 - 1095: 60 Load 90(inFM1) - 1096: 60 Load 89(inFM0) - 1097: 60 MatrixTimesMatrix 1095 1096 - Store 1094(r8) 1097 + 1064(r0): 7(ptr) Variable Function + 1068(r1): 25(ptr) Variable Function + 1072(r2): 25(ptr) Variable Function + 1076(r3): 7(ptr) Variable Function + 1080(r4): 25(ptr) Variable Function + 1084(r5): 25(ptr) Variable Function + 1088(r6): 61(ptr) Variable Function + 1092(r7): 61(ptr) Variable Function + 1096(r8): 61(ptr) Variable Function + 1065: 6(float) Load 86(inF1) + 1066: 6(float) Load 85(inF0) + 1067: 6(float) FMul 1065 1066 + Store 1064(r0) 1067 + 1069: 6(float) Load 85(inF0) + 1070: 24(fvec2) Load 87(inFV0) + 1071: 24(fvec2) VectorTimesScalar 1070 1069 + Store 1068(r1) 1071 + 1073: 24(fvec2) Load 87(inFV0) + 1074: 6(float) Load 85(inF0) + 1075: 24(fvec2) VectorTimesScalar 1073 1074 + Store 1072(r2) 1075 + 1077: 24(fvec2) Load 87(inFV0) + 1078: 24(fvec2) Load 88(inFV1) + 1079: 6(float) Dot 1077 1078 + Store 1076(r3) 1079 + 1081: 24(fvec2) Load 87(inFV0) + 1082: 60 Load 89(inFM0) + 1083: 24(fvec2) VectorTimesMatrix 1081 1082 + Store 1080(r4) 1083 + 1085: 60 Load 89(inFM0) + 1086: 24(fvec2) Load 87(inFV0) + 1087: 24(fvec2) MatrixTimesVector 1085 1086 + Store 1084(r5) 1087 + 1089: 6(float) Load 85(inF0) + 1090: 60 Load 89(inFM0) + 1091: 60 MatrixTimesScalar 1090 1089 + Store 1088(r6) 1091 + 1093: 60 Load 89(inFM0) + 1094: 6(float) Load 85(inF0) + 1095: 60 MatrixTimesScalar 1093 1094 + Store 1092(r7) 1095 + 1097: 60 Load 90(inFM1) + 1098: 60 Load 89(inFM0) + 1099: 60 MatrixTimesMatrix 1097 1098 + Store 1096(r8) 1099 Return FunctionEnd 100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 93 @@ -4032,51 +4034,51 @@ Shader version: 450 98(inFM0): 69(ptr) FunctionParameter 99(inFM1): 69(ptr) FunctionParameter 101: Label - 1098(r0): 7(ptr) Variable Function - 1102(r1): 37(ptr) Variable Function - 1106(r2): 37(ptr) Variable Function - 1110(r3): 7(ptr) Variable Function - 1114(r4): 37(ptr) Variable Function - 1118(r5): 37(ptr) Variable Function - 1122(r6): 69(ptr) Variable Function - 1126(r7): 69(ptr) Variable Function - 1130(r8): 69(ptr) Variable Function - 1099: 6(float) Load 95(inF1) - 1100: 6(float) Load 94(inF0) - 1101: 6(float) FMul 1099 1100 - Store 1098(r0) 1101 - 1103: 6(float) Load 94(inF0) - 1104: 36(fvec3) Load 96(inFV0) - 1105: 36(fvec3) VectorTimesScalar 1104 1103 - Store 1102(r1) 1105 - 1107: 36(fvec3) Load 96(inFV0) - 1108: 6(float) Load 94(inF0) - 1109: 36(fvec3) VectorTimesScalar 1107 1108 - Store 1106(r2) 1109 - 1111: 36(fvec3) Load 96(inFV0) - 1112: 36(fvec3) Load 97(inFV1) - 1113: 6(float) Dot 1111 1112 - Store 1110(r3) 1113 - 1115: 36(fvec3) Load 96(inFV0) - 1116: 68 Load 98(inFM0) - 1117: 36(fvec3) VectorTimesMatrix 1115 1116 - Store 1114(r4) 1117 - 1119: 68 Load 98(inFM0) - 1120: 36(fvec3) Load 96(inFV0) - 1121: 36(fvec3) MatrixTimesVector 1119 1120 - Store 1118(r5) 1121 - 1123: 6(float) Load 94(inF0) - 1124: 68 Load 98(inFM0) - 1125: 68 MatrixTimesScalar 1124 1123 - Store 1122(r6) 1125 - 1127: 68 Load 98(inFM0) - 1128: 6(float) Load 94(inF0) - 1129: 68 MatrixTimesScalar 1127 1128 - Store 1126(r7) 1129 - 1131: 68 Load 99(inFM1) - 1132: 68 Load 98(inFM0) - 1133: 68 MatrixTimesMatrix 1131 1132 - Store 1130(r8) 1133 + 1100(r0): 7(ptr) Variable Function + 1104(r1): 37(ptr) Variable Function + 1108(r2): 37(ptr) Variable Function + 1112(r3): 7(ptr) Variable Function + 1116(r4): 37(ptr) Variable Function + 1120(r5): 37(ptr) Variable Function + 1124(r6): 69(ptr) Variable Function + 1128(r7): 69(ptr) Variable Function + 1132(r8): 69(ptr) Variable Function + 1101: 6(float) Load 95(inF1) + 1102: 6(float) Load 94(inF0) + 1103: 6(float) FMul 1101 1102 + Store 1100(r0) 1103 + 1105: 6(float) Load 94(inF0) + 1106: 36(fvec3) Load 96(inFV0) + 1107: 36(fvec3) VectorTimesScalar 1106 1105 + Store 1104(r1) 1107 + 1109: 36(fvec3) Load 96(inFV0) + 1110: 6(float) Load 94(inF0) + 1111: 36(fvec3) VectorTimesScalar 1109 1110 + Store 1108(r2) 1111 + 1113: 36(fvec3) Load 96(inFV0) + 1114: 36(fvec3) Load 97(inFV1) + 1115: 6(float) Dot 1113 1114 + Store 1112(r3) 1115 + 1117: 36(fvec3) Load 96(inFV0) + 1118: 68 Load 98(inFM0) + 1119: 36(fvec3) VectorTimesMatrix 1117 1118 + Store 1116(r4) 1119 + 1121: 68 Load 98(inFM0) + 1122: 36(fvec3) Load 96(inFV0) + 1123: 36(fvec3) MatrixTimesVector 1121 1122 + Store 1120(r5) 1123 + 1125: 6(float) Load 94(inF0) + 1126: 68 Load 98(inFM0) + 1127: 68 MatrixTimesScalar 1126 1125 + Store 1124(r6) 1127 + 1129: 68 Load 98(inFM0) + 1130: 6(float) Load 94(inF0) + 1131: 68 MatrixTimesScalar 1129 1130 + Store 1128(r7) 1131 + 1133: 68 Load 99(inFM1) + 1134: 68 Load 98(inFM0) + 1135: 68 MatrixTimesMatrix 1133 1134 + Store 1132(r8) 1135 Return FunctionEnd 109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 102 @@ -4087,51 +4089,51 @@ Shader version: 450 107(inFM0): 77(ptr) FunctionParameter 108(inFM1): 77(ptr) FunctionParameter 110: Label - 1134(r0): 7(ptr) Variable Function - 1138(r1): 49(ptr) Variable Function - 1142(r2): 49(ptr) Variable Function - 1146(r3): 7(ptr) Variable Function - 1150(r4): 49(ptr) Variable Function - 1154(r5): 49(ptr) Variable Function - 1158(r6): 77(ptr) Variable Function - 1162(r7): 77(ptr) Variable Function - 1166(r8): 77(ptr) Variable Function - 1135: 6(float) Load 104(inF1) - 1136: 6(float) Load 103(inF0) - 1137: 6(float) FMul 1135 1136 - Store 1134(r0) 1137 - 1139: 6(float) Load 103(inF0) - 1140: 48(fvec4) Load 105(inFV0) - 1141: 48(fvec4) VectorTimesScalar 1140 1139 - Store 1138(r1) 1141 - 1143: 48(fvec4) Load 105(inFV0) - 1144: 6(float) Load 103(inF0) - 1145: 48(fvec4) VectorTimesScalar 1143 1144 - Store 1142(r2) 1145 - 1147: 48(fvec4) Load 105(inFV0) - 1148: 48(fvec4) Load 106(inFV1) - 1149: 6(float) Dot 1147 1148 - Store 1146(r3) 1149 - 1151: 48(fvec4) Load 105(inFV0) - 1152: 76 Load 107(inFM0) - 1153: 48(fvec4) VectorTimesMatrix 1151 1152 - Store 1150(r4) 1153 - 1155: 76 Load 107(inFM0) - 1156: 48(fvec4) Load 105(inFV0) - 1157: 48(fvec4) MatrixTimesVector 1155 1156 - Store 1154(r5) 1157 - 1159: 6(float) Load 103(inF0) - 1160: 76 Load 107(inFM0) - 1161: 76 MatrixTimesScalar 1160 1159 - Store 1158(r6) 1161 - 1163: 76 Load 107(inFM0) - 1164: 6(float) Load 103(inF0) - 1165: 76 MatrixTimesScalar 1163 1164 - Store 1162(r7) 1165 - 1167: 76 Load 108(inFM1) - 1168: 76 Load 107(inFM0) - 1169: 76 MatrixTimesMatrix 1167 1168 - Store 1166(r8) 1169 + 1136(r0): 7(ptr) Variable Function + 1140(r1): 49(ptr) Variable Function + 1144(r2): 49(ptr) Variable Function + 1148(r3): 7(ptr) Variable Function + 1152(r4): 49(ptr) Variable Function + 1156(r5): 49(ptr) Variable Function + 1160(r6): 77(ptr) Variable Function + 1164(r7): 77(ptr) Variable Function + 1168(r8): 77(ptr) Variable Function + 1137: 6(float) Load 104(inF1) + 1138: 6(float) Load 103(inF0) + 1139: 6(float) FMul 1137 1138 + Store 1136(r0) 1139 + 1141: 6(float) Load 103(inF0) + 1142: 48(fvec4) Load 105(inFV0) + 1143: 48(fvec4) VectorTimesScalar 1142 1141 + Store 1140(r1) 1143 + 1145: 48(fvec4) Load 105(inFV0) + 1146: 6(float) Load 103(inF0) + 1147: 48(fvec4) VectorTimesScalar 1145 1146 + Store 1144(r2) 1147 + 1149: 48(fvec4) Load 105(inFV0) + 1150: 48(fvec4) Load 106(inFV1) + 1151: 6(float) Dot 1149 1150 + Store 1148(r3) 1151 + 1153: 48(fvec4) Load 105(inFV0) + 1154: 76 Load 107(inFM0) + 1155: 48(fvec4) VectorTimesMatrix 1153 1154 + Store 1152(r4) 1155 + 1157: 76 Load 107(inFM0) + 1158: 48(fvec4) Load 105(inFV0) + 1159: 48(fvec4) MatrixTimesVector 1157 1158 + Store 1156(r5) 1159 + 1161: 6(float) Load 103(inF0) + 1162: 76 Load 107(inFM0) + 1163: 76 MatrixTimesScalar 1162 1161 + Store 1160(r6) 1163 + 1165: 76 Load 107(inFM0) + 1166: 6(float) Load 103(inF0) + 1167: 76 MatrixTimesScalar 1165 1166 + Store 1164(r7) 1167 + 1169: 76 Load 108(inFM1) + 1170: 76 Load 107(inFM0) + 1171: 76 MatrixTimesMatrix 1169 1170 + Store 1168(r8) 1171 Return FunctionEnd 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 119 @@ -4145,90 +4147,90 @@ Shader version: 450 127(inFM3x4): 116(ptr) FunctionParameter 128(inFM2x4): 118(ptr) FunctionParameter 130: Label - 1170(r00): 7(ptr) Variable Function - 1174(r01): 25(ptr) Variable Function - 1178(r02): 37(ptr) Variable Function - 1182(r03): 25(ptr) Variable Function - 1186(r04): 37(ptr) Variable Function - 1190(r05): 7(ptr) Variable Function - 1194(r06): 7(ptr) Variable Function - 1198(r07): 37(ptr) Variable Function - 1202(r08): 25(ptr) Variable Function - 1206(r09): 25(ptr) Variable Function - 1210(r10): 37(ptr) Variable Function - 1214(r11): 112(ptr) Variable Function - 1218(r12): 114(ptr) Variable Function - 1222(r13): 61(ptr) Variable Function - 1226(r14): 112(ptr) Variable Function - 1230(r15): 118(ptr) Variable Function - 1234(r16): 116(ptr) Variable Function - 1171: 6(float) Load 121(inF1) - 1172: 6(float) Load 120(inF0) - 1173: 6(float) FMul 1171 1172 - Store 1170(r00) 1173 - 1175: 6(float) Load 120(inF0) - 1176: 24(fvec2) Load 122(inFV2) - 1177: 24(fvec2) VectorTimesScalar 1176 1175 - Store 1174(r01) 1177 - 1179: 6(float) Load 120(inF0) - 1180: 36(fvec3) Load 123(inFV3) - 1181: 36(fvec3) VectorTimesScalar 1180 1179 - Store 1178(r02) 1181 - 1183: 24(fvec2) Load 122(inFV2) - 1184: 6(float) Load 120(inF0) - 1185: 24(fvec2) VectorTimesScalar 1183 1184 - Store 1182(r03) 1185 - 1187: 36(fvec3) Load 123(inFV3) - 1188: 6(float) Load 120(inF0) - 1189: 36(fvec3) VectorTimesScalar 1187 1188 - Store 1186(r04) 1189 - 1191: 24(fvec2) Load 122(inFV2) - 1192: 24(fvec2) Load 122(inFV2) - 1193: 6(float) Dot 1191 1192 - Store 1190(r05) 1193 - 1195: 36(fvec3) Load 123(inFV3) - 1196: 36(fvec3) Load 123(inFV3) - 1197: 6(float) Dot 1195 1196 - Store 1194(r06) 1197 - 1199: 111 Load 124(inFM2x3) - 1200: 24(fvec2) Load 122(inFV2) - 1201: 36(fvec3) MatrixTimesVector 1199 1200 - Store 1198(r07) 1201 - 1203: 113 Load 125(inFM3x2) - 1204: 36(fvec3) Load 123(inFV3) - 1205: 24(fvec2) MatrixTimesVector 1203 1204 - Store 1202(r08) 1205 - 1207: 36(fvec3) Load 123(inFV3) - 1208: 111 Load 124(inFM2x3) - 1209: 24(fvec2) VectorTimesMatrix 1207 1208 - Store 1206(r09) 1209 - 1211: 24(fvec2) Load 122(inFV2) - 1212: 113 Load 125(inFM3x2) - 1213: 36(fvec3) VectorTimesMatrix 1211 1212 - Store 1210(r10) 1213 - 1215: 6(float) Load 120(inF0) - 1216: 111 Load 124(inFM2x3) - 1217: 111 MatrixTimesScalar 1216 1215 - Store 1214(r11) 1217 - 1219: 6(float) Load 120(inF0) - 1220: 113 Load 125(inFM3x2) - 1221: 113 MatrixTimesScalar 1220 1219 - Store 1218(r12) 1221 - 1223: 113 Load 125(inFM3x2) - 1224: 111 Load 124(inFM2x3) - 1225: 60 MatrixTimesMatrix 1223 1224 - Store 1222(r13) 1225 - 1227: 68 Load 126(inFM3x3) - 1228: 111 Load 124(inFM2x3) - 1229: 111 MatrixTimesMatrix 1227 1228 - Store 1226(r14) 1229 - 1231: 115 Load 127(inFM3x4) - 1232: 111 Load 124(inFM2x3) - 1233: 117 MatrixTimesMatrix 1231 1232 - Store 1230(r15) 1233 - 1235: 117 Load 128(inFM2x4) - 1236: 113 Load 125(inFM3x2) - 1237: 115 MatrixTimesMatrix 1235 1236 - Store 1234(r16) 1237 + 1172(r00): 7(ptr) Variable Function + 1176(r01): 25(ptr) Variable Function + 1180(r02): 37(ptr) Variable Function + 1184(r03): 25(ptr) Variable Function + 1188(r04): 37(ptr) Variable Function + 1192(r05): 7(ptr) Variable Function + 1196(r06): 7(ptr) Variable Function + 1200(r07): 37(ptr) Variable Function + 1204(r08): 25(ptr) Variable Function + 1208(r09): 25(ptr) Variable Function + 1212(r10): 37(ptr) Variable Function + 1216(r11): 112(ptr) Variable Function + 1220(r12): 114(ptr) Variable Function + 1224(r13): 61(ptr) Variable Function + 1228(r14): 112(ptr) Variable Function + 1232(r15): 118(ptr) Variable Function + 1236(r16): 116(ptr) Variable Function + 1173: 6(float) Load 121(inF1) + 1174: 6(float) Load 120(inF0) + 1175: 6(float) FMul 1173 1174 + Store 1172(r00) 1175 + 1177: 6(float) Load 120(inF0) + 1178: 24(fvec2) Load 122(inFV2) + 1179: 24(fvec2) VectorTimesScalar 1178 1177 + Store 1176(r01) 1179 + 1181: 6(float) Load 120(inF0) + 1182: 36(fvec3) Load 123(inFV3) + 1183: 36(fvec3) VectorTimesScalar 1182 1181 + Store 1180(r02) 1183 + 1185: 24(fvec2) Load 122(inFV2) + 1186: 6(float) Load 120(inF0) + 1187: 24(fvec2) VectorTimesScalar 1185 1186 + Store 1184(r03) 1187 + 1189: 36(fvec3) Load 123(inFV3) + 1190: 6(float) Load 120(inF0) + 1191: 36(fvec3) VectorTimesScalar 1189 1190 + Store 1188(r04) 1191 + 1193: 24(fvec2) Load 122(inFV2) + 1194: 24(fvec2) Load 122(inFV2) + 1195: 6(float) Dot 1193 1194 + Store 1192(r05) 1195 + 1197: 36(fvec3) Load 123(inFV3) + 1198: 36(fvec3) Load 123(inFV3) + 1199: 6(float) Dot 1197 1198 + Store 1196(r06) 1199 + 1201: 111 Load 124(inFM2x3) + 1202: 24(fvec2) Load 122(inFV2) + 1203: 36(fvec3) MatrixTimesVector 1201 1202 + Store 1200(r07) 1203 + 1205: 113 Load 125(inFM3x2) + 1206: 36(fvec3) Load 123(inFV3) + 1207: 24(fvec2) MatrixTimesVector 1205 1206 + Store 1204(r08) 1207 + 1209: 36(fvec3) Load 123(inFV3) + 1210: 111 Load 124(inFM2x3) + 1211: 24(fvec2) VectorTimesMatrix 1209 1210 + Store 1208(r09) 1211 + 1213: 24(fvec2) Load 122(inFV2) + 1214: 113 Load 125(inFM3x2) + 1215: 36(fvec3) VectorTimesMatrix 1213 1214 + Store 1212(r10) 1215 + 1217: 6(float) Load 120(inF0) + 1218: 111 Load 124(inFM2x3) + 1219: 111 MatrixTimesScalar 1218 1217 + Store 1216(r11) 1219 + 1221: 6(float) Load 120(inF0) + 1222: 113 Load 125(inFM3x2) + 1223: 113 MatrixTimesScalar 1222 1221 + Store 1220(r12) 1223 + 1225: 113 Load 125(inFM3x2) + 1226: 111 Load 124(inFM2x3) + 1227: 60 MatrixTimesMatrix 1225 1226 + Store 1224(r13) 1227 + 1229: 68 Load 126(inFM3x3) + 1230: 111 Load 124(inFM2x3) + 1231: 111 MatrixTimesMatrix 1229 1230 + Store 1228(r14) 1231 + 1233: 115 Load 127(inFM3x4) + 1234: 111 Load 124(inFM2x3) + 1235: 117 MatrixTimesMatrix 1233 1234 + Store 1232(r15) 1235 + 1237: 117 Load 128(inFM2x4) + 1238: 113 Load 125(inFM3x2) + 1239: 115 MatrixTimesMatrix 1237 1238 + Store 1236(r16) 1239 Return FunctionEnd diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out index 038c7f0e..24ce5719 100644 --- a/Test/baseResults/spv.register.autoassign-2.frag.out +++ b/Test/baseResults/spv.register.autoassign-2.frag.out @@ -5,7 +5,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 30 +// Id's are bound by 31 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -16,14 +16,14 @@ Linked fragment stage: Name 9 "Color" Name 12 "g_tScene[0]" Name 16 "g_tSamp" - Name 24 "g_tScene[1]" + Name 25 "g_tScene[1]" Decorate 9(Color) Location 0 Decorate 12(g_tScene[0]) DescriptorSet 0 Decorate 12(g_tScene[0]) Binding 10 Decorate 16(g_tSamp) DescriptorSet 0 Decorate 16(g_tSamp) Binding 5 - Decorate 24(g_tScene[1]) DescriptorSet 0 - Decorate 24(g_tScene[1]) Binding 11 + Decorate 25(g_tScene[1]) DescriptorSet 0 + Decorate 25(g_tScene[1]) Binding 11 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -39,19 +39,20 @@ Linked fragment stage: 18: TypeSampledImage 10 20: TypeVector 6(float) 2 21: 6(float) Constant 1050253722 - 22: 20(fvec2) ConstantComposite 21 21 - 24(g_tScene[1]): 11(ptr) Variable UniformConstant + 22: 6(float) Constant 1053609165 + 23: 20(fvec2) ConstantComposite 21 22 + 25(g_tScene[1]): 11(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 13: 10 Load 12(g_tScene[0]) 17: 14 Load 16(g_tSamp) 19: 18 SampledImage 13 17 - 23: 7(fvec4) ImageSampleImplicitLod 19 22 - 25: 10 Load 24(g_tScene[1]) - 26: 14 Load 16(g_tSamp) - 27: 18 SampledImage 25 26 - 28: 7(fvec4) ImageSampleImplicitLod 27 22 - 29: 7(fvec4) FAdd 23 28 - Store 9(Color) 29 + 24: 7(fvec4) ImageSampleImplicitLod 19 23 + 26: 10 Load 25(g_tScene[1]) + 27: 14 Load 16(g_tSamp) + 28: 18 SampledImage 26 27 + 29: 7(fvec4) ImageSampleImplicitLod 28 23 + 30: 7(fvec4) FAdd 24 29 + Store 9(Color) 30 Return FunctionEnd diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag index 03e7ed38..15db6376 100644 --- a/Test/hlsl.intrinsics.frag +++ b/Test/hlsl.intrinsics.frag @@ -33,7 +33,7 @@ float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint i clip(inF0); float r014 = cos(inF0); float r015 = cosh(inF0); - uint r016 = countbits(7); + int r016 = countbits(7); float r017 = ddx(inF0); float r018 = ddx_coarse(inF0); float r019 = ddx_fine(inF0); @@ -111,7 +111,7 @@ float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, u clip(inF0); float2 r013 = cos(inF0); float2 r015 = cosh(inF0); - uint2 r016 = countbits(int2(7,3)); + int2 r016 = countbits(int2(7,3)); float2 r017 = ddx(inF0); float2 r018 = ddx_coarse(inF0); float2 r019 = ddx_fine(inF0); diff --git a/Test/hlsl.intrinsics.promote.down.frag b/Test/hlsl.intrinsics.promote.down.frag new file mode 100644 index 00000000..5f4882b2 --- /dev/null +++ b/Test/hlsl.intrinsics.promote.down.frag @@ -0,0 +1,22 @@ + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +int i; +uint u; +float f; +bool b; + +int2 i2; +uint2 u2; +float2 f2; +bool2 b2; + +PS_OUTPUT main() +{ + uint r00 = countbits(f); + uint2 r01 = reversebits(f2); + + PS_OUTPUT ps_output; + ps_output.color = float4(0,0,0,0); + return ps_output; +}; diff --git a/Test/hlsl.intrinsics.promote.frag b/Test/hlsl.intrinsics.promote.frag new file mode 100644 index 00000000..89d3e680 --- /dev/null +++ b/Test/hlsl.intrinsics.promote.frag @@ -0,0 +1,79 @@ + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +int i; +uint u; +float f; +bool b; + +int2 i2; +uint2 u2; +float2 f2; +bool2 b2; + +Buffer g_tTexbfs; +Texture1D g_tTex1df4; +uint upos; +float fpos; + +PS_OUTPUT main() +{ + // Same shapes: + + float r00 = max(b, f); + uint r01 = max(b, u); + int r02 = max(b, i); + float r03 = max(i, f); + float r04 = max(u, f); + + float2 r10 = max(b2, f2); + uint2 r11 = max(b2, u2); + int2 r12 = max(b2, i2); + float2 r13 = max(i2, f2); + float2 r14 = max(u2, f2); + + float2 r20 = clamp(i2, u2, f2); // 3 args, converts all to best type. + uint2 r21 = clamp(b2, u2, b2); + float2 r22 = clamp(b2, f2, b2); + + // Mixed shapes: + float2 r30 = max(b, f2); + uint2 r31 = max(b, u2); + int2 r32 = max(b, i2); + float2 r33 = max(i, f2); + float2 r34 = max(u, f2); + + float2 r40 = clamp(i, u2, f2); // 3 args, converts all to best type. + uint2 r41 = clamp(b2, u, b2); + float2 r42 = clamp(b2, f, b); + int2 r43 = clamp(i, i2, u2); + + float r50 = g_tTexbfs.Load(upos); + float r51 = g_tTexbfs.Load(fpos); + + int MipLevel; + + uint WidthU; + uint HeightU; + uint ElementsU; + uint DepthU; + uint NumberOfLevelsU; + uint NumberOfSamplesU; + + int WidthI; + int HeightI; + int ElementsI; + int DepthI; + int NumberOfLevelsI; + int NumberOfSamplesI; + + g_tTex1df4 . GetDimensions(WidthI); + g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsU); + g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsI); + g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsI); + + // max(i2, f2); + PS_OUTPUT ps_output; + ps_output.color = r00; + return ps_output; +}; diff --git a/Test/hlsl.intrinsics.promote.outputs.frag b/Test/hlsl.intrinsics.promote.outputs.frag new file mode 100644 index 00000000..42fa3e80 --- /dev/null +++ b/Test/hlsl.intrinsics.promote.outputs.frag @@ -0,0 +1,49 @@ + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +int i; +uint u; +float f; +bool b; + +int2 i2; +uint2 u2; +float2 f2; +bool2 b2; + +Buffer g_tTexbfs; +Texture1D g_tTex1df4; +uint upos; +float fpos; + +PS_OUTPUT main() +{ + int MipLevel; + + uint WidthU; + uint HeightU; + uint ElementsU; + uint DepthU; + uint NumberOfLevelsU; + uint NumberOfSamplesU; + + int WidthI; + int HeightI; + int ElementsI; + int DepthI; + int NumberOfLevelsI; + int NumberOfSamplesI; + + saturate(fpos); + + // Test output promotions + g_tTex1df4 . GetDimensions(WidthI); + g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsU); + g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsI); + g_tTex1df4 . GetDimensions(6, WidthI, NumberOfLevelsI); + + // max(i2, f2); + PS_OUTPUT ps_output; + ps_output.color = 0; + return ps_output; +}; diff --git a/Test/spv.register.autoassign-2.frag b/Test/spv.register.autoassign-2.frag index b943791f..05c49250 100644 --- a/Test/spv.register.autoassign-2.frag +++ b/Test/spv.register.autoassign-2.frag @@ -10,6 +10,6 @@ struct PS_OUTPUT void main(out PS_OUTPUT psout) { - psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) + - g_tScene[1].Sample(g_tSamp, 0.3); + psout.Color = g_tScene[0].Sample(g_tSamp, float2(0.3,0.4)) + + g_tScene[1].Sample(g_tSamp, float2(0.3,0.4)); } diff --git a/Test/spv.register.autoassign.rangetest.frag b/Test/spv.register.autoassign.rangetest.frag index c81c3959..314c8e96 100644 --- a/Test/spv.register.autoassign.rangetest.frag +++ b/Test/spv.register.autoassign.rangetest.frag @@ -10,6 +10,6 @@ struct PS_OUTPUT void main(out PS_OUTPUT psout) { - psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) + - g_tScene[1].Sample(g_tSamp, 0.3); + psout.Color = g_tScene[0].Sample(g_tSamp, float2(0.3, 0.3)) + + g_tScene[1].Sample(g_tSamp, float2(0.3, 0.3)); } diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 9c2590fd..b15a80a1 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -45,6 +45,7 @@ #include "propagateNoContraction.h" #include +#include namespace glslang { @@ -575,6 +576,27 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpDivAssign: case EOpModAssign: + case EOpAtan: + case EOpClamp: + case EOpCross: + case EOpDistance: + case EOpDot: + case EOpDst: + case EOpFaceForward: + case EOpFma: + case EOpFrexp: + case EOpLdexp: + case EOpMix: + case EOpLit: + case EOpMax: + case EOpMin: + case EOpModf: + case EOpPow: + case EOpReflect: + case EOpRefract: + case EOpSmoothStep: + case EOpStep: + case EOpSequence: case EOpConstructStruct: @@ -833,6 +855,9 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat if (profile == EEsProfile || version == 110) return false; + if (from == to) + return true; + // TODO: Move more policies into language-specific handlers. // Some languages allow more general (or potentially, more specific) conversions under some conditions. if (source == EShSourceHlsl) { @@ -901,6 +926,8 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat return version >= 400; case EbtUint: return true; + case EbtBool: + return (source == EShSourceHlsl); default: return false; } @@ -908,6 +935,8 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat switch (from) { case EbtInt: return true; + case EbtBool: + return (source == EShSourceHlsl); default: return false; } @@ -1747,6 +1776,9 @@ bool TIntermediate::promote(TIntermOperator* node) if (node->getAsBinaryNode()) return promoteBinary(*node->getAsBinaryNode()); + if (node->getAsAggregate()) + return promoteAggregate(*node->getAsAggregate()); + return false; } @@ -2190,6 +2222,77 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) return true; } +// +// See TIntermediate::promote +// +bool TIntermediate::promoteAggregate(TIntermAggregate& node) +{ + TOperator op = node.getOp(); + TIntermSequence& args = node.getSequence(); + const int numArgs = args.size(); + + // Presently, only hlsl does intrinsic promotions. + if (getSource() != EShSourceHlsl) + return true; + + // set of opcodes that can be promoted in this manner. + switch (op) { + case EOpAtan: + case EOpClamp: + case EOpCross: + case EOpDistance: + case EOpDot: + case EOpDst: + case EOpFaceForward: + // case EOpFindMSB: TODO: ?? + // case EOpFindLSB: TODO: ?? + case EOpFma: + case EOpMod: + case EOpFrexp: + case EOpLdexp: + case EOpMix: + case EOpLit: + case EOpMax: + case EOpMin: + case EOpModf: + // case EOpGenMul: TODO: ?? + case EOpPow: + case EOpReflect: + case EOpRefract: + // case EOpSinCos: TODO: ?? + case EOpSmoothStep: + case EOpStep: + break; + default: + return true; + } + + // TODO: array and struct behavior + + // Try converting all nodes to the given node's type + TIntermSequence convertedArgs(numArgs, nullptr); + + // Try to convert all types to the nonConvArg type. + for (int nonConvArg = 0; nonConvArg < numArgs; ++nonConvArg) { + // Try converting all args to this arg's type + for (int convArg = 0; convArg < numArgs; ++convArg) { + convertedArgs[convArg] = addConversion(op, args[nonConvArg]->getAsTyped()->getType(), + args[convArg]->getAsTyped()); + } + + // If we successfully converted all the args, use the result. + if (std::all_of(convertedArgs.begin(), convertedArgs.end(), + [](const TIntermNode* node) { return node != nullptr; })) { + + std::swap(args, convertedArgs); + return true; + } + } + + return false; +} + + void TIntermBinary::updatePrecision() { #ifdef AMD_EXTENSIONS diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 2e101347..53a414d6 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -370,6 +370,9 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // void TIntermediate::finalCheck(TInfoSink& infoSink) { + if (getTreeRoot() == nullptr) + return; + if (source == EShSourceGlsl && numEntryPoints < 1) error(infoSink, "Missing entry point: Each stage requires one entry point"); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 6a4cfd08..80c24e07 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -381,6 +381,7 @@ public: int addXfbBufferOffset(const TType&); unsigned int computeTypeXfbSize(const TType&, bool& containsDouble) const; static int getBaseAlignment(const TType&, int& size, int& stride, bool std140, bool rowMajor); + bool promote(TIntermOperator*); protected: TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); @@ -395,10 +396,10 @@ protected: bool userOutputUsed() const; static int getBaseAlignmentScalar(const TType&, int& size); bool isSpecializationOperation(const TIntermOperator&) const; - bool promote(TIntermOperator*); bool promoteUnary(TIntermUnary&); bool promoteBinary(TIntermBinary&); void addSymbolLinkageNode(TIntermAggregate*& linkage, TSymbolTable&, const TString&); + bool promoteAggregate(TIntermAggregate&); const EShLanguage language; // stage, known at construction time EShSource source; // source language, known a bit later diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 8c611f20..f470b87e 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -134,6 +134,9 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.negative.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.negative.vert", "VertexShaderFunction"}, + {"hlsl.intrinsics.promote.frag", "main"}, + {"hlsl.intrinsics.promote.down.frag", "main"}, + {"hlsl.intrinsics.promote.outputs.frag", "main"}, {"hlsl.layout.frag", "main"}, {"hlsl.load.2dms.dx10.frag", "main"}, {"hlsl.load.array.dx10.frag", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 49577677..d2ad1341 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -2555,7 +2555,7 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct // const TFunction* fnCandidate; bool builtIn; - fnCandidate = findFunction(loc, *function, builtIn); + fnCandidate = findFunction(loc, *function, builtIn, arguments); if (fnCandidate) { // This is a declared function that might map to // - a built-in operator, @@ -2597,21 +2597,27 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct } } + // for decompositions, since we want to operate on the function node, not the aggregate holding + // output conversions. + const TIntermTyped* fnNode = result; + + decomposeIntrinsic(loc, result, arguments); // HLSL->AST intrinsic decompositions + decomposeSampleMethods(loc, result, arguments); // HLSL->AST sample method decompositions + decomposeGeometryMethods(loc, result, arguments); // HLSL->AST geometry method decompositions + // Convert 'out' arguments. If it was a constant folded built-in, it won't be an aggregate anymore. // Built-ins with a single argument aren't called with an aggregate, but they also don't have an output. // Also, build the qualifier list for user function calls, which are always called with an aggregate. - if (result->getAsAggregate()) { + // We don't do this is if there has been a decomposition, which will have added its own conversions + // for output parameters. + if (result == fnNode && result->getAsAggregate()) { TQualifierList& qualifierList = result->getAsAggregate()->getQualifierList(); for (int i = 0; i < fnCandidate->getParamCount(); ++i) { TStorageQualifier qual = (*fnCandidate)[i].type->getQualifier().storage; qualifierList.push_back(qual); } - result = addOutputArgumentConversions(*fnCandidate, *result->getAsAggregate()); + result = addOutputArgumentConversions(*fnCandidate, *result->getAsOperator()); } - - decomposeIntrinsic(loc, result, arguments); // HLSL->AST intrinsic decompositions - decomposeSampleMethods(loc, result, arguments); // HLSL->AST sample method decompositions - decomposeGeometryMethods(loc, result, arguments); // HLSL->AST geometry method decompositions } } @@ -2724,9 +2730,19 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI // // Returns a node of a subtree that evaluates to the return value of the function. // -TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) +TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermOperator& intermNode) { - TIntermSequence& arguments = intermNode.getSequence(); + assert (intermNode.getAsAggregate() != nullptr || intermNode.getAsUnaryNode() != nullptr); + + const TSourceLoc& loc = intermNode.getLoc(); + + TIntermSequence argSequence; // temp sequence for unary node args + + if (intermNode.getAsUnaryNode()) + argSequence.push_back(intermNode.getAsUnaryNode()->getOperand()); + + TIntermSequence& arguments = argSequence.empty() ? intermNode.getAsAggregate()->getSequence() : argSequence; + const auto needsConversion = [&](int argNum) { return function[argNum].type->getQualifier().isParamOutput() && (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() || @@ -2759,8 +2775,8 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu if (intermNode.getBasicType() != EbtVoid) { // do the "tempRet = function(...), " bit from above tempRet = makeInternalVariable("tempReturn", intermNode.getType()); - TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, intermNode.getLoc()); - conversionTree = intermediate.addAssign(EOpAssign, tempRetNode, &intermNode, intermNode.getLoc()); + TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, loc); + conversionTree = intermediate.addAssign(EOpAssign, tempRetNode, &intermNode, loc); } else conversionTree = &intermNode; @@ -2775,7 +2791,7 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu // Make a temporary for what the function expects the argument to look like. TVariable* tempArg = makeInternalVariable("tempArg", *function[i].type); tempArg->getWritableType().getQualifier().makeTemporary(); - TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc()); + TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, loc); // This makes the deepest level, the member-wise copy TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode); @@ -2783,17 +2799,18 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); // replace the argument with another node for the same tempArg variable - arguments[i] = intermediate.addSymbol(*tempArg, intermNode.getLoc()); + arguments[i] = intermediate.addSymbol(*tempArg, loc); } } // Finalize the tree topology (see bigger comment above). if (tempRet) { // do the "..., tempRet" bit from above - TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, intermNode.getLoc()); - conversionTree = intermediate.growAggregate(conversionTree, tempRetNode, intermNode.getLoc()); + TIntermSymbol* tempRetNode = intermediate.addSymbol(*tempRet, loc); + conversionTree = intermediate.growAggregate(conversionTree, tempRetNode, loc); } - conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), intermNode.getLoc()); + + conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), loc); return conversionTree; } @@ -4339,7 +4356,8 @@ void HlslParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQuali // // Return the function symbol if found, otherwise nullptr. // -const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn) +const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn, + TIntermNode* args) { // const TFunction* function = nullptr; @@ -4445,9 +4463,81 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu // send to the generic selector const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie); - if (bestMatch == nullptr) + if (bestMatch == nullptr) { error(loc, "no matching overloaded function found", call.getName().c_str(), ""); - else if (tie) + return nullptr; + } + + // For builtins, we can convert across the arguments. This will happen in several steps: + // Step 1: If there's an exact match, use it. + // Step 2a: Otherwise, get the operator from the best match and promote arguments: + // Step 2b: reconstruct the TFunction based on the new arg types + // Step 3: Re-select after type promotion is applied, to find proper candidate. + if (builtIn) { + // Step 1: If there's an exact match, use it. + if (call.getMangledName() == bestMatch->getMangledName()) + return bestMatch; + + // Step 2a: Otherwise, get the operator from the best match and promote arguments as if we + // are that kind of operator. + if (args != nullptr) { + // The arg list can be a unary node, or an aggregate. We have to handle both. + // We will use the normal promote() facilities, which require an interm node. + TIntermOperator* promote = nullptr; + + if (call.getParamCount() == 1) { + promote = new TIntermUnary(bestMatch->getBuiltInOp()); + promote->getAsUnaryNode()->setOperand(args->getAsTyped()); + } else { + promote = new TIntermAggregate(bestMatch->getBuiltInOp()); + promote->getAsAggregate()->getSequence().swap(args->getAsAggregate()->getSequence()); + } + + if (! intermediate.promote(promote)) + return nullptr; + + // Obtain the promoted arg list. + if (call.getParamCount() == 1) { + args = promote->getAsUnaryNode()->getOperand(); + } else { + promote->getAsAggregate()->getSequence().swap(args->getAsAggregate()->getSequence()); + } + } + + // Step 2b: reconstruct the TFunction based on the new arg types + TFunction convertedCall(&call.getName(), call.getType(), call.getBuiltInOp()); + + if (args->getAsAggregate()) { + // Handle aggregates: put all args into the new function call + for (int arg=0; arggetAsAggregate()->getSequence().size()); ++arg) { + // TODO: But for constness, we could avoid the new & shallowCopy, and use the pointer directly. + TParameter param = { 0, new TType }; + 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 }; + 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 }; + param.type->shallowCopy(args->getAsTyped()->getType()); + convertedCall.addParameter(param); + } else { + assert(0); // unknown argument list. + return nullptr; + } + + // Step 3: Re-select after type promotion, to find proper candidate + // send to the generic selector + bestMatch = selectFunction(candidateList, convertedCall, convertible, better, tie); + + // At this point, there should be no tie. + } + + if (tie) error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), ""); return bestMatch; diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 3862c10f..0f436712 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -84,7 +84,7 @@ public: void decomposeGeometryMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); void addInputArgumentConversions(const TFunction&, TIntermNode*&) const; - TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&); + TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermOperator&); void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); TFunction* handleConstructorCall(const TSourceLoc&, const TType&); void handleSemantic(TSourceLoc, TQualifier&, const TString& semantic); @@ -125,7 +125,7 @@ public: void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly); void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&); - const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn); + const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn, TIntermNode* args); void declareTypedef(const TSourceLoc&, TString& identifier, const TType&, TArraySizes* typeArray = 0); TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0); TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index 05dc7cfb..8ecaec9d 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -558,8 +558,8 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS }, { "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS }, { "any", "S", "B", "SVM", "BFIU", EShLangAll }, - { "asdouble", "S", "D", "S,", "U,", EShLangAll }, - { "asdouble", "V2", "D", "V2,", "U,", EShLangAll }, + { "asdouble", "S", "D", "S,", "UI,", EShLangAll }, + { "asdouble", "V2", "D", "V2,", "UI,", EShLangAll }, { "asfloat", nullptr, "F", "SVM", "BFIU", EShLangAll }, { "asin", nullptr, nullptr, "SVM", "F", EShLangAll }, { "asint", nullptr, "I", "SVM", "FU", EShLangAll }, @@ -572,7 +572,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "clip", "-", "-", "SVM", "F", EShLangPS }, { "cos", nullptr, nullptr, "SVM", "F", EShLangAll }, { "cosh", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "countbits", nullptr, nullptr, "SV", "U", EShLangAll }, + { "countbits", nullptr, nullptr, "SV", "UI", EShLangAll }, { "cross", nullptr, nullptr, "V3,", "F,", EShLangAll }, { "D3DCOLORtoUBYTE4", "V4", "I", "V4", "F", EShLangAll }, { "ddx", nullptr, nullptr, "SVM", "F", EShLangPS }, @@ -636,9 +636,9 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "log10", nullptr, nullptr, "SVM", "F", EShLangAll }, { "log2", nullptr, nullptr, "SVM", "F", EShLangAll }, { "mad", nullptr, nullptr, "SVM,,", "DFUI,,", EShLangAll }, - { "max", nullptr, nullptr, "SVM,", "FI,", EShLangAll }, - { "min", nullptr, nullptr, "SVM,", "FI,", EShLangAll }, - { "modf", nullptr, nullptr, "SVM,>", "FI,", EShLangAll }, + { "max", nullptr, nullptr, "SVM,", "FIU,", EShLangAll }, + { "min", nullptr, nullptr, "SVM,", "FIU,", EShLangAll }, + { "modf", nullptr, nullptr, "SVM,>", "FIU,", EShLangAll }, { "msad4", "V4", "U", "S,V2,V4", "U,,", EShLangAll }, { "mul", "S", nullptr, "S,S", "FI,", EShLangAll }, { "mul", "V", nullptr, "S,V", "FI,", EShLangAll }, @@ -665,7 +665,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "rcp", nullptr, nullptr, "SVM", "FD", EShLangAll }, { "reflect", nullptr, nullptr, "V,", "F,", EShLangAll }, { "refract", nullptr, nullptr, "V,V,S", "F,,", EShLangAll }, - { "reversebits", nullptr, nullptr, "SV", "U", EShLangAll }, + { "reversebits", nullptr, nullptr, "SV", "UI", EShLangAll }, { "round", nullptr, nullptr, "SVM", "F", EShLangAll }, { "rsqrt", nullptr, nullptr, "SVM", "F", EShLangAll }, { "saturate", nullptr, nullptr , "SVM", "F", EShLangAll }, @@ -735,7 +735,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c // RWTexture loads { "Load", "V4", nullptr, "!#,V", "FIU,I", EShLangAll }, // (RW)Buffer loads - { "Load", "V4", nullptr, "~*1,V", "FIU,I", EShLangAll }, + { "Load", "V4", nullptr, "~*1,V", "FIU,I", EShLangAll }, { "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll }, { "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangAll }, From fca826212cddbef03d69c4d7ab3a3efa5e2c81e7 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 26 Nov 2016 13:23:20 -0700 Subject: [PATCH 100/130] Always correctly terminate main. Issue #588, PR #600. --- SPIRV/GlslangToSpv.cpp | 26 +++++++++---------- .../hlsl.array.implicit-size.frag.out | 1 + Test/baseResults/hlsl.float1.frag.out | 1 + Test/baseResults/hlsl.float4.frag.out | 1 + Test/baseResults/hlsl.intrinsics.vert.out | 1 + Test/baseResults/hlsl.layout.frag.out | 1 + Test/baseResults/hlsl.matType.frag.out | 1 + Test/baseResults/hlsl.shapeConv.frag.out | 1 + Test/baseResults/hlsl.swizzle.frag.out | 1 + Test/baseResults/hlsl.typedef.frag.out | 1 + glslang/Include/revision.h | 4 +-- 11 files changed, 24 insertions(+), 15 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 37aac177..fc269e9b 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -99,7 +99,7 @@ private: class TGlslangToSpvTraverser : public glslang::TIntermTraverser { public: TGlslangToSpvTraverser(const glslang::TIntermediate*, spv::SpvBuildLogger* logger); - virtual ~TGlslangToSpvTraverser(); + virtual ~TGlslangToSpvTraverser() { } bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate*); bool visitBinary(glslang::TVisit, glslang::TIntermBinary*); @@ -111,6 +111,7 @@ public: bool visitLoop(glslang::TVisit, glslang::TIntermLoop*); bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*); + void finishSpv(); void dumpSpv(std::vector& out); protected: @@ -896,27 +897,27 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls default: break; } - } -// Finish everything and dump -void TGlslangToSpvTraverser::dumpSpv(std::vector& out) +// Finish creating SPV, after the traversal is complete. +void TGlslangToSpvTraverser::finishSpv() { + if (! mainTerminated) { + 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); builder.eliminateDeadDecorations(); - builder.dump(out); } -TGlslangToSpvTraverser::~TGlslangToSpvTraverser() +// Write the SPV into 'out'. +void TGlslangToSpvTraverser::dumpSpv(std::vector& out) { - if (! mainTerminated) { - spv::Block* lastMainBlock = shaderEntry->getLastBlock(); - builder.setBuildPoint(lastMainBlock); - builder.leaveFunction(); - } + builder.dump(out); } // @@ -5120,9 +5121,8 @@ void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vectortraverse(&it); - + it.finishSpv(); it.dumpSpv(spirv); glslang::GetThreadPoolAllocator().pop(); diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out index d8e0ed86..ffa1c3ee 100644 --- a/Test/baseResults/hlsl.array.implicit-size.frag.out +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -234,6 +234,7 @@ gl_FragCoord origin is upper left Store 18(g_array) 24 Store 28(g_array_unused) 31 Store 37(g_mystruct) 42 + Return FunctionEnd 12(main(struct-PS_OUTPUT-vf41;): 2 Function None 10 11(ps_output): 9(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out index 83a243fc..a2e3cefb 100755 --- a/Test/baseResults/hlsl.float1.frag.out +++ b/Test/baseResults/hlsl.float1.frag.out @@ -92,6 +92,7 @@ gl_FragCoord origin is upper left 5: Label Store 14(f1) 15 Store 16(scalar) 17 + Return FunctionEnd 11(ShaderFunction(vf1;f1;): 6(float) Function None 8 9(inFloat1): 7(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out index 8d45d6eb..600b4a10 100755 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -82,6 +82,7 @@ gl_FragCoord origin is upper left 20: TypePointer Uniform 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label + Return FunctionEnd 11(ShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out index 7e7a5119..255e3334 100644 --- a/Test/baseResults/hlsl.intrinsics.vert.out +++ b/Test/baseResults/hlsl.intrinsics.vert.out @@ -3011,6 +3011,7 @@ Shader version: 450 1059: 76 ConstantComposite 1058 1058 1058 1058 4(VertexShaderFunction): 2 Function None 3 5: Label + Return FunctionEnd 16(VertexShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10 11(inF0): 7(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index e8fab995..538a26a1 100755 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -119,6 +119,7 @@ gl_FragCoord origin is upper left 38: 17(int) SpecConstant 10 4(main): 2 Function None 3 5: Label + Return FunctionEnd 11(PixelShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index 9b8e4567..468387b0 100755 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -90,6 +90,7 @@ gl_FragCoord origin is upper left 29: 28(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label + Return FunctionEnd 11(ShaderFunction(vf1;f1;): 6(float) Function None 8 9(inFloat1): 7(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index 8278fac9..451bf886 100755 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -282,6 +282,7 @@ gl_FragCoord origin is upper left 62: TypeVector 41(bool) 4 4(main): 2 Function None 3 5: Label + Return FunctionEnd 13(PixelShaderFunction(vf4;f1;): 7(fvec4) Function None 10 11(input): 8(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out index 16951a34..cf4be74c 100755 --- a/Test/baseResults/hlsl.swizzle.frag.out +++ b/Test/baseResults/hlsl.swizzle.frag.out @@ -106,6 +106,7 @@ gl_FragCoord origin is upper left 4(PixelShaderFunction): 2 Function None 3 5: Label Store 14(AmbientColor) 18 + Return FunctionEnd 11(ShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out index e8bda1af..10b3413f 100755 --- a/Test/baseResults/hlsl.typedef.frag.out +++ b/Test/baseResults/hlsl.typedef.frag.out @@ -106,6 +106,7 @@ gl_FragCoord origin is upper left 20: 9(int) Constant 2 4(PixelShaderFunction): 2 Function None 3 5: Label + Return FunctionEnd 14(ShaderFunction(vf4;i1;): 7(fvec4) Function None 11 12(input): 8(ptr) FunctionParameter diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 4ec53322..841d2854 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1650" -#define GLSLANG_DATE "14-Nov-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1659" +#define GLSLANG_DATE "26-Nov-2016" From 517fe7a6ad7c61c6890fa7d1bec15e6ebe5509c2 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 26 Nov 2016 13:31:47 -0700 Subject: [PATCH 101/130] Non-functional: Rename some entry-point variables to entryPoint, not main. --- SPIRV/GlslangToSpv.cpp | 16 ++++++++-------- SPIRV/SpvBuilder.cpp | 8 ++++---- SPIRV/SpvBuilder.h | 2 +- glslang/Include/revision.h | 2 +- hlsl/hlslParseHelper.cpp | 4 ++-- hlsl/hlslParseHelper.h | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index fc269e9b..7abd04d6 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -182,8 +182,8 @@ protected: // There is a 1:1 mapping between a spv builder and a module; this is thread safe spv::Builder builder; - bool inMain; - bool mainTerminated; + bool inEntryPoint; + bool entryPointTerminated; bool linkageOnly; // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used std::set iOSet; // all input/output variables from either static use or declaration of interface const glslang::TIntermediate* glslangIntermediate; @@ -769,7 +769,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls : TIntermTraverser(true, false, true), shaderEntry(nullptr), currentFunction(nullptr), sequenceDepth(0), logger(buildLogger), builder((glslang::GetKhronosToolId() << 16) | GeneratorVersion, logger), - inMain(false), mainTerminated(false), linkageOnly(false), + inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), glslangIntermediate(glslangIntermediate) { spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage()); @@ -902,7 +902,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls // Finish creating SPV, after the traversal is complete. void TGlslangToSpvTraverser::finishSpv() { - if (! mainTerminated) { + if (! entryPointTerminated) { builder.setBuildPoint(shaderEntry->getLastBlock()); builder.leaveFunction(); } @@ -1383,17 +1383,17 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpFunction: if (visit == glslang::EvPreVisit) { if (isShaderEntryPoint(node)) { - inMain = true; + inEntryPoint = true; builder.setBuildPoint(shaderEntry->getLastBlock()); currentFunction = shaderEntry; } else { handleFunctionEntry(node); } } else { - if (inMain) - mainTerminated = true; + if (inEntryPoint) + entryPointTerminated = true; builder.leaveFunction(); - inMain = false; + inEntryPoint = false; } return true; diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 4703edc3..04b0f04f 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -64,7 +64,7 @@ Builder::Builder(unsigned int magicNumber, SpvBuildLogger* buildLogger) : builderNumber(magicNumber), buildPoint(0), uniqueId(0), - mainFunction(0), + entryPointFunction(0), generatingOpCodeForSpecConst(false), logger(buildLogger) { @@ -967,15 +967,15 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat // Comments in header Function* Builder::makeEntryPoint(const char* entryPoint) { - assert(! mainFunction); + assert(! entryPointFunction); Block* entry; std::vector params; std::vector precisions; - mainFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, precisions, &entry); + entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, precisions, &entry); - return mainFunction; + return entryPointFunction; } // Comments in header diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 0e8d9cae..e8524b2b 100755 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -564,7 +564,7 @@ public: Module module; Block* buildPoint; Id uniqueId; - Function* mainFunction; + Function* entryPointFunction; bool generatingOpCodeForSpecConst; AccessChain accessChain; diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 841d2854..77c4eed4 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1659" +#define GLSLANG_REVISION "Overload400-PrecQual.1660" #define GLSLANG_DATE "26-Nov-2016" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 49577677..b40546ef 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -55,7 +55,7 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), contextPragma(true, false), loopNestingLevel(0), annotationNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), - postMainReturn(false), + postEntryPointReturn(false), limits(resources.limits), entryPointOutput(nullptr), nextInLocation(0), nextOutLocation(0) @@ -1141,7 +1141,7 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l intermediate.setAggregateOperator(paramNodes, EOpParameters, TType(EbtVoid), loc); loopNestingLevel = 0; controlFlowNestingLevel = 0; - postMainReturn = false; + postEntryPointReturn = false; // Handle function attributes if (inEntryPoint) { diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 3862c10f..554243b6 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -193,7 +193,7 @@ protected: int controlFlowNestingLevel; // 0 if outside all flow control TList switchSequenceStack; // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting bool inEntryPoint; // if inside a function, true if the function is the entry point - bool postMainReturn; // if inside a function, true if the function is the entry point and this is after a return statement + bool postEntryPointReturn; // if inside a function, true if the function is the entry point and this is after a return statement const TType* currentFunctionType; // the return type of the function that's currently being parsed bool functionReturnsValue; // true if a non-void function has a return TBuiltInResource resources; From e50dc536ff76310bd24fa222397cca9d0b6acacf Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 26 Nov 2016 13:45:18 -0700 Subject: [PATCH 102/130] Warn on HLSL not finding entry point. Issue #588. --- .../baseResults/hlsl.array.implicit-size.frag.out | 1 + Test/baseResults/hlsl.float1.frag.out | 1 + Test/baseResults/hlsl.float4.frag.out | 1 + Test/baseResults/hlsl.intrinsics.vert.out | 1 + Test/baseResults/hlsl.layout.frag.out | 1 + Test/baseResults/hlsl.matType.frag.out | 1 + Test/baseResults/hlsl.shapeConv.frag.out | 1 + Test/baseResults/hlsl.swizzle.frag.out | 1 + Test/baseResults/hlsl.typedef.frag.out | 1 + glslang/Include/revision.h | 2 +- glslang/MachineIndependent/linkValidate.cpp | 15 +++++++++++++-- glslang/MachineIndependent/localintermediate.h | 1 + 12 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out index ffa1c3ee..5674cb47 100644 --- a/Test/baseResults/hlsl.array.implicit-size.frag.out +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -81,6 +81,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out index a2e3cefb..641febd7 100755 --- a/Test/baseResults/hlsl.float1.frag.out +++ b/Test/baseResults/hlsl.float1.frag.out @@ -32,6 +32,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out index 600b4a10..27c9a5c6 100755 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -22,6 +22,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out index 255e3334..bcf911bc 100644 --- a/Test/baseResults/hlsl.intrinsics.vert.out +++ b/Test/baseResults/hlsl.intrinsics.vert.out @@ -1396,6 +1396,7 @@ Shader version: 450 Linked vertex stage: +WARNING: Linking vertex stage: Entry point not found Shader version: 450 0:? Sequence diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index 538a26a1..0c12435a 100755 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -33,6 +33,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index 468387b0..038ca738 100755 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -15,6 +15,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index 451bf886..a15caac5 100755 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -115,6 +115,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out index cf4be74c..54fc662e 100755 --- a/Test/baseResults/hlsl.swizzle.frag.out +++ b/Test/baseResults/hlsl.swizzle.frag.out @@ -38,6 +38,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out index 10b3413f..565f45fd 100755 --- a/Test/baseResults/hlsl.typedef.frag.out +++ b/Test/baseResults/hlsl.typedef.frag.out @@ -39,6 +39,7 @@ gl_FragCoord origin is upper left Linked fragment stage: +WARNING: Linking fragment stage: Entry point not found Shader version: 450 gl_FragCoord origin is upper left diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 77c4eed4..57a322e4 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1660" +#define GLSLANG_REVISION "Overload400-PrecQual.1661" #define GLSLANG_DATE "26-Nov-2016" diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 2e101347..bc473abc 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -60,6 +60,13 @@ void TIntermediate::error(TInfoSink& infoSink, const char* message) ++numErrors; } +// Link-time warning. +void TIntermediate::warn(TInfoSink& infoSink, const char* message) +{ + infoSink.info.prefix(EPrefixWarning); + infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; +} + // TODO: 4.4 offset/align: "Two blocks linked together in the same program with the same block // name must have the exact same set of members qualified with offset and their integral-constant // expression values must be the same, or a link-time error results." @@ -370,8 +377,12 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // void TIntermediate::finalCheck(TInfoSink& infoSink) { - if (source == EShSourceGlsl && numEntryPoints < 1) - error(infoSink, "Missing entry point: Each stage requires one entry point"); + if (numEntryPoints < 1) { + if (source == EShSourceGlsl) + error(infoSink, "Missing entry point: Each stage requires one entry point"); + else + warn(infoSink, "Entry point not found"); + } if (numPushConstants > 1) error(infoSink, "Only one push_constant block is allowed per stage"); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 6a4cfd08..e8608240 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -385,6 +385,7 @@ public: protected: TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); void error(TInfoSink& infoSink, const char*); + void warn(TInfoSink& infoSink, const char*); void mergeBodies(TInfoSink&, TIntermSequence& globals, const TIntermSequence& unitGlobals); void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects); void mergeImplicitArraySizes(TType&, const TType&); From 509c4216e6af3d5fdf020c4a373473831923a42b Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 27 Nov 2016 17:26:21 -0700 Subject: [PATCH 103/130] Non-functional: Fix typos. --- Test/baseResults/310AofA.vert.out | 2 +- Test/baseResults/430AofA.frag.out | 2 +- glslang/Include/ConstantUnion.h | 2 +- glslang/Include/revision.h | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 2 +- hlsl/hlslParseHelper.cpp | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Test/baseResults/310AofA.vert.out b/Test/baseResults/310AofA.vert.out index 83f105ca..28592d51 100644 --- a/Test/baseResults/310AofA.vert.out +++ b/Test/baseResults/310AofA.vert.out @@ -5,7 +5,7 @@ ERROR: 0:23: '' : array size required ERROR: 0:28: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 0:40: '' : array size required ERROR: 0:48: 'constructor' : constructing non-array constituent from array argument -ERROR: 0:49: 'constructior' : array constructor argument not correct type to construct array element +ERROR: 0:49: 'constructor' : array constructor argument not correct type to construct array element ERROR: 0:62: '[' : array index out of range '4' ERROR: 0:78: 'assign' : cannot convert from 'global 4-element array of 7-element array of highp float' to 'global 5-element array of 7-element array of highp float' ERROR: 0:79: 'assign' : cannot convert from 'global 4-element array of 7-element array of highp float' to 'global implicitly-sized array of 7-element array of highp float' diff --git a/Test/baseResults/430AofA.frag.out b/Test/baseResults/430AofA.frag.out index 68285f73..f3bbfb8b 100644 --- a/Test/baseResults/430AofA.frag.out +++ b/Test/baseResults/430AofA.frag.out @@ -2,7 +2,7 @@ Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:6: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 0:14: 'constructor' : constructing non-array constituent from array argument -ERROR: 0:15: 'constructior' : array constructor argument not correct type to construct array element +ERROR: 0:15: 'constructor' : array constructor argument not correct type to construct array element ERROR: 0:28: '[' : array index out of range '4' ERROR: 0:56: 'constructor' : cannot convert parameter 2 from 'const 3-element array of 4-component vector of float' to 'temp 2-element array of 4-component vector of float' ERROR: 0:60: 'constructor' : cannot convert parameter 2 from 'const 2-element array of 4-component vector of float' to 'temp 3-element array of 4-component vector of float' diff --git a/glslang/Include/ConstantUnion.h b/glslang/Include/ConstantUnion.h index 8ee2c84c..ec6aff11 100644 --- a/glslang/Include/ConstantUnion.h +++ b/glslang/Include/ConstantUnion.h @@ -538,7 +538,7 @@ private: }; // Encapsulate having a pointer to an array of TConstUnion, -// which only needs to be allocated if it's size is going to be +// which only needs to be allocated if its size is going to be // bigger than 0. // // One convenience is being able to use [] to go inside the array, instead diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 57a322e4..2cfdada1 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1661" -#define GLSLANG_DATE "26-Nov-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1662" +#define GLSLANG_DATE "27-Nov-2016" diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 016f07a2..831e3ac0 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2313,7 +2313,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", "constructior", ""); + error(loc, "array constructor argument not correct type to construct array element", "constructor", ""); return true; } diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index b40546ef..3f73a6fb 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -3381,7 +3381,7 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* /*no // 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", "constructior", ""); + error(loc, "array constructor argument not correct type to construct array element", "constructor", ""); return true; } From 5307eb2d1b0227f54237154a58c0fc61cad8e80c Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 27 Nov 2016 17:30:14 -0700 Subject: [PATCH 104/130] Non-functional: Change a bunch of 0 to nullptr. --- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/Intermediate.cpp | 86 ++++++++++----------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 2cfdada1..21df38d8 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1662" +#define GLSLANG_REVISION "Overload400-PrecQual.1663" #define GLSLANG_DATE "27-Nov-2016" diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 9c2590fd..303c0ad2 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -114,7 +114,7 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn { // No operations work on blocks if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock) - return 0; + return nullptr; // Try converting the children's base types to compatible types. TIntermTyped* child = addConversion(op, left->getType(), right); @@ -125,7 +125,7 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn if (child) left = child; else - return 0; + return nullptr; } // Convert the children's type shape to be compatible. @@ -275,10 +275,10 @@ TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermT TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSourceLoc loc) { if (child == 0) - return 0; + return nullptr; if (child->getType().getBasicType() == EbtBlock) - return 0; + return nullptr; switch (op) { case EOpLogicalNot: @@ -287,7 +287,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo } if (child->getType().getBasicType() != EbtBool || child->getType().isMatrix() || child->getType().isArray() || child->getType().isVector()) { - return 0; + return nullptr; } break; @@ -297,7 +297,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo case EOpPreDecrement: case EOpNegative: if (child->getType().getBasicType() == EbtStruct || child->getType().isArray()) - return 0; + return nullptr; default: break; // some compilers want this } @@ -325,8 +325,8 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo child->getMatrixRows(), child->isVector()), child); - if (child == 0) - return 0; + if (child == nullptr) + return nullptr; } // @@ -379,8 +379,8 @@ TIntermTyped* TIntermediate::addBuiltInFunctionCall(const TSourceLoc& loc, TOper // including constness (which would differ from the prototype). // TIntermTyped* child = childNode->getAsTyped(); - if (child == 0) - return 0; + if (child == nullptr) + return nullptr; if (child->getAsConstantUnion()) { TIntermTyped* folded = child->getAsConstantUnion()->fold(op, returnType); @@ -416,7 +416,7 @@ TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator o // if (node) { aggNode = node->getAsAggregate(); - if (aggNode == 0 || aggNode->getOp() != EOpNull) { + if (aggNode == nullptr || aggNode->getOp() != EOpNull) { // // Make an aggregate containing this node. // @@ -451,7 +451,7 @@ TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator o // Generally, this is focused on basic type conversion, not shape conversion. // See addShapeConversion(). // -// Return 0 if a conversion can't be done. +// Return nullptr if a conversion can't be done. // TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TIntermTyped* node) const { @@ -460,7 +460,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // switch (node->getBasicType()) { case EbtVoid: - return 0; + return nullptr; case EbtAtomicUint: case EbtSampler: // opaque types can be passed to functions @@ -478,7 +478,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt break; // otherwise, opaque types can't even be operated on, let alone converted - return 0; + return nullptr; default: break; } @@ -489,11 +489,11 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // If one's a structure, then no conversions. if (type.isStruct() || node->isStruct()) - return 0; + return nullptr; // If one's an array, then no conversions. if (type.isArray() || node->getType().isArray()) - return 0; + return nullptr; // Note: callers are responsible for other aspects of shape, // like vector and matrix sizes. @@ -584,7 +584,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType(), op)) promoteTo = type.getBasicType(); else - return 0; + return nullptr; break; @@ -606,7 +606,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt return node; else - return 0; + return nullptr; default: // default is to require a match; all exceptions should have case statements above @@ -614,7 +614,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt if (type.getBasicType() == node->getType().getBasicType()) return node; else - return 0; + return nullptr; } if (node->getAsConstantUnion()) @@ -623,7 +623,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // // Add a new newNode for the conversion. // - TIntermUnary* newNode = 0; + TIntermUnary* newNode = nullptr; TOperator newOp = EOpNull; @@ -642,7 +642,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtInt64: newOp = EOpConvInt64ToDouble; break; case EbtUint64: newOp = EOpConvUint64ToDouble; break; default: - return 0; + return nullptr; } break; case EbtFloat: @@ -657,7 +657,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtInt64: newOp = EOpConvInt64ToFloat; break; case EbtUint64: newOp = EOpConvUint64ToFloat; break; default: - return 0; + return nullptr; } break; #ifdef AMD_EXTENSIONS @@ -671,7 +671,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtInt64: newOp = EOpConvInt64ToFloat16; break; case EbtUint64: newOp = EOpConvUint64ToFloat16; break; default: - return 0; + return nullptr; } break; #endif @@ -687,7 +687,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtInt64: newOp = EOpConvInt64ToBool; break; case EbtUint64: newOp = EOpConvUint64ToBool; break; default: - return 0; + return nullptr; } break; case EbtInt: @@ -702,7 +702,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtInt64: newOp = EOpConvInt64ToInt; break; case EbtUint64: newOp = EOpConvUint64ToInt; break; default: - return 0; + return nullptr; } break; case EbtUint: @@ -717,7 +717,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtInt64: newOp = EOpConvInt64ToUint; break; case EbtUint64: newOp = EOpConvUint64ToUint; break; default: - return 0; + return nullptr; } break; case EbtInt64: @@ -732,7 +732,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt #endif case EbtUint64: newOp = EOpConvUint64ToInt64; break; default: - return 0; + return nullptr; } break; case EbtUint64: @@ -747,11 +747,11 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt #endif case EbtInt64: newOp = EOpConvInt64ToUint64; break; default: - return 0; + return nullptr; } break; default: - return 0; + return nullptr; } TType newType(promoteTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows()); @@ -1123,15 +1123,15 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const // Safe way to combine two nodes into an aggregate. Works with null pointers, // a node that's not a aggregate yet, etc. // -// Returns the resulting aggregate, unless 0 was passed in for +// Returns the resulting aggregate, unless nullptr was passed in for // both existing nodes. // TIntermAggregate* TIntermediate::growAggregate(TIntermNode* left, TIntermNode* right) { - if (left == 0 && right == 0) - return 0; + if (left == nullptr && right == nullptr) + return nullptr; - TIntermAggregate* aggNode = 0; + TIntermAggregate* aggNode = nullptr; if (left) aggNode = left->getAsAggregate(); if (! aggNode || aggNode->getOp() != EOpNull) { @@ -1158,12 +1158,12 @@ TIntermAggregate* TIntermediate::growAggregate(TIntermNode* left, TIntermNode* r // // Turn an existing node into an aggregate. // -// Returns an aggregate, unless 0 was passed in for the existing node. +// Returns an aggregate, unless nullptr was passed in for the existing node. // TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node) { - if (node == 0) - return 0; + if (node == nullptr) + return nullptr; TIntermAggregate* aggNode = new TIntermAggregate; aggNode->getSequence().push_back(node); @@ -1174,8 +1174,8 @@ TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node) TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node, const TSourceLoc& loc) { - if (node == 0) - return 0; + if (node == nullptr) + return nullptr; TIntermAggregate* aggNode = new TIntermAggregate; aggNode->getSequence().push_back(node); @@ -1237,7 +1237,7 @@ TIntermTyped* TIntermediate::addMethod(TIntermTyped* object, const TType& type, // a true path, and a false path. The two paths are specified // as separate parameters. // -// Returns the selection node created, or 0 if one could not be. +// Returns the selection node created, or nullptr if one could not be. // TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc& loc) { @@ -1252,12 +1252,12 @@ TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* true if (child) trueBlock = child; else - return 0; + return nullptr; } // After conversion, types have to match. if (falseBlock->getType() != trueBlock->getType()) - return 0; + return nullptr; // // See if all the operands are constant, then fold it otherwise not. @@ -1431,7 +1431,7 @@ TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* init // TIntermBranch* TIntermediate::addBranch(TOperator branchOp, const TSourceLoc& loc) { - return addBranch(branchOp, 0, loc); + return addBranch(branchOp, nullptr, loc); } TIntermBranch* TIntermediate::addBranch(TOperator branchOp, TIntermTyped* expression, const TSourceLoc& loc) @@ -1448,7 +1448,7 @@ TIntermBranch* TIntermediate::addBranch(TOperator branchOp, TIntermTyped* expres // bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/) { - if (root == 0) + if (root == nullptr) return true; // Finish off the top-level sequence From 1c98904014a258e446b5dc0edd26607a7085c17b Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 27 Nov 2016 17:32:19 -0700 Subject: [PATCH 105/130] Fix crash by returning early from finalCheck() if there is no tree to process. --- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/linkValidate.cpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 21df38d8..66fec1a3 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1663" +#define GLSLANG_REVISION "Overload400-PrecQual.1664" #define GLSLANG_DATE "27-Nov-2016" diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index bc473abc..050fdae0 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -377,6 +377,9 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // void TIntermediate::finalCheck(TInfoSink& infoSink) { + if (getTreeRoot() == nullptr) + return; + if (numEntryPoints < 1) { if (source == EShSourceGlsl) error(infoSink, "Missing entry point: Each stage requires one entry point"); From 98ad48532157bbaa1cffc0625cbf0b514aa3ad74 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 27 Nov 2016 17:39:07 -0700 Subject: [PATCH 106/130] HLSL: Support {...} initializer lists that are too short. --- Test/baseResults/hlsl.partialInit.frag.out | 310 ++++++++++++++++++ Test/hlsl.partialInit.frag | 22 ++ glslang/Include/revision.h | 2 +- glslang/MachineIndependent/Intermediate.cpp | 12 + .../MachineIndependent/localintermediate.h | 1 + gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslGrammar.cpp | 12 +- hlsl/hlslParseHelper.cpp | 45 ++- hlsl/hlslParseHelper.h | 1 + 9 files changed, 397 insertions(+), 9 deletions(-) create mode 100755 Test/baseResults/hlsl.partialInit.frag.out create mode 100755 Test/hlsl.partialInit.frag diff --git a/Test/baseResults/hlsl.partialInit.frag.out b/Test/baseResults/hlsl.partialInit.frag.out new file mode 100755 index 00000000..bac92378 --- /dev/null +++ b/Test/baseResults/hlsl.partialInit.frag.out @@ -0,0 +1,310 @@ +hlsl.partialInit.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:8 Sequence +0:8 move second child to first child (temp 4-component vector of float) +0:8 'gv' (global 4-component vector of float) +0:8 Constant: +0:8 0.000000 +0:8 0.000000 +0:8 1.000000 +0:8 0.000000 +0:9 Sequence +0:9 move second child to first child (temp 3-element array of float) +0:9 'gfa' (global 3-element array of float) +0:9 Constant: +0:9 0.000000 +0:9 0.000000 +0:9 0.000000 +0:12 Function Definition: PixelShaderFunction(vf4; (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:12 Function Parameters: +0:12 'input' (layout(location=0 ) in 4-component vector of float) +0:? Sequence +0:13 Sequence +0:13 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:13 'o2' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:13 Constant: +0:13 3 (const int) +0:13 0.000000 +0:13 false (const bool) +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:15 move second child to first child (temp 4-component vector of float) +0:15 v: direct index for structure (temp 4-component vector of float) +0:15 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:15 Constant: +0:15 3 (const int) +0:15 vector-scale (temp 4-component vector of float) +0:15 'gv' (global 4-component vector of float) +0:15 direct index (temp float) +0:15 'gfa' (global 3-element array of float) +0:15 Constant: +0:15 2 (const int) +0:16 Sequence +0:16 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:16 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:16 Constant: +0:16 0 (const int) +0:16 0.000000 +0:16 false (const bool) +0:16 0.000000 +0:16 0.000000 +0:16 0.000000 +0:16 0.000000 +0:19 move second child to first child (temp bool) +0:19 c: direct index for structure (temp bool) +0:19 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 Constant: +0:19 2 (const int) +0:19 c: direct index for structure (temp bool) +0:19 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 Constant: +0:19 2 (const int) +0:21 Sequence +0:21 Sequence +0:21 move second child to first child (temp int) +0:? 'a' (layout(location=0 ) out int) +0:21 a: direct index for structure (temp int) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 0 (const int) +0:21 move second child to first child (temp float) +0:? 'b' (layout(location=1 ) out float) +0:21 b: direct index for structure (temp float) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 1 (const int) +0:21 move second child to first child (temp bool) +0:? 'c' (layout(location=2 ) out bool) +0:21 c: direct index for structure (temp bool) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 2 (const int) +0:21 move second child to first child (temp 4-component vector of float) +0:? 'v' (layout(location=3 ) out 4-component vector of float) +0:21 v: direct index for structure (temp 4-component vector of float) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 3 (const int) +0:21 Branch: Return +0:? Linker Objects +0:? 'a' (layout(location=0 ) out int) +0:? 'b' (layout(location=1 ) out float) +0:? 'c' (layout(location=2 ) out bool) +0:? 'v' (layout(location=3 ) out 4-component vector of float) +0:? 'input' (layout(location=0 ) in 4-component vector of float) +0:? 'gv' (global 4-component vector of float) +0:? 'gfa' (global 3-element array of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:8 Sequence +0:8 move second child to first child (temp 4-component vector of float) +0:8 'gv' (global 4-component vector of float) +0:8 Constant: +0:8 0.000000 +0:8 0.000000 +0:8 1.000000 +0:8 0.000000 +0:9 Sequence +0:9 move second child to first child (temp 3-element array of float) +0:9 'gfa' (global 3-element array of float) +0:9 Constant: +0:9 0.000000 +0:9 0.000000 +0:9 0.000000 +0:12 Function Definition: PixelShaderFunction(vf4; (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:12 Function Parameters: +0:12 'input' (layout(location=0 ) in 4-component vector of float) +0:? Sequence +0:13 Sequence +0:13 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:13 'o2' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:13 Constant: +0:13 3 (const int) +0:13 0.000000 +0:13 false (const bool) +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:15 move second child to first child (temp 4-component vector of float) +0:15 v: direct index for structure (temp 4-component vector of float) +0:15 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:15 Constant: +0:15 3 (const int) +0:15 vector-scale (temp 4-component vector of float) +0:15 'gv' (global 4-component vector of float) +0:15 direct index (temp float) +0:15 'gfa' (global 3-element array of float) +0:15 Constant: +0:15 2 (const int) +0:16 Sequence +0:16 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:16 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:16 Constant: +0:16 0 (const int) +0:16 0.000000 +0:16 false (const bool) +0:16 0.000000 +0:16 0.000000 +0:16 0.000000 +0:16 0.000000 +0:19 move second child to first child (temp bool) +0:19 c: direct index for structure (temp bool) +0:19 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 Constant: +0:19 2 (const int) +0:19 c: direct index for structure (temp bool) +0:19 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 Constant: +0:19 2 (const int) +0:21 Sequence +0:21 Sequence +0:21 move second child to first child (temp int) +0:? 'a' (layout(location=0 ) out int) +0:21 a: direct index for structure (temp int) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 0 (const int) +0:21 move second child to first child (temp float) +0:? 'b' (layout(location=1 ) out float) +0:21 b: direct index for structure (temp float) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 1 (const int) +0:21 move second child to first child (temp bool) +0:? 'c' (layout(location=2 ) out bool) +0:21 c: direct index for structure (temp bool) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 2 (const int) +0:21 move second child to first child (temp 4-component vector of float) +0:? 'v' (layout(location=3 ) out 4-component vector of float) +0:21 v: direct index for structure (temp 4-component vector of float) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 3 (const int) +0:21 Branch: Return +0:? Linker Objects +0:? 'a' (layout(location=0 ) out int) +0:? 'b' (layout(location=1 ) out float) +0:? 'c' (layout(location=2 ) out bool) +0:? 'v' (layout(location=3 ) out 4-component vector of float) +0:? 'input' (layout(location=0 ) in 4-component vector of float) +0:? 'gv' (global 4-component vector of float) +0:? 'gfa' (global 3-element array of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 66 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "PixelShaderFunction" 45 50 56 60 65 + ExecutionMode 4 OriginUpperLeft + Name 4 "PixelShaderFunction" + Name 9 "gv" + Name 17 "gfa" + Name 21 "outs" + MemberName 21(outs) 0 "a" + MemberName 21(outs) 1 "b" + MemberName 21(outs) 2 "c" + MemberName 21(outs) 3 "v" + Name 23 "o2" + Name 28 "o4" + Name 37 "o1" + Name 45 "a" + Name 50 "b" + Name 56 "c" + Name 60 "v" + Name 65 "input" + Decorate 45(a) Location 0 + Decorate 50(b) Location 1 + Decorate 56(c) Location 2 + Decorate 60(v) Location 3 + Decorate 65(input) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Private 7(fvec4) + 9(gv): 8(ptr) Variable Private + 10: 6(float) Constant 0 + 11: 6(float) Constant 1065353216 + 12: 7(fvec4) ConstantComposite 10 10 11 10 + 13: TypeInt 32 0 + 14: 13(int) Constant 3 + 15: TypeArray 6(float) 14 + 16: TypePointer Private 15 + 17(gfa): 16(ptr) Variable Private + 18: 15 ConstantComposite 10 10 10 + 19: TypeInt 32 1 + 20: TypeBool + 21(outs): TypeStruct 19(int) 6(float) 20(bool) 7(fvec4) + 22: TypePointer Function 21(outs) + 24: 19(int) Constant 3 + 25: 20(bool) ConstantFalse + 26: 7(fvec4) ConstantComposite 10 10 10 10 + 27: 21(outs) ConstantComposite 24 10 25 26 + 30: 19(int) Constant 2 + 31: TypePointer Private 6(float) + 35: TypePointer Function 7(fvec4) + 38: 19(int) Constant 0 + 39: 21(outs) ConstantComposite 38 10 25 26 + 40: TypePointer Function 20(bool) + 44: TypePointer Output 19(int) + 45(a): 44(ptr) Variable Output + 46: TypePointer Function 19(int) + 49: TypePointer Output 6(float) + 50(b): 49(ptr) Variable Output + 51: 19(int) Constant 1 + 52: TypePointer Function 6(float) + 55: TypePointer Output 20(bool) + 56(c): 55(ptr) Variable Output + 59: TypePointer Output 7(fvec4) + 60(v): 59(ptr) Variable Output + 64: TypePointer Input 7(fvec4) + 65(input): 64(ptr) Variable Input +4(PixelShaderFunction): 2 Function None 3 + 5: Label + 23(o2): 22(ptr) Variable Function + 28(o4): 22(ptr) Variable Function + 37(o1): 22(ptr) Variable Function + Store 9(gv) 12 + Store 17(gfa) 18 + Store 23(o2) 27 + 29: 7(fvec4) Load 9(gv) + 32: 31(ptr) AccessChain 17(gfa) 30 + 33: 6(float) Load 32 + 34: 7(fvec4) VectorTimesScalar 29 33 + 36: 35(ptr) AccessChain 28(o4) 24 + Store 36 34 + Store 37(o1) 39 + 41: 40(ptr) AccessChain 37(o1) 30 + 42: 20(bool) Load 41 + 43: 40(ptr) AccessChain 28(o4) 30 + Store 43 42 + 47: 46(ptr) AccessChain 28(o4) 38 + 48: 19(int) Load 47 + Store 45(a) 48 + 53: 52(ptr) AccessChain 28(o4) 51 + 54: 6(float) Load 53 + Store 50(b) 54 + 57: 40(ptr) AccessChain 28(o4) 30 + 58: 20(bool) Load 57 + Store 56(c) 58 + 61: 35(ptr) AccessChain 28(o4) 24 + 62: 7(fvec4) Load 61 + Store 60(v) 62 + Return + FunctionEnd diff --git a/Test/hlsl.partialInit.frag b/Test/hlsl.partialInit.frag new file mode 100755 index 00000000..b5b0a580 --- /dev/null +++ b/Test/hlsl.partialInit.frag @@ -0,0 +1,22 @@ +struct outs { + int a; + float b; + bool c; + float4 v; +}; + +static float4 gv = {0,0,1}; +static float gfa[3] = {0,0}; + +outs PixelShaderFunction(float4 input) : COLOR0 +{ + outs o2 = { 3 }; + outs o4; + o4.v = gv * gfa[2]; + outs o1 = { }; +// outs o3 = (outs)0; +// o4 = (outs)0; + o4.c = o1.c; + + return o4; +} \ No newline at end of file diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 66fec1a3..4d1ea9df 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1664" +#define GLSLANG_REVISION "Overload400-PrecQual.1665" #define GLSLANG_DATE "27-Nov-2016" diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 303c0ad2..71b4b71a 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -858,6 +858,7 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: + case EOpConstructStruct: return true; default: break; @@ -1184,6 +1185,17 @@ TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node, const TSourceL return aggNode; } +// +// Make an aggregate with an empty sequence. +// +TIntermAggregate* TIntermediate::makeAggregate(const TSourceLoc& loc) +{ + TIntermAggregate* aggNode = new TIntermAggregate; + aggNode->setLoc(loc); + + return aggNode; +} + // // For "if" test nodes. There are three children; a condition, // a true path, and a false path. The two paths are in the diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index e8608240..9ad50c74 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -221,6 +221,7 @@ public: TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&); TIntermAggregate* makeAggregate(TIntermNode* node); TIntermAggregate* makeAggregate(TIntermNode* node, const TSourceLoc&); + TIntermAggregate* makeAggregate(const TSourceLoc&); TIntermTyped* setAggregateOperator(TIntermNode*, TOperator, const TType& type, TSourceLoc); bool areAllChildConst(TIntermAggregate* aggrNode); TIntermNode* addSelection(TIntermTyped* cond, TIntermNodePair code, const TSourceLoc&); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 8c611f20..429f445f 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -157,6 +157,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.numericsuffixes.frag", "main"}, {"hlsl.numthreads.comp", "main_aux1"}, {"hlsl.overload.frag", "PixelShaderFunction"}, + {"hlsl.partialInit.frag", "PixelShaderFunction"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, {"hlsl.promote.binary.frag", "main"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index b202dca6..10dfcc83 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -1896,7 +1896,8 @@ bool HlslGrammar::acceptExpression(TIntermTyped*& node) } // initializer -// : LEFT_BRACE initializer_list RIGHT_BRACE +// : LEFT_BRACE RIGHT_BRACE +// | LEFT_BRACE initializer_list RIGHT_BRACE // // initializer_list // : assignment_expression COMMA assignment_expression COMMA ... @@ -1907,8 +1908,15 @@ bool HlslGrammar::acceptInitializer(TIntermTyped*& node) if (! acceptTokenClass(EHTokLeftBrace)) return false; - // initializer_list + // RIGHT_BRACE TSourceLoc loc = token.loc; + if (acceptTokenClass(EHTokRightBrace)) { + // a zero-length initializer list + node = intermediate.makeAggregate(loc); + return true; + } + + // initializer_list node = nullptr; do { // assignment_expression diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 3f73a6fb..0ed259a1 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4594,7 +4594,8 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm // constructor-style subtree, allowing the rest of the code to operate // identically for both kinds of initializers. // - initializer = convertInitializerList(loc, variable->getType(), initializer); + if (initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull) + initializer = convertInitializerList(loc, variable->getType(), initializer); if (! initializer) { // error recovery; don't leave const without constant values if (qualifier == EvqConst) @@ -4679,8 +4680,15 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co // see if we have bottomed out in the tree within the initializer-list part TIntermAggregate* initList = initializer->getAsAggregate(); - if (! initList || initList->getOp() != EOpNull) - return initializer; + if (! initList || initList->getOp() != EOpNull) { + // We don't have a list, but if it's a scalar and the 'type' is a + // composite, we need to lengthen below to make it useful. + // Otherwise, this is an already formed object to initialize with. + if (type.isScalar() || !initializer->getType().isScalar()) + return initializer; + else + initList = intermediate.makeAggregate(initializer); + } // Of the initializer-list set of nodes, need to process bottom up, // so recurse deep, then process on the way up. @@ -4694,7 +4702,8 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co arrayType.newArraySizes(*type.getArraySizes()); // but get a fresh copy of the array information, to edit below // edit array sizes to fill in unsized dimensions - arrayType.changeOuterArraySize((int)initList->getSequence().size()); + if (type.isImplicitlySizedArray()) + arrayType.changeOuterArraySize((int)initList->getSequence().size()); TIntermTyped* firstInit = initList->getSequence()[0]->getAsTyped(); if (arrayType.isArrayOfArrays() && firstInit->getType().isArray() && arrayType.getArraySizes().getNumDims() == firstInit->getType().getArraySizes()->getNumDims() + 1) { @@ -4704,8 +4713,12 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co } } + // lengthen list to be long enough + lengthenList(loc, initList->getSequence(), arrayType.getOuterArraySize()); + + // recursively process each element TType elementType(arrayType, 0); // dereferenced type - for (size_t i = 0; i < initList->getSequence().size(); ++i) { + for (int i = 0; i < arrayType.getOuterArraySize(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, elementType, initList->getSequence()[i]->getAsTyped()); if (initList->getSequence()[i] == nullptr) return nullptr; @@ -4713,6 +4726,9 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co return addConstructor(loc, initList, arrayType); } else if (type.isStruct()) { + // lengthen list to be long enough + lengthenList(loc, initList->getSequence(), type.getStruct()->size()); + if (type.getStruct()->size() != initList->getSequence().size()) { error(loc, "wrong number of structure members", "initializer list", ""); return nullptr; @@ -4728,6 +4744,9 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co // a series of rows and columns. We can just use the list directly as // a constructor; no further processing needed. } else { + // lengthen list to be long enough + lengthenList(loc, initList->getSequence(), type.getMatrixCols()); + if (type.getMatrixCols() != (int)initList->getSequence().size()) { error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str()); return nullptr; @@ -4740,6 +4759,10 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co } } } else if (type.isVector()) { + // lengthen list to be long enough + lengthenList(loc, initList->getSequence(), type.getVectorSize()); + + // error check; we're at bottom, so work is finished below if (type.getVectorSize() != (int)initList->getSequence().size()) { error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str()); return nullptr; @@ -4749,7 +4772,7 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co error(loc, "scalar expected one element:", "initializer list", type.getCompleteString().c_str()); return nullptr; } - } else { + } else { error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str()); return nullptr; } @@ -4761,9 +4784,19 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co emulatedConstructorArguments = initList->getSequence()[0]; else emulatedConstructorArguments = initList; + return addConstructor(loc, emulatedConstructorArguments, type); } +// Lengthen list to be long enough to cover any gap from the current list size +// to 'size'. If the list is longer, do nothing. +// The value to lengthen with is the default for short lists. +void HlslParseContext::lengthenList(const TSourceLoc& loc, TIntermSequence& list, int size) +{ + for (int c = (int)list.size(); c < size; ++c) + list.push_back(intermediate.addConstantUnion(0, loc)); +} + // // Test for the correctness of the parameters passed to various constructor functions // and also convert them to the right data type, if allowed and required. diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 554243b6..ca937678 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -128,6 +128,7 @@ public: const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn); void declareTypedef(const TSourceLoc&, TString& identifier, const TType&, TArraySizes* typeArray = 0); TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0); + void lengthenList(const TSourceLoc&, TIntermSequence& list, int size); 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); From f97f2ce603ae190aafd2d1335e5a417e7bd2d2fe Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 27 Nov 2016 22:51:36 -0700 Subject: [PATCH 107/130] HLSL: Support the constructor idiom "(struct type)0". This highly leverages the previous commit to handle partial initializers. --- Test/baseResults/hlsl.partialInit.frag.out | 460 +++++++++++++-------- Test/hlsl.partialInit.frag | 11 +- glslang/Include/revision.h | 2 +- hlsl/hlslParseHelper.cpp | 22 +- hlsl/hlslParseHelper.h | 1 + 5 files changed, 314 insertions(+), 182 deletions(-) diff --git a/Test/baseResults/hlsl.partialInit.frag.out b/Test/baseResults/hlsl.partialInit.frag.out index bac92378..5bf838a4 100755 --- a/Test/baseResults/hlsl.partialInit.frag.out +++ b/Test/baseResults/hlsl.partialInit.frag.out @@ -17,79 +17,124 @@ gl_FragCoord origin is upper left 0:9 0.000000 0:9 0.000000 0:9 0.000000 -0:12 Function Definition: PixelShaderFunction(vf4; (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:12 Function Parameters: -0:12 'input' (layout(location=0 ) in 4-component vector of float) +0:18 Function Definition: PixelShaderFunction(vf4; (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:18 Function Parameters: +0:18 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:13 Sequence -0:13 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:13 'o2' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:13 Constant: -0:13 3 (const int) -0:13 0.000000 -0:13 false (const bool) -0:13 0.000000 -0:13 0.000000 -0:13 0.000000 -0:13 0.000000 -0:15 move second child to first child (temp 4-component vector of float) -0:15 v: direct index for structure (temp 4-component vector of float) -0:15 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:15 Constant: -0:15 3 (const int) -0:15 vector-scale (temp 4-component vector of float) -0:15 'gv' (global 4-component vector of float) -0:15 direct index (temp float) -0:15 'gfa' (global 3-element array of float) -0:15 Constant: -0:15 2 (const int) -0:16 Sequence -0:16 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:16 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:16 Constant: -0:16 0 (const int) -0:16 0.000000 -0:16 false (const bool) -0:16 0.000000 -0:16 0.000000 -0:16 0.000000 -0:16 0.000000 -0:19 move second child to first child (temp bool) -0:19 c: direct index for structure (temp bool) -0:19 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 Sequence +0:19 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 'o2' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:19 Constant: -0:19 2 (const int) -0:19 c: direct index for structure (temp bool) -0:19 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:19 Constant: -0:19 2 (const int) -0:21 Sequence -0:21 Sequence -0:21 move second child to first child (temp int) +0:19 3 (const int) +0:19 0.000000 +0:19 false (const bool) +0:19 0.000000 +0:19 0.000000 +0:19 0.000000 +0:19 0.000000 +0:21 move second child to first child (temp 4-component vector of float) +0:21 v: direct index for structure (temp 4-component vector of float) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 3 (const int) +0:21 vector-scale (temp 4-component vector of float) +0:21 'gv' (global 4-component vector of float) +0:21 direct index (temp float) +0:21 'gfa' (global 3-element array of float) +0:21 Constant: +0:21 2 (const int) +0:22 Sequence +0:22 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:22 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:22 Constant: +0:22 0 (const int) +0:22 0.000000 +0:22 false (const bool) +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:23 Sequence +0:23 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:23 'o3' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:23 Constant: +0:23 0 (const int) +0:23 0.000000 +0:23 false (const bool) +0:23 0.000000 +0:23 0.000000 +0:23 0.000000 +0:23 0.000000 +0:24 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:24 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:24 Constant: +0:24 0 (const int) +0:24 0.000000 +0:24 false (const bool) +0:24 0.000000 +0:24 0.000000 +0:24 0.000000 +0:24 0.000000 +0:25 move second child to first child (temp bool) +0:25 c: direct index for structure (temp bool) +0:25 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:25 Constant: +0:25 2 (const int) +0:25 c: direct index for structure (temp bool) +0:25 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:25 Constant: +0:25 2 (const int) +0:26 Sequence +0:26 move second child to first child (temp structure{temp 4X3 matrix of float m, temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) +0:26 'nest' (temp structure{temp 4X3 matrix of float m, temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) +0:26 Constant: +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0 (const int) +0:26 0.000000 +0:26 false (const bool) +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 false (const bool) +0:28 Sequence +0:28 Sequence +0:28 move second child to first child (temp int) 0:? 'a' (layout(location=0 ) out int) -0:21 a: direct index for structure (temp int) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 0 (const int) -0:21 move second child to first child (temp float) +0:28 a: direct index for structure (temp int) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 0 (const int) +0:28 move second child to first child (temp float) 0:? 'b' (layout(location=1 ) out float) -0:21 b: direct index for structure (temp float) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 1 (const int) -0:21 move second child to first child (temp bool) +0:28 b: direct index for structure (temp float) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 1 (const int) +0:28 move second child to first child (temp bool) 0:? 'c' (layout(location=2 ) out bool) -0:21 c: direct index for structure (temp bool) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 2 (const int) -0:21 move second child to first child (temp 4-component vector of float) +0:28 c: direct index for structure (temp bool) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 2 (const int) +0:28 move second child to first child (temp 4-component vector of float) 0:? 'v' (layout(location=3 ) out 4-component vector of float) -0:21 v: direct index for structure (temp 4-component vector of float) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 3 (const int) -0:21 Branch: Return +0:28 v: direct index for structure (temp 4-component vector of float) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 3 (const int) +0:28 Branch: Return 0:? Linker Objects 0:? 'a' (layout(location=0 ) out int) 0:? 'b' (layout(location=1 ) out float) @@ -121,79 +166,124 @@ gl_FragCoord origin is upper left 0:9 0.000000 0:9 0.000000 0:9 0.000000 -0:12 Function Definition: PixelShaderFunction(vf4; (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:12 Function Parameters: -0:12 'input' (layout(location=0 ) in 4-component vector of float) +0:18 Function Definition: PixelShaderFunction(vf4; (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:18 Function Parameters: +0:18 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:13 Sequence -0:13 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:13 'o2' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:13 Constant: -0:13 3 (const int) -0:13 0.000000 -0:13 false (const bool) -0:13 0.000000 -0:13 0.000000 -0:13 0.000000 -0:13 0.000000 -0:15 move second child to first child (temp 4-component vector of float) -0:15 v: direct index for structure (temp 4-component vector of float) -0:15 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:15 Constant: -0:15 3 (const int) -0:15 vector-scale (temp 4-component vector of float) -0:15 'gv' (global 4-component vector of float) -0:15 direct index (temp float) -0:15 'gfa' (global 3-element array of float) -0:15 Constant: -0:15 2 (const int) -0:16 Sequence -0:16 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:16 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:16 Constant: -0:16 0 (const int) -0:16 0.000000 -0:16 false (const bool) -0:16 0.000000 -0:16 0.000000 -0:16 0.000000 -0:16 0.000000 -0:19 move second child to first child (temp bool) -0:19 c: direct index for structure (temp bool) -0:19 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 Sequence +0:19 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:19 'o2' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) 0:19 Constant: -0:19 2 (const int) -0:19 c: direct index for structure (temp bool) -0:19 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:19 Constant: -0:19 2 (const int) -0:21 Sequence -0:21 Sequence -0:21 move second child to first child (temp int) +0:19 3 (const int) +0:19 0.000000 +0:19 false (const bool) +0:19 0.000000 +0:19 0.000000 +0:19 0.000000 +0:19 0.000000 +0:21 move second child to first child (temp 4-component vector of float) +0:21 v: direct index for structure (temp 4-component vector of float) +0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:21 Constant: +0:21 3 (const int) +0:21 vector-scale (temp 4-component vector of float) +0:21 'gv' (global 4-component vector of float) +0:21 direct index (temp float) +0:21 'gfa' (global 3-element array of float) +0:21 Constant: +0:21 2 (const int) +0:22 Sequence +0:22 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:22 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:22 Constant: +0:22 0 (const int) +0:22 0.000000 +0:22 false (const bool) +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:23 Sequence +0:23 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:23 'o3' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:23 Constant: +0:23 0 (const int) +0:23 0.000000 +0:23 false (const bool) +0:23 0.000000 +0:23 0.000000 +0:23 0.000000 +0:23 0.000000 +0:24 move second child to first child (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:24 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:24 Constant: +0:24 0 (const int) +0:24 0.000000 +0:24 false (const bool) +0:24 0.000000 +0:24 0.000000 +0:24 0.000000 +0:24 0.000000 +0:25 move second child to first child (temp bool) +0:25 c: direct index for structure (temp bool) +0:25 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:25 Constant: +0:25 2 (const int) +0:25 c: direct index for structure (temp bool) +0:25 'o1' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:25 Constant: +0:25 2 (const int) +0:26 Sequence +0:26 move second child to first child (temp structure{temp 4X3 matrix of float m, temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) +0:26 'nest' (temp structure{temp 4X3 matrix of float m, temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v} os, temp bool b}) +0:26 Constant: +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0 (const int) +0:26 0.000000 +0:26 false (const bool) +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 false (const bool) +0:28 Sequence +0:28 Sequence +0:28 move second child to first child (temp int) 0:? 'a' (layout(location=0 ) out int) -0:21 a: direct index for structure (temp int) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 0 (const int) -0:21 move second child to first child (temp float) +0:28 a: direct index for structure (temp int) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 0 (const int) +0:28 move second child to first child (temp float) 0:? 'b' (layout(location=1 ) out float) -0:21 b: direct index for structure (temp float) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 1 (const int) -0:21 move second child to first child (temp bool) +0:28 b: direct index for structure (temp float) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 1 (const int) +0:28 move second child to first child (temp bool) 0:? 'c' (layout(location=2 ) out bool) -0:21 c: direct index for structure (temp bool) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 2 (const int) -0:21 move second child to first child (temp 4-component vector of float) +0:28 c: direct index for structure (temp bool) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 2 (const int) +0:28 move second child to first child (temp 4-component vector of float) 0:? 'v' (layout(location=3 ) out 4-component vector of float) -0:21 v: direct index for structure (temp 4-component vector of float) -0:21 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) -0:21 Constant: -0:21 3 (const int) -0:21 Branch: Return +0:28 v: direct index for structure (temp 4-component vector of float) +0:28 'o4' (temp structure{temp int a, temp float b, temp bool c, temp 4-component vector of float v}) +0:28 Constant: +0:28 3 (const int) +0:28 Branch: Return 0:? Linker Objects 0:? 'a' (layout(location=0 ) out int) 0:? 'b' (layout(location=1 ) out float) @@ -205,12 +295,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 66 +// Id's are bound by 75 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 45 50 56 60 65 + EntryPoint Fragment 4 "PixelShaderFunction" 54 59 65 69 74 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 9 "gv" @@ -223,16 +313,22 @@ gl_FragCoord origin is upper left Name 23 "o2" Name 28 "o4" Name 37 "o1" - Name 45 "a" - Name 50 "b" - Name 56 "c" - Name 60 "v" - Name 65 "input" - Decorate 45(a) Location 0 - Decorate 50(b) Location 1 - Decorate 56(c) Location 2 - Decorate 60(v) Location 3 - Decorate 65(input) Location 0 + Name 40 "o3" + Name 47 "Nest" + MemberName 47(Nest) 0 "m" + MemberName 47(Nest) 1 "os" + MemberName 47(Nest) 2 "b" + Name 49 "nest" + Name 54 "a" + Name 59 "b" + Name 65 "c" + Name 69 "v" + Name 74 "input" + Decorate 54(a) Location 0 + Decorate 59(b) Location 1 + Decorate 65(c) Location 2 + Decorate 69(v) Location 3 + Decorate 74(input) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -261,25 +357,34 @@ gl_FragCoord origin is upper left 35: TypePointer Function 7(fvec4) 38: 19(int) Constant 0 39: 21(outs) ConstantComposite 38 10 25 26 - 40: TypePointer Function 20(bool) - 44: TypePointer Output 19(int) - 45(a): 44(ptr) Variable Output - 46: TypePointer Function 19(int) - 49: TypePointer Output 6(float) - 50(b): 49(ptr) Variable Output - 51: 19(int) Constant 1 - 52: TypePointer Function 6(float) - 55: TypePointer Output 20(bool) - 56(c): 55(ptr) Variable Output - 59: TypePointer Output 7(fvec4) - 60(v): 59(ptr) Variable Output - 64: TypePointer Input 7(fvec4) - 65(input): 64(ptr) Variable Input + 41: TypePointer Function 20(bool) + 45: TypeVector 6(float) 3 + 46: TypeMatrix 45(fvec3) 4 + 47(Nest): TypeStruct 46 21(outs) 20(bool) + 48: TypePointer Function 47(Nest) + 50: 45(fvec3) ConstantComposite 10 10 10 + 51: 46 ConstantComposite 50 50 50 50 + 52: 47(Nest) ConstantComposite 51 39 25 + 53: TypePointer Output 19(int) + 54(a): 53(ptr) Variable Output + 55: TypePointer Function 19(int) + 58: TypePointer Output 6(float) + 59(b): 58(ptr) Variable Output + 60: 19(int) Constant 1 + 61: TypePointer Function 6(float) + 64: TypePointer Output 20(bool) + 65(c): 64(ptr) Variable Output + 68: TypePointer Output 7(fvec4) + 69(v): 68(ptr) Variable Output + 73: TypePointer Input 7(fvec4) + 74(input): 73(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 23(o2): 22(ptr) Variable Function 28(o4): 22(ptr) Variable Function 37(o1): 22(ptr) Variable Function + 40(o3): 22(ptr) Variable Function + 49(nest): 48(ptr) Variable Function Store 9(gv) 12 Store 17(gfa) 18 Store 23(o2) 27 @@ -290,21 +395,24 @@ gl_FragCoord origin is upper left 36: 35(ptr) AccessChain 28(o4) 24 Store 36 34 Store 37(o1) 39 - 41: 40(ptr) AccessChain 37(o1) 30 - 42: 20(bool) Load 41 - 43: 40(ptr) AccessChain 28(o4) 30 - Store 43 42 - 47: 46(ptr) AccessChain 28(o4) 38 - 48: 19(int) Load 47 - Store 45(a) 48 - 53: 52(ptr) AccessChain 28(o4) 51 - 54: 6(float) Load 53 - Store 50(b) 54 - 57: 40(ptr) AccessChain 28(o4) 30 - 58: 20(bool) Load 57 - Store 56(c) 58 - 61: 35(ptr) AccessChain 28(o4) 24 - 62: 7(fvec4) Load 61 - Store 60(v) 62 + Store 40(o3) 39 + Store 28(o4) 39 + 42: 41(ptr) AccessChain 37(o1) 30 + 43: 20(bool) Load 42 + 44: 41(ptr) AccessChain 28(o4) 30 + Store 44 43 + Store 49(nest) 52 + 56: 55(ptr) AccessChain 28(o4) 38 + 57: 19(int) Load 56 + Store 54(a) 57 + 62: 61(ptr) AccessChain 28(o4) 60 + 63: 6(float) Load 62 + Store 59(b) 63 + 66: 41(ptr) AccessChain 28(o4) 30 + 67: 20(bool) Load 66 + Store 65(c) 67 + 70: 35(ptr) AccessChain 28(o4) 24 + 71: 7(fvec4) Load 70 + Store 69(v) 71 Return FunctionEnd diff --git a/Test/hlsl.partialInit.frag b/Test/hlsl.partialInit.frag index b5b0a580..59e8a529 100755 --- a/Test/hlsl.partialInit.frag +++ b/Test/hlsl.partialInit.frag @@ -8,15 +8,22 @@ struct outs { static float4 gv = {0,0,1}; static float gfa[3] = {0,0}; +struct Nest { + float4x3 m; + outs os; + bool b; +}; + outs PixelShaderFunction(float4 input) : COLOR0 { outs o2 = { 3 }; outs o4; o4.v = gv * gfa[2]; outs o1 = { }; -// outs o3 = (outs)0; -// o4 = (outs)0; + outs o3 = (outs)0; + o4 = (outs)0; o4.c = o1.c; + Nest nest = (Nest)0; return o4; } \ No newline at end of file diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 4d1ea9df..480953e0 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1665" +#define GLSLANG_REVISION "Overload400-PrecQual.1666" #define GLSLANG_DATE "27-Nov-2016" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 0ed259a1..8685dcd8 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -3285,7 +3285,7 @@ bool HlslParseContext::builtInName(const TString& /*identifier*/) // // Returns true if there was an error in construction. // -bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* /*node*/, TFunction& function, +bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, TFunction& function, TOperator op, TType& type) { type.shallowCopy(function.getType()); @@ -3411,6 +3411,9 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* /*no return true; } + if (op == EOpConstructStruct && ! type.isArray() && isZeroConstructor(node)) + return false; + 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", ""); return true; @@ -3422,11 +3425,15 @@ bool HlslParseContext::constructorError(const TSourceLoc& loc, TIntermNode* /*no return true; } - // TIntermTyped* typed = node->getAsTyped(); - return false; } +bool HlslParseContext::isZeroConstructor(const TIntermNode* node) +{ + return node->getAsTyped()->isScalar() && node->getAsConstantUnion() && + node->getAsConstantUnion()->getConstArray()[0].getIConst() == 0; +} + // Verify all the correct semantics for constructing a combined texture/sampler. // Return true if the semantics are incorrect. bool HlslParseContext::constructorTextureSamplerError(const TSourceLoc& loc, const TFunction& function) @@ -4672,6 +4679,11 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm // creating a constructor-style initializer, ensuring we get the // same form. // +// Returns a node representing an expression for the initializer list expressed +// as the correct type. +// +// Returns nullptr if there is an error. +// TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, const TType& type, TIntermTyped* initializer) { // Will operate recursively. Once a subtree is found that is constructor style, @@ -4808,6 +4820,10 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNod if (node == nullptr || node->getAsTyped() == nullptr) return nullptr; + // Handle the idiom "(struct type)0" + if (type.isStruct() && isZeroConstructor(node)) + return convertInitializerList(loc, type, intermediate.makeAggregate(loc)); + TIntermAggregate* aggrNode = node->getAsAggregate(); TOperator op = intermediate.mapTypeToConstructorOp(type); diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index ca937678..02e69814 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -172,6 +172,7 @@ protected: void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool track); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); + bool HlslParseContext::isZeroConstructor(const TIntermNode*); TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); // Return true if this node requires L-value conversion (e.g, to an imageStore). From 8ce6e2ba4907c5d062241947bb0300034ea23985 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 27 Nov 2016 23:00:14 -0700 Subject: [PATCH 108/130] Fix non-Windows build error. --- glslang/Include/revision.h | 2 +- hlsl/hlslParseHelper.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 480953e0..5445009c 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1666" +#define GLSLANG_REVISION "Overload400-PrecQual.1667" #define GLSLANG_DATE "27-Nov-2016" diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 02e69814..246c7c49 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -172,7 +172,7 @@ protected: void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool track); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); - bool HlslParseContext::isZeroConstructor(const TIntermNode*); + bool isZeroConstructor(const TIntermNode*); TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); // Return true if this node requires L-value conversion (e.g, to an imageStore). From f1e0c871275f1ec36925b7f8b939699833ded0f9 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Mon, 31 Oct 2016 15:13:43 -0600 Subject: [PATCH 109/130] allow renaming of shader entry point when creating SPIR-V Use "--source-entrypoint name" on the command line, or the TShader::setSourceEntryPoint(char*) API. When the name given to the above interfaces is detected in the shader source, it will be renamed to the entry point name supplied to the -e option or the TShader::setEntryPoint() method. --- StandAlone/StandAlone.cpp | 15 +++ Test/baseResults/hlsl.entry.rename.frag.out | 119 ++++++++++++++++++++ Test/hlsl.entry.rename.frag | 15 +++ Test/runtests | 7 ++ glslang/MachineIndependent/ShaderLang.cpp | 23 ++-- glslang/Public/ShaderLang.h | 4 + hlsl/hlslGrammar.cpp | 7 +- hlsl/hlslParseHelper.cpp | 13 ++- hlsl/hlslParseHelper.h | 6 + 9 files changed, 199 insertions(+), 10 deletions(-) create mode 100644 Test/baseResults/hlsl.entry.rename.frag.out create mode 100644 Test/hlsl.entry.rename.frag diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 377e7cb3..e6c0ab70 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -160,6 +160,7 @@ int Options = 0; const char* ExecutableName = nullptr; const char* binaryFileName = nullptr; const char* entryPointName = nullptr; +const char* sourceEntryPointName = nullptr; const char* shaderStageName = nullptr; std::array baseSamplerBinding; @@ -300,6 +301,15 @@ void ProcessArguments(int argc, char* argv[]) } else if (lowerword == "no-storage-format" || // synonyms lowerword == "nsf") { Options |= EOptionNoStorageFormat; + } else if (lowerword == "source-entrypoint" || // synonyms + lowerword == "sep") { + sourceEntryPointName = argv[1]; + if (argc > 0) { + argc--; + argv++; + } else + Error("no provided for --source-entrypoint"); + break; } else { usage(); } @@ -547,6 +557,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, 1); if (entryPointName) // HLSL todo: this needs to be tracked per compUnits shader->setEntryPoint(entryPointName); + if (sourceEntryPointName) + shader->setSourceEntryPoint(sourceEntryPointName); shader->setShiftSamplerBinding(baseSamplerBinding[compUnit.stage]); shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]); @@ -963,6 +975,9 @@ void usage() "\n" " --no-storage-format use Unknown image format\n" " --nsf synonym for --no-storage-format\n" + "\n" + " --source-entrypoint name the given shader source function is renamed to be the entry point given in -e\n" + " --sep synonym for --source-entrypoint\n" ); exit(EFailUsage); diff --git a/Test/baseResults/hlsl.entry.rename.frag.out b/Test/baseResults/hlsl.entry.rename.frag.out new file mode 100644 index 00000000..0cfc9254 --- /dev/null +++ b/Test/baseResults/hlsl.entry.rename.frag.out @@ -0,0 +1,119 @@ +../Test/hlsl.entry.rename.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:7 Function Definition: not_the_entry_point( (temp void) +0:7 Function Parameters: +0:11 Function Definition: main_in_spv( (temp structure{temp 4-component vector of float Color}) +0:11 Function Parameters: +0:? Sequence +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 'psout' (temp structure{temp 4-component vector of float Color}) +0:13 Constant: +0:13 0 (const int) +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 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:14 Color: direct index for structure (temp 4-component vector of float) +0:14 'psout' (temp structure{temp 4-component vector of float Color}) +0:14 Constant: +0:14 0 (const int) +0:14 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int also_not_the_entry_point}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:7 Function Definition: not_the_entry_point( (temp void) +0:7 Function Parameters: +0:11 Function Definition: main_in_spv( (temp structure{temp 4-component vector of float Color}) +0:11 Function Parameters: +0:? Sequence +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 'psout' (temp structure{temp 4-component vector of float Color}) +0:13 Constant: +0:13 0 (const int) +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 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:14 Color: direct index for structure (temp 4-component vector of float) +0:14 'psout' (temp structure{temp 4-component vector of float Color}) +0:14 Constant: +0:14 0 (const int) +0:14 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int also_not_the_entry_point}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 27 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main_in_spv" 20 + ExecutionMode 4 OriginUpperLeft + Name 4 "main_in_spv" + Name 6 "not_the_entry_point(" + Name 10 "PS_OUTPUT" + MemberName 10(PS_OUTPUT) 0 "Color" + Name 12 "psout" + Name 20 "Color" + Name 24 "$Global" + MemberName 24($Global) 0 "also_not_the_entry_point" + Name 26 "" + Decorate 20(Color) Location 0 + MemberDecorate 24($Global) 0 Offset 0 + Decorate 24($Global) Block + Decorate 26 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10(PS_OUTPUT): TypeStruct 9(fvec4) + 11: TypePointer Function 10(PS_OUTPUT) + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 15: 8(float) Constant 0 + 16: 9(fvec4) ConstantComposite 15 15 15 15 + 17: TypePointer Function 9(fvec4) + 19: TypePointer Output 9(fvec4) + 20(Color): 19(ptr) Variable Output + 24($Global): TypeStruct 13(int) + 25: TypePointer Uniform 24($Global) + 26: 25(ptr) Variable Uniform + 4(main_in_spv): 2 Function None 3 + 5: Label + 12(psout): 11(ptr) Variable Function + 18: 17(ptr) AccessChain 12(psout) 14 + Store 18 16 + 21: 17(ptr) AccessChain 12(psout) 14 + 22: 9(fvec4) Load 21 + Store 20(Color) 22 + Return + FunctionEnd +6(not_the_entry_point(): 2 Function None 3 + 7: Label + Return + FunctionEnd diff --git a/Test/hlsl.entry.rename.frag b/Test/hlsl.entry.rename.frag new file mode 100644 index 00000000..188dfc58 --- /dev/null +++ b/Test/hlsl.entry.rename.frag @@ -0,0 +1,15 @@ + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +void not_the_entry_point() { } +int also_not_the_entry_point; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + psout.Color = 0; + return psout; +} diff --git a/Test/runtests b/Test/runtests index 06403912..78c630c7 100755 --- a/Test/runtests +++ b/Test/runtests @@ -45,6 +45,13 @@ $EXE -i -C *.vert *.geom *.frag *.tes* *.comp > singleThread.out $EXE -i -C *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out diff singleThread.out multiThread.out || HASERROR=1 + +# +# entry point renaming tests +# +$EXE -i -H -V -D -e main_in_spv --source-entrypoint main ../Test/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 + if [ $HASERROR -eq 0 ] then echo Tests Succeeded. diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index cc21b2ef..ef459879 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -86,7 +86,7 @@ TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate& int version, EProfile profile, EShSource source, EShLanguage language, TInfoSink& infoSink, SpvVersion spvVersion, bool forwardCompatible, EShMessages messages, - bool parsingBuiltIns) + bool parsingBuiltIns, const std::string sourceEntryPointName = "") { switch (source) { case EShSourceGlsl: @@ -96,7 +96,7 @@ TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate& case EShSourceHlsl: return new HlslParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, - language, infoSink, forwardCompatible, messages); + language, infoSink, sourceEntryPointName.c_str(), forwardCompatible, messages); default: infoSink.info.message(EPrefixInternalError, "Unable to determine source language"); return nullptr; @@ -616,7 +616,8 @@ bool ProcessDeferred( TIntermediate& intermediate, // returned tree, etc. ProcessingContext& processingContext, bool requireNonempty, - TShader::Includer& includer + TShader::Includer& includer, + const std::string sourceEntryPointName = "" ) { if (! InitThread()) @@ -733,7 +734,7 @@ bool ProcessDeferred( TParseContextBase* parseContext = CreateParseContext(symbolTable, intermediate, version, profile, source, compiler->getLanguage(), compiler->infoSink, - spvVersion, forwardCompatible, messages, false); + spvVersion, forwardCompatible, messages, false, sourceEntryPointName); TPpContext ppContext(*parseContext, names[numPre]? names[numPre]: "", includer); @@ -1054,14 +1055,15 @@ bool CompileDeferred( bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate,// returned tree, etc. - TShader::Includer& includer) + TShader::Includer& includer, + const std::string sourceEntryPointName = "") { DoFullParse parser; return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, forwardCompatible, messages, intermediate, parser, - true, includer); + true, includer, sourceEntryPointName); } } // end anonymous namespace for local functions @@ -1479,7 +1481,7 @@ public: virtual bool compile(TIntermNode*, int = 0, EProfile = ENoProfile) { return true; } }; -TShader::TShader(EShLanguage s) +TShader::TShader(EShLanguage s) : pool(0), stage(s), lengths(nullptr), stringNames(nullptr), preamble("") { infoSink = new TInfoSink; @@ -1523,6 +1525,11 @@ void TShader::setEntryPoint(const char* entryPoint) intermediate->setEntryPointName(entryPoint); } +void TShader::setSourceEntryPoint(const char* name) +{ + sourceEntryPointName = name; +} + void TShader::setShiftSamplerBinding(unsigned int base) { intermediate->setShiftSamplerBinding(base); } void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShiftTextureBinding(base); } void TShader::setShiftImageBinding(unsigned int base) { intermediate->setShiftImageBinding(base); } @@ -1550,7 +1557,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion return CompileDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, - forwardCompatible, messages, *intermediate, includer); + forwardCompatible, messages, *intermediate, includer, sourceEntryPointName); } bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages) diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 6793cdd3..851e115e 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -304,6 +304,7 @@ public: const char* const* s, const int* l, const char* const* names, int n); void setPreamble(const char* s) { preamble = s; } void setEntryPoint(const char* entryPoint); + void setSourceEntryPoint(const char* sourceEntryPointName); void setShiftSamplerBinding(unsigned int base); void setShiftTextureBinding(unsigned int base); void setShiftImageBinding(unsigned int base); @@ -437,6 +438,9 @@ protected: const char* preamble; int numStrings; + // a function in the source string can be renamed FROM this TO the name given in setEntryPoint. + std::string sourceEntryPointName; + friend class TProgram; private: diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 10dfcc83..61fb4dd9 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -308,8 +308,13 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) // identifier HlslToken idToken; while (acceptIdentifier(idToken)) { + TString* fnName = idToken.string; + + // Potentially rename shader entry point function. No-op most of the time. + parseContext.renameShaderFunction(fnName); + // function_parameters - TFunction& function = *new TFunction(idToken.string, declaredType); + TFunction& function = *new TFunction(fnName, declaredType); if (acceptFunctionParameters(function)) { // post_decls acceptPostDecls(function.getWritableType().getQualifier()); diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 8685dcd8..c3074087 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -51,6 +51,7 @@ namespace glslang { HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, + const TString sourceEntryPointName, bool forwardCompatible, EShMessages messages) : TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), contextPragma(true, false), @@ -58,7 +59,8 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int postEntryPointReturn(false), limits(resources.limits), entryPointOutput(nullptr), - nextInLocation(0), nextOutLocation(0) + nextInLocation(0), nextOutLocation(0), + sourceEntryPointName(sourceEntryPointName) { globalUniformDefaults.clear(); globalUniformDefaults.layoutMatrix = ElmRowMajor; @@ -5539,4 +5541,13 @@ TIntermNode* HlslParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* ex return switchNode; } +// Potentially rename shader entry point function +void HlslParseContext::renameShaderFunction(TString*& name) const +{ + // Replace the entry point name given in the shader with the real entry point name, + // if there is a substitution. + if (name != nullptr && *name == sourceEntryPointName) + name = new TString(intermediate.getEntryPointName().c_str()); +} + } // end namespace glslang diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 246c7c49..f9cb0d32 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -47,6 +47,7 @@ class HlslParseContext : public TParseContextBase { public: HlslParseContext(TSymbolTable&, TIntermediate&, bool parsingBuiltins, int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&, + const TString sourceEntryPointName, bool forwardCompatible = false, EShMessages messages = EShMsgDefault); virtual ~HlslParseContext(); void initializeExtensionBehavior(); @@ -165,6 +166,9 @@ public: bool handleOutputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry); bool handleInputGeometry(const TSourceLoc&, const TLayoutGeometry& geometry); + // Potentially rename shader entry point function + void renameShaderFunction(TString*& name) const; + protected: void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; @@ -251,6 +255,8 @@ protected: TMap> flattenMap; unsigned int nextInLocation; unsigned int nextOutLocation; + + TString sourceEntryPointName; }; } // end namespace glslang From fb06e9552ec81d0b9441b9c90b42d09ccdf28a99 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 3 Dec 2016 13:58:46 -0700 Subject: [PATCH 110/130] Don't print the "Linked stage" message unless the AST is being dumped. --- Test/baseResults/100LimitsConf.vert.out | 4 ---- Test/baseResults/glspv.esversion.vert.out | 4 ---- Test/baseResults/glspv.frag.out | 4 ---- Test/baseResults/glspv.version.frag.out | 4 ---- Test/baseResults/glspv.version.vert.out | 4 ---- Test/baseResults/glspv.vert.out | 4 ---- Test/baseResults/hlsl.reflection.binding.frag.out | 4 ---- Test/baseResults/hlsl.reflection.vert.out | 4 ---- Test/baseResults/reflection.vert.out | 4 ---- Test/baseResults/remap.basic.dcefunc.frag.out | 4 ---- Test/baseResults/remap.basic.everything.frag.out | 4 ---- Test/baseResults/remap.basic.none.frag.out | 4 ---- Test/baseResults/remap.basic.strip.frag.out | 4 ---- Test/baseResults/remap.hlsl.sample.basic.everything.frag.out | 4 ---- Test/baseResults/remap.hlsl.sample.basic.none.frag.out | 4 ---- Test/baseResults/remap.hlsl.sample.basic.strip.frag.out | 4 ---- Test/baseResults/remap.hlsl.templatetypes.everything.frag.out | 4 ---- Test/baseResults/remap.hlsl.templatetypes.none.frag.out | 4 ---- Test/baseResults/remap.if.everything.frag.out | 4 ---- Test/baseResults/remap.if.none.frag.out | 4 ---- Test/baseResults/remap.similar_1a.everything.frag.out | 4 ---- Test/baseResults/remap.similar_1a.none.frag.out | 4 ---- Test/baseResults/remap.similar_1b.everything.frag.out | 4 ---- Test/baseResults/remap.similar_1b.none.frag.out | 4 ---- Test/baseResults/remap.switch.everything.frag.out | 4 ---- Test/baseResults/remap.switch.none.frag.out | 4 ---- Test/baseResults/remap.uniformarray.everything.frag.out | 4 ---- Test/baseResults/remap.uniformarray.none.frag.out | 4 ---- Test/baseResults/spv.100ops.frag.out | 4 ---- Test/baseResults/spv.130.frag.out | 4 ---- Test/baseResults/spv.140.frag.out | 4 ---- Test/baseResults/spv.150.geom.out | 4 ---- Test/baseResults/spv.150.vert.out | 4 ---- Test/baseResults/spv.300BuiltIns.vert.out | 4 ---- Test/baseResults/spv.300layout.frag.out | 4 ---- Test/baseResults/spv.300layout.vert.out | 4 ---- Test/baseResults/spv.300layoutp.vert.out | 4 ---- Test/baseResults/spv.310.bitcast.frag.out | 4 ---- Test/baseResults/spv.310.comp.out | 4 ---- Test/baseResults/spv.330.geom.out | 4 ---- Test/baseResults/spv.400.frag.out | 4 ---- Test/baseResults/spv.400.tesc.out | 4 ---- Test/baseResults/spv.400.tese.out | 4 ---- Test/baseResults/spv.420.geom.out | 4 ---- Test/baseResults/spv.430.frag.out | 4 ---- Test/baseResults/spv.430.vert.out | 4 ---- Test/baseResults/spv.450.tesc.out | 4 ---- Test/baseResults/spv.AofA.frag.out | 4 ---- Test/baseResults/spv.Operations.frag.out | 4 ---- Test/baseResults/spv.accessChain.frag.out | 4 ---- Test/baseResults/spv.aggOps.frag.out | 4 ---- Test/baseResults/spv.always-discard.frag.out | 4 ---- Test/baseResults/spv.always-discard2.frag.out | 4 ---- Test/baseResults/spv.atomic.comp.out | 4 ---- Test/baseResults/spv.bitCast.frag.out | 4 ---- Test/baseResults/spv.bool.vert.out | 4 ---- Test/baseResults/spv.boolInBlock.frag.out | 4 ---- Test/baseResults/spv.branch-return.vert.out | 4 ---- Test/baseResults/spv.buffer.autoassign.frag.out | 4 ---- Test/baseResults/spv.conditionalDiscard.frag.out | 4 ---- Test/baseResults/spv.conversion.frag.out | 4 ---- Test/baseResults/spv.dataOut.frag.out | 4 ---- Test/baseResults/spv.dataOutIndirect.frag.out | 4 ---- Test/baseResults/spv.dataOutIndirect.vert.out | 4 ---- Test/baseResults/spv.deepRvalue.frag.out | 4 ---- Test/baseResults/spv.depthOut.frag.out | 4 ---- Test/baseResults/spv.discard-dce.frag.out | 4 ---- Test/baseResults/spv.do-simple.vert.out | 4 ---- Test/baseResults/spv.do-while-continue-break.vert.out | 4 ---- Test/baseResults/spv.doWhileLoop.frag.out | 4 ---- Test/baseResults/spv.double.comp.out | 4 ---- Test/baseResults/spv.earlyReturnDiscard.frag.out | 4 ---- Test/baseResults/spv.float16.frag.out | 4 ---- Test/baseResults/spv.flowControl.frag.out | 4 ---- Test/baseResults/spv.for-complex-condition.vert.out | 4 ---- Test/baseResults/spv.for-continue-break.vert.out | 4 ---- Test/baseResults/spv.for-nobody.vert.out | 4 ---- Test/baseResults/spv.for-notest.vert.out | 4 ---- Test/baseResults/spv.for-simple.vert.out | 4 ---- Test/baseResults/spv.forLoop.frag.out | 4 ---- Test/baseResults/spv.forwardFun.frag.out | 4 ---- Test/baseResults/spv.functionCall.frag.out | 4 ---- Test/baseResults/spv.functionSemantics.frag.out | 4 ---- Test/baseResults/spv.glFragColor.frag.out | 4 ---- Test/baseResults/spv.glsl.register.autoassign.frag.out | 4 ---- Test/baseResults/spv.glsl.register.noautoassign.frag.out | 4 ---- Test/baseResults/spv.image.frag.out | 4 ---- Test/baseResults/spv.int64.frag.out | 4 ---- Test/baseResults/spv.intOps.vert.out | 4 ---- Test/baseResults/spv.interpOps.frag.out | 4 ---- Test/baseResults/spv.layoutNested.vert.out | 4 ---- Test/baseResults/spv.length.frag.out | 4 ---- Test/baseResults/spv.localAggregates.frag.out | 4 ---- Test/baseResults/spv.loops.frag.out | 4 ---- Test/baseResults/spv.loopsArtificial.frag.out | 4 ---- Test/baseResults/spv.matFun.vert.out | 4 ---- Test/baseResults/spv.matrix.frag.out | 4 ---- Test/baseResults/spv.matrix2.frag.out | 4 ---- Test/baseResults/spv.memoryQualifier.frag.out | 4 ---- Test/baseResults/spv.merge-unreachable.frag.out | 4 ---- Test/baseResults/spv.multiStruct.comp.out | 4 ---- Test/baseResults/spv.multiStructFuncall.frag.out | 4 ---- Test/baseResults/spv.newTexture.frag.out | 4 ---- Test/baseResults/spv.noDeadDecorations.vert.out | 4 ---- Test/baseResults/spv.noWorkgroup.comp.out | 4 ---- Test/baseResults/spv.nonSquare.vert.out | 4 ---- Test/baseResults/spv.offsets.frag.out | 4 ---- Test/baseResults/spv.precise.tesc.out | 4 ---- Test/baseResults/spv.precise.tese.out | 4 ---- Test/baseResults/spv.precision.frag.out | 4 ---- Test/baseResults/spv.prepost.frag.out | 4 ---- Test/baseResults/spv.pushConstant.vert.out | 4 ---- Test/baseResults/spv.qualifiers.vert.out | 4 ---- Test/baseResults/spv.queryL.frag.out | 4 ---- Test/baseResults/spv.register.autoassign-2.frag.out | 4 ---- Test/baseResults/spv.register.autoassign.frag.out | 4 ---- Test/baseResults/spv.register.autoassign.rangetest.frag.out | 3 --- Test/baseResults/spv.register.noautoassign.frag.out | 4 ---- Test/baseResults/spv.rw.autoassign.frag.out | 4 ---- Test/baseResults/spv.separate.frag.out | 4 ---- Test/baseResults/spv.set.vert.out | 4 ---- Test/baseResults/spv.shaderBallot.comp.out | 4 ---- Test/baseResults/spv.shaderDrawParams.vert.out | 4 ---- Test/baseResults/spv.shaderGroupVote.comp.out | 4 ---- Test/baseResults/spv.shiftOps.frag.out | 4 ---- Test/baseResults/spv.shortCircuit.frag.out | 4 ---- Test/baseResults/spv.simpleFunctionCall.frag.out | 4 ---- Test/baseResults/spv.simpleMat.vert.out | 4 ---- Test/baseResults/spv.sparseTexture.frag.out | 4 ---- Test/baseResults/spv.sparseTextureClamp.frag.out | 4 ---- Test/baseResults/spv.specConst.vert.out | 4 ---- Test/baseResults/spv.specConstant.comp.out | 4 ---- Test/baseResults/spv.specConstant.vert.out | 4 ---- Test/baseResults/spv.specConstantComposite.vert.out | 4 ---- Test/baseResults/spv.specConstantOperations.vert.out | 4 ---- Test/baseResults/spv.structAssignment.frag.out | 4 ---- Test/baseResults/spv.structDeref.frag.out | 4 ---- Test/baseResults/spv.structure.frag.out | 4 ---- Test/baseResults/spv.subpass.frag.out | 4 ---- Test/baseResults/spv.switch.frag.out | 4 ---- Test/baseResults/spv.swizzle.frag.out | 4 ---- Test/baseResults/spv.swizzleInversion.frag.out | 4 ---- Test/baseResults/spv.test.frag.out | 4 ---- Test/baseResults/spv.test.vert.out | 4 ---- Test/baseResults/spv.texture.frag.out | 4 ---- Test/baseResults/spv.texture.vert.out | 4 ---- Test/baseResults/spv.types.frag.out | 4 ---- Test/baseResults/spv.uint.frag.out | 4 ---- Test/baseResults/spv.uniformArray.frag.out | 4 ---- Test/baseResults/spv.variableArrayIndex.frag.out | 4 ---- Test/baseResults/spv.varyingArray.frag.out | 4 ---- Test/baseResults/spv.varyingArrayIndirect.frag.out | 4 ---- Test/baseResults/spv.voidFunction.frag.out | 4 ---- Test/baseResults/spv.while-continue-break.vert.out | 4 ---- Test/baseResults/spv.while-simple.vert.out | 4 ---- Test/baseResults/spv.whileLoop.frag.out | 4 ---- Test/baseResults/vulkan.comp.out | 4 ---- Test/baseResults/vulkan.frag.out | 3 --- Test/baseResults/vulkan.vert.out | 4 ---- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/ShaderLang.cpp | 3 ++- 161 files changed, 3 insertions(+), 636 deletions(-) diff --git a/Test/baseResults/100LimitsConf.vert.out b/Test/baseResults/100LimitsConf.vert.out index e27c2cc7..46cb8453 100644 --- a/Test/baseResults/100LimitsConf.vert.out +++ b/Test/baseResults/100LimitsConf.vert.out @@ -22,7 +22,3 @@ ERROR: 0:65: 'limitations' : Non-constant-index-expression ERROR: 20 compilation errors. No code generated. - -Linked vertex stage: - - diff --git a/Test/baseResults/glspv.esversion.vert.out b/Test/baseResults/glspv.esversion.vert.out index ef406a18..8e4b3b88 100755 --- a/Test/baseResults/glspv.esversion.vert.out +++ b/Test/baseResults/glspv.esversion.vert.out @@ -4,8 +4,4 @@ Warning, version 310 is not yet complete; most version-specific features are pre ERROR: 1 compilation errors. No code generated. - -Linked vertex stage: - - SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/glspv.frag.out b/Test/baseResults/glspv.frag.out index 5df46c5b..daa1dc1e 100755 --- a/Test/baseResults/glspv.frag.out +++ b/Test/baseResults/glspv.frag.out @@ -6,8 +6,4 @@ ERROR: 0:14: '' : syntax error ERROR: 4 compilation errors. No code generated. - -Linked fragment stage: - - SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/glspv.version.frag.out b/Test/baseResults/glspv.version.frag.out index 7f44889f..3e8e8c4b 100755 --- a/Test/baseResults/glspv.version.frag.out +++ b/Test/baseResults/glspv.version.frag.out @@ -1,10 +1,6 @@ glspv.version.frag ERROR: #version: compilation for SPIR-V does not support the compatibility profile - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 6 diff --git a/Test/baseResults/glspv.version.vert.out b/Test/baseResults/glspv.version.vert.out index eb003dff..9683b3bd 100755 --- a/Test/baseResults/glspv.version.vert.out +++ b/Test/baseResults/glspv.version.vert.out @@ -3,8 +3,4 @@ ERROR: #version: Desktop shaders for OpenGL SPIR-V require version 330 or higher ERROR: 1 compilation errors. No code generated. - -Linked vertex stage: - - SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/glspv.vert.out b/Test/baseResults/glspv.vert.out index b91ab507..5f6d9bbd 100755 --- a/Test/baseResults/glspv.vert.out +++ b/Test/baseResults/glspv.vert.out @@ -11,8 +11,4 @@ ERROR: 0:20: '' : syntax error ERROR: 8 compilation errors. No code generated. - -Linked vertex stage: - - SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/hlsl.reflection.binding.frag.out b/Test/baseResults/hlsl.reflection.binding.frag.out index e26e0f6c..dd19621c 100644 --- a/Test/baseResults/hlsl.reflection.binding.frag.out +++ b/Test/baseResults/hlsl.reflection.binding.frag.out @@ -1,8 +1,4 @@ hlsl.reflection.binding.frag - -Linked fragment stage: - - Uniform reflection: t1: offset -1, type 8b5d, size 1, index -1, binding 15 s1: offset -1, type 0, size 1, index -1, binding 5 diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out index cbce25ea..8ecfde61 100644 --- a/Test/baseResults/hlsl.reflection.vert.out +++ b/Test/baseResults/hlsl.reflection.vert.out @@ -1,8 +1,4 @@ hlsl.reflection.vert - -Linked vertex stage: - - Uniform reflection: anonMember3: offset 80, type 8b52, size 1, index 0, binding -1 s.a: offset 0, type 1404, size 1, index 1, binding -1 diff --git a/Test/baseResults/reflection.vert.out b/Test/baseResults/reflection.vert.out index 1e4c24fa..ba3e0e69 100644 --- a/Test/baseResults/reflection.vert.out +++ b/Test/baseResults/reflection.vert.out @@ -1,10 +1,6 @@ reflection.vert Warning, version 440 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - Uniform reflection: image_ui2D: offset -1, type 9063, size 1, index -1, binding -1 sampler_2D: offset -1, type 8b5e, size 1, index -1, binding -1 diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out index 0f367c96..99b4d551 100644 --- a/Test/baseResults/remap.basic.dcefunc.frag.out +++ b/Test/baseResults/remap.basic.dcefunc.frag.out @@ -1,10 +1,6 @@ remap.basic.dcefunc.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 19 diff --git a/Test/baseResults/remap.basic.everything.frag.out b/Test/baseResults/remap.basic.everything.frag.out index f6d6ed44..357a8d2b 100644 --- a/Test/baseResults/remap.basic.everything.frag.out +++ b/Test/baseResults/remap.basic.everything.frag.out @@ -1,10 +1,6 @@ remap.basic.everything.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24969 diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out index 3632309a..39e56b2e 100644 --- a/Test/baseResults/remap.basic.none.frag.out +++ b/Test/baseResults/remap.basic.none.frag.out @@ -1,10 +1,6 @@ remap.basic.none.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 20 diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out index d34ce8ff..27c0874b 100644 --- a/Test/baseResults/remap.basic.strip.frag.out +++ b/Test/baseResults/remap.basic.strip.frag.out @@ -1,10 +1,6 @@ remap.basic.strip.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 20 diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out index bd1fa7e4..b49a10ba 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out @@ -1,10 +1,6 @@ remap.hlsl.sample.basic.everything.frag WARNING: 0:4: 'immediate sampler state' : unimplemented - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24916 diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out index b149718f..28c384ce 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out @@ -1,10 +1,6 @@ remap.hlsl.sample.basic.none.frag WARNING: 0:4: 'immediate sampler state' : unimplemented - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 190 diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out index 53407678..10a8938d 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out @@ -1,10 +1,6 @@ remap.hlsl.sample.basic.strip.frag WARNING: 0:4: 'immediate sampler state' : unimplemented - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 190 diff --git a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out index 63eb6cbb..c42a037b 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out @@ -1,8 +1,4 @@ remap.hlsl.templatetypes.everything.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 9012 diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out index df0dcf55..c3fab1a2 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out @@ -1,8 +1,4 @@ remap.hlsl.templatetypes.none.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 149 diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out index 9f98c184..d20564c5 100644 --- a/Test/baseResults/remap.if.everything.frag.out +++ b/Test/baseResults/remap.if.everything.frag.out @@ -1,10 +1,6 @@ remap.if.everything.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22855 diff --git a/Test/baseResults/remap.if.none.frag.out b/Test/baseResults/remap.if.none.frag.out index f3113a36..081d5cdd 100644 --- a/Test/baseResults/remap.if.none.frag.out +++ b/Test/baseResults/remap.if.none.frag.out @@ -1,10 +1,6 @@ remap.if.none.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25 diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out index 09589f57..384b8e86 100644 --- a/Test/baseResults/remap.similar_1a.everything.frag.out +++ b/Test/baseResults/remap.similar_1a.everything.frag.out @@ -1,10 +1,6 @@ remap.similar_1a.everything.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24916 diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out index 17484512..ad1273ae 100644 --- a/Test/baseResults/remap.similar_1a.none.frag.out +++ b/Test/baseResults/remap.similar_1a.none.frag.out @@ -1,10 +1,6 @@ remap.similar_1a.none.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 82 diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out index d05be117..0ce4544c 100644 --- a/Test/baseResults/remap.similar_1b.everything.frag.out +++ b/Test/baseResults/remap.similar_1b.everything.frag.out @@ -1,10 +1,6 @@ remap.similar_1b.everything.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24916 diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out index f9bf0847..b86fd4b6 100644 --- a/Test/baseResults/remap.similar_1b.none.frag.out +++ b/Test/baseResults/remap.similar_1b.none.frag.out @@ -1,10 +1,6 @@ remap.similar_1b.none.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 87 diff --git a/Test/baseResults/remap.switch.everything.frag.out b/Test/baseResults/remap.switch.everything.frag.out index a1d9b0d9..e5a7ef75 100644 --- a/Test/baseResults/remap.switch.everything.frag.out +++ b/Test/baseResults/remap.switch.everything.frag.out @@ -3,10 +3,6 @@ Warning, version 450 is not yet complete; most version-specific features are pre WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 23990 diff --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out index 7fc8f04b..5d373ccf 100644 --- a/Test/baseResults/remap.switch.none.frag.out +++ b/Test/baseResults/remap.switch.none.frag.out @@ -3,10 +3,6 @@ Warning, version 450 is not yet complete; most version-specific features are pre WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 44 diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out index 18defecb..ed906d53 100644 --- a/Test/baseResults/remap.uniformarray.everything.frag.out +++ b/Test/baseResults/remap.uniformarray.everything.frag.out @@ -1,8 +1,4 @@ remap.uniformarray.everything.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25030 diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out index ff2489e3..526b9e49 100644 --- a/Test/baseResults/remap.uniformarray.none.frag.out +++ b/Test/baseResults/remap.uniformarray.none.frag.out @@ -1,8 +1,4 @@ remap.uniformarray.none.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 53 diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out index 9b40c920..efd82012 100755 --- a/Test/baseResults/spv.100ops.frag.out +++ b/Test/baseResults/spv.100ops.frag.out @@ -1,10 +1,6 @@ spv.100ops.frag Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 49 diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out index 8d881f50..19c6db0d 100644 --- a/Test/baseResults/spv.130.frag.out +++ b/Test/baseResults/spv.130.frag.out @@ -1,10 +1,6 @@ spv.130.frag WARNING: 0:31: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 205 diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out index f302478c..f8e75ebd 100755 --- a/Test/baseResults/spv.140.frag.out +++ b/Test/baseResults/spv.140.frag.out @@ -1,8 +1,4 @@ spv.140.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 101 diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out index 8b021ff9..1c98c70e 100755 --- a/Test/baseResults/spv.150.geom.out +++ b/Test/baseResults/spv.150.geom.out @@ -1,8 +1,4 @@ spv.150.geom - -Linked geometry stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 71 diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out index 5ccf1a81..28431397 100755 --- a/Test/baseResults/spv.150.vert.out +++ b/Test/baseResults/spv.150.vert.out @@ -1,8 +1,4 @@ spv.150.vert - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 63 diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out index ab07f4a8..7dc949dc 100755 --- a/Test/baseResults/spv.300BuiltIns.vert.out +++ b/Test/baseResults/spv.300BuiltIns.vert.out @@ -1,10 +1,6 @@ spv.300BuiltIns.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 42 diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out index e340c1b2..7ce08d86 100755 --- a/Test/baseResults/spv.300layout.frag.out +++ b/Test/baseResults/spv.300layout.frag.out @@ -1,10 +1,6 @@ spv.300layout.frag Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 37 diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out index 859794a3..20eb8e7d 100644 --- a/Test/baseResults/spv.300layout.vert.out +++ b/Test/baseResults/spv.300layout.vert.out @@ -1,10 +1,6 @@ spv.300layout.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 163 diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out index ebad9635..5924137c 100755 --- a/Test/baseResults/spv.300layoutp.vert.out +++ b/Test/baseResults/spv.300layoutp.vert.out @@ -1,10 +1,6 @@ spv.300layoutp.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 115 diff --git a/Test/baseResults/spv.310.bitcast.frag.out b/Test/baseResults/spv.310.bitcast.frag.out index 80df3b1a..14e184a4 100755 --- a/Test/baseResults/spv.310.bitcast.frag.out +++ b/Test/baseResults/spv.310.bitcast.frag.out @@ -1,10 +1,6 @@ spv.310.bitcast.frag Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 153 diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out index bd1f3466..095bf39f 100644 --- a/Test/baseResults/spv.310.comp.out +++ b/Test/baseResults/spv.310.comp.out @@ -1,10 +1,6 @@ spv.310.comp Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 67 diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out index 3077769a..3e81dcbc 100644 --- a/Test/baseResults/spv.330.geom.out +++ b/Test/baseResults/spv.330.geom.out @@ -1,8 +1,4 @@ spv.330.geom - -Linked geometry stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 32 diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out index 7858845e..cb2de968 100644 --- a/Test/baseResults/spv.400.frag.out +++ b/Test/baseResults/spv.400.frag.out @@ -1,10 +1,6 @@ spv.400.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 1118 diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out index ae469aad..68b142e5 100644 --- a/Test/baseResults/spv.400.tesc.out +++ b/Test/baseResults/spv.400.tesc.out @@ -1,10 +1,6 @@ spv.400.tesc Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked tessellation control stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 93 diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out index 51534b12..0c62bed6 100755 --- a/Test/baseResults/spv.400.tese.out +++ b/Test/baseResults/spv.400.tese.out @@ -1,10 +1,6 @@ spv.400.tese Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked tessellation evaluation stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 96 diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out index 78e3aaa2..6413d5a4 100644 --- a/Test/baseResults/spv.420.geom.out +++ b/Test/baseResults/spv.420.geom.out @@ -1,10 +1,6 @@ spv.420.geom Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. - -Linked geometry stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 72 diff --git a/Test/baseResults/spv.430.frag.out b/Test/baseResults/spv.430.frag.out index 0058e9c8..abe2a58a 100755 --- a/Test/baseResults/spv.430.frag.out +++ b/Test/baseResults/spv.430.frag.out @@ -1,10 +1,6 @@ spv.430.frag Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24 diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out index c3ad2b92..8ea95d1a 100755 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -1,10 +1,6 @@ spv.430.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 66 diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out index 2900fdfc..a0bf3dd3 100755 --- a/Test/baseResults/spv.450.tesc.out +++ b/Test/baseResults/spv.450.tesc.out @@ -1,10 +1,6 @@ spv.450.tesc Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked tessellation control stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 23 diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out index 0dbf69ce..4eb75630 100644 --- a/Test/baseResults/spv.AofA.frag.out +++ b/Test/baseResults/spv.AofA.frag.out @@ -1,10 +1,6 @@ spv.AofA.frag Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 104 diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out index f8b666d5..1a74192e 100755 --- a/Test/baseResults/spv.Operations.frag.out +++ b/Test/baseResults/spv.Operations.frag.out @@ -1,10 +1,6 @@ spv.Operations.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 509 diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out index 3d391c31..b319cfd1 100755 --- a/Test/baseResults/spv.accessChain.frag.out +++ b/Test/baseResults/spv.accessChain.frag.out @@ -1,10 +1,6 @@ spv.accessChain.frag Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 206 diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out index 5a19d2f4..c3ceb9a6 100644 --- a/Test/baseResults/spv.aggOps.frag.out +++ b/Test/baseResults/spv.aggOps.frag.out @@ -3,10 +3,6 @@ Warning, version 450 is not yet complete; most version-specific features are pre WARNING: 0:4: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 215 diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out index 9102b3bb..652d45c8 100644 --- a/Test/baseResults/spv.always-discard.frag.out +++ b/Test/baseResults/spv.always-discard.frag.out @@ -1,8 +1,4 @@ spv.always-discard.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 84 diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out index 7984c832..0bbb9eee 100755 --- a/Test/baseResults/spv.always-discard2.frag.out +++ b/Test/baseResults/spv.always-discard2.frag.out @@ -1,8 +1,4 @@ spv.always-discard2.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 40 diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out index 01e09323..97c7f6e3 100755 --- a/Test/baseResults/spv.atomic.comp.out +++ b/Test/baseResults/spv.atomic.comp.out @@ -1,10 +1,6 @@ spv.atomic.comp Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 73 diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out index b0dc8104..07dd729e 100644 --- a/Test/baseResults/spv.bitCast.frag.out +++ b/Test/baseResults/spv.bitCast.frag.out @@ -1,10 +1,6 @@ spv.bitCast.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 172 diff --git a/Test/baseResults/spv.bool.vert.out b/Test/baseResults/spv.bool.vert.out index 49a69a0e..f84687a5 100644 --- a/Test/baseResults/spv.bool.vert.out +++ b/Test/baseResults/spv.bool.vert.out @@ -1,10 +1,6 @@ spv.bool.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 49 diff --git a/Test/baseResults/spv.boolInBlock.frag.out b/Test/baseResults/spv.boolInBlock.frag.out index 6e7cf40e..2181f26d 100644 --- a/Test/baseResults/spv.boolInBlock.frag.out +++ b/Test/baseResults/spv.boolInBlock.frag.out @@ -1,10 +1,6 @@ spv.boolInBlock.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 107 diff --git a/Test/baseResults/spv.branch-return.vert.out b/Test/baseResults/spv.branch-return.vert.out index 217a863f..9093135b 100644 --- a/Test/baseResults/spv.branch-return.vert.out +++ b/Test/baseResults/spv.branch-return.vert.out @@ -1,10 +1,6 @@ spv.branch-return.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 38 diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out index 1d94707c..f2c8d6d9 100644 --- a/Test/baseResults/spv.buffer.autoassign.frag.out +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -1,8 +1,4 @@ spv.buffer.autoassign.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 45 diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out index ef7e3b4c..b3cb8e86 100755 --- a/Test/baseResults/spv.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.conditionalDiscard.frag.out @@ -1,10 +1,6 @@ spv.conditionalDiscard.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 36 diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out index bc915698..b38d84e8 100755 --- a/Test/baseResults/spv.conversion.frag.out +++ b/Test/baseResults/spv.conversion.frag.out @@ -1,8 +1,4 @@ spv.conversion.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 455 diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out index 651c96e3..9dbe5d12 100755 --- a/Test/baseResults/spv.dataOut.frag.out +++ b/Test/baseResults/spv.dataOut.frag.out @@ -1,8 +1,4 @@ spv.dataOut.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 20 diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out index d1227a5b..663092fd 100755 --- a/Test/baseResults/spv.dataOutIndirect.frag.out +++ b/Test/baseResults/spv.dataOutIndirect.frag.out @@ -1,8 +1,4 @@ spv.dataOutIndirect.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 26 diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out index 797c6518..1523fab5 100755 --- a/Test/baseResults/spv.dataOutIndirect.vert.out +++ b/Test/baseResults/spv.dataOutIndirect.vert.out @@ -1,10 +1,6 @@ spv.dataOutIndirect.vert WARNING: 0:3: attribute deprecated in version 130; may be removed in future release - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 38 diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out index b4894383..29cf8488 100644 --- a/Test/baseResults/spv.deepRvalue.frag.out +++ b/Test/baseResults/spv.deepRvalue.frag.out @@ -1,8 +1,4 @@ spv.deepRvalue.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 155 diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out index 6242391f..247b2f3d 100755 --- a/Test/baseResults/spv.depthOut.frag.out +++ b/Test/baseResults/spv.depthOut.frag.out @@ -1,10 +1,6 @@ spv.depthOut.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 15 diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out index 7668233b..173ea260 100755 --- a/Test/baseResults/spv.discard-dce.frag.out +++ b/Test/baseResults/spv.discard-dce.frag.out @@ -1,8 +1,4 @@ spv.discard-dce.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 84 diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out index c0862d1e..d6d4c28f 100755 --- a/Test/baseResults/spv.do-simple.vert.out +++ b/Test/baseResults/spv.do-simple.vert.out @@ -1,10 +1,6 @@ spv.do-simple.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 21 diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out index ebfe85d0..d1d0c85c 100644 --- a/Test/baseResults/spv.do-while-continue-break.vert.out +++ b/Test/baseResults/spv.do-while-continue-break.vert.out @@ -1,10 +1,6 @@ spv.do-while-continue-break.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 43 diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out index 1d12af10..9b8cee70 100755 --- a/Test/baseResults/spv.doWhileLoop.frag.out +++ b/Test/baseResults/spv.doWhileLoop.frag.out @@ -1,8 +1,4 @@ spv.doWhileLoop.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 34 diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out index 766f839a..3b1bdc89 100755 --- a/Test/baseResults/spv.double.comp.out +++ b/Test/baseResults/spv.double.comp.out @@ -1,10 +1,6 @@ spv.double.comp Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 60 diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out index 7e6409e6..41441b7f 100755 --- a/Test/baseResults/spv.earlyReturnDiscard.frag.out +++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out @@ -1,8 +1,4 @@ spv.earlyReturnDiscard.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 110 diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out index f1fe6e4e..5499b7e8 100644 --- a/Test/baseResults/spv.float16.frag.out +++ b/Test/baseResults/spv.float16.frag.out @@ -1,10 +1,6 @@ spv.float16.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 534 diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out index 7ca61b7a..274cb746 100755 --- a/Test/baseResults/spv.flowControl.frag.out +++ b/Test/baseResults/spv.flowControl.frag.out @@ -1,8 +1,4 @@ spv.flowControl.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 39 diff --git a/Test/baseResults/spv.for-complex-condition.vert.out b/Test/baseResults/spv.for-complex-condition.vert.out index c5fe4389..bb3bc2a1 100644 --- a/Test/baseResults/spv.for-complex-condition.vert.out +++ b/Test/baseResults/spv.for-complex-condition.vert.out @@ -1,10 +1,6 @@ spv.for-complex-condition.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 35 diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out index 0ea2f143..764001db 100644 --- a/Test/baseResults/spv.for-continue-break.vert.out +++ b/Test/baseResults/spv.for-continue-break.vert.out @@ -1,10 +1,6 @@ spv.for-continue-break.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 45 diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out index a127b709..0ec3584d 100644 --- a/Test/baseResults/spv.for-nobody.vert.out +++ b/Test/baseResults/spv.for-nobody.vert.out @@ -1,10 +1,6 @@ spv.for-nobody.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25 diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out index 67706701..c7346f9d 100644 --- a/Test/baseResults/spv.for-notest.vert.out +++ b/Test/baseResults/spv.for-notest.vert.out @@ -1,10 +1,6 @@ spv.for-notest.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 20 diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out index 52a047ff..996b65a4 100755 --- a/Test/baseResults/spv.for-simple.vert.out +++ b/Test/baseResults/spv.for-simple.vert.out @@ -1,10 +1,6 @@ spv.for-simple.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24 diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out index e606f9cc..628c791f 100755 --- a/Test/baseResults/spv.forLoop.frag.out +++ b/Test/baseResults/spv.forLoop.frag.out @@ -1,8 +1,4 @@ spv.forLoop.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 131 diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out index a804e1df..65759531 100755 --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -1,8 +1,4 @@ spv.forwardFun.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 60 diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out index db40dd51..69a525f7 100755 --- a/Test/baseResults/spv.functionCall.frag.out +++ b/Test/baseResults/spv.functionCall.frag.out @@ -3,10 +3,6 @@ WARNING: 0:3: varying deprecated in version 130; may be removed in future releas WARNING: 0:4: varying deprecated in version 130; may be removed in future release WARNING: 0:5: varying deprecated in version 130; may be removed in future release - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 76 diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out index aa2abd84..005a315b 100755 --- a/Test/baseResults/spv.functionSemantics.frag.out +++ b/Test/baseResults/spv.functionSemantics.frag.out @@ -1,10 +1,6 @@ spv.functionSemantics.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 156 diff --git a/Test/baseResults/spv.glFragColor.frag.out b/Test/baseResults/spv.glFragColor.frag.out index df825a09..febbdf46 100755 --- a/Test/baseResults/spv.glFragColor.frag.out +++ b/Test/baseResults/spv.glFragColor.frag.out @@ -1,8 +1,4 @@ spv.glFragColor.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 12 diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out index a9c1bda9..11818f64 100644 --- a/Test/baseResults/spv.glsl.register.autoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -1,10 +1,6 @@ spv.glsl.register.autoassign.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 142 diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out index 05bf3cf0..327ac04a 100644 --- a/Test/baseResults/spv.glsl.register.noautoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out @@ -1,10 +1,6 @@ spv.glsl.register.noautoassign.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 142 diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out index 2bd26f79..2dd7d4b3 100644 --- a/Test/baseResults/spv.image.frag.out +++ b/Test/baseResults/spv.image.frag.out @@ -1,10 +1,6 @@ spv.image.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 378 diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out index acfee730..cb5433ec 100644 --- a/Test/baseResults/spv.int64.frag.out +++ b/Test/baseResults/spv.int64.frag.out @@ -1,10 +1,6 @@ spv.int64.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 480 diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out index 22451b9f..93d2dfda 100644 --- a/Test/baseResults/spv.intOps.vert.out +++ b/Test/baseResults/spv.intOps.vert.out @@ -1,10 +1,6 @@ spv.intOps.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 268 diff --git a/Test/baseResults/spv.interpOps.frag.out b/Test/baseResults/spv.interpOps.frag.out index a5076421..88d8e53c 100644 --- a/Test/baseResults/spv.interpOps.frag.out +++ b/Test/baseResults/spv.interpOps.frag.out @@ -1,10 +1,6 @@ spv.interpOps.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 100 diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out index fd785ab4..0d0b28bb 100644 --- a/Test/baseResults/spv.layoutNested.vert.out +++ b/Test/baseResults/spv.layoutNested.vert.out @@ -1,10 +1,6 @@ spv.layoutNested.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 66 diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out index 81f98a61..76f6ca63 100755 --- a/Test/baseResults/spv.length.frag.out +++ b/Test/baseResults/spv.length.frag.out @@ -1,8 +1,4 @@ spv.length.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 33 diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index 21c389a0..7ffa8741 100755 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -1,10 +1,6 @@ spv.localAggregates.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 136 diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out index 952f7941..8b1b4807 100755 --- a/Test/baseResults/spv.loops.frag.out +++ b/Test/baseResults/spv.loops.frag.out @@ -1,8 +1,4 @@ spv.loops.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 725 diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out index 5f10bd35..707a78df 100755 --- a/Test/baseResults/spv.loopsArtificial.frag.out +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -1,8 +1,4 @@ spv.loopsArtificial.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 158 diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out index 0aa0a52d..38d9d2cf 100755 --- a/Test/baseResults/spv.matFun.vert.out +++ b/Test/baseResults/spv.matFun.vert.out @@ -1,10 +1,6 @@ spv.matFun.vert Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 103 diff --git a/Test/baseResults/spv.matrix.frag.out b/Test/baseResults/spv.matrix.frag.out index 7b34fca4..700e90eb 100644 --- a/Test/baseResults/spv.matrix.frag.out +++ b/Test/baseResults/spv.matrix.frag.out @@ -1,10 +1,6 @@ spv.matrix.frag Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 261 diff --git a/Test/baseResults/spv.matrix2.frag.out b/Test/baseResults/spv.matrix2.frag.out index e0497b09..78facff3 100644 --- a/Test/baseResults/spv.matrix2.frag.out +++ b/Test/baseResults/spv.matrix2.frag.out @@ -1,8 +1,4 @@ spv.matrix2.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 221 diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out index e2bfb392..a990e475 100644 --- a/Test/baseResults/spv.memoryQualifier.frag.out +++ b/Test/baseResults/spv.memoryQualifier.frag.out @@ -1,10 +1,6 @@ spv.memoryQualifier.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 97 diff --git a/Test/baseResults/spv.merge-unreachable.frag.out b/Test/baseResults/spv.merge-unreachable.frag.out index 6e326187..58bbb062 100644 --- a/Test/baseResults/spv.merge-unreachable.frag.out +++ b/Test/baseResults/spv.merge-unreachable.frag.out @@ -1,10 +1,6 @@ spv.merge-unreachable.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25 diff --git a/Test/baseResults/spv.multiStruct.comp.out b/Test/baseResults/spv.multiStruct.comp.out index 28402ce2..f8c0eead 100755 --- a/Test/baseResults/spv.multiStruct.comp.out +++ b/Test/baseResults/spv.multiStruct.comp.out @@ -1,10 +1,6 @@ spv.multiStruct.comp Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 157 diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out index dcbcfa00..b9b0cb2c 100755 --- a/Test/baseResults/spv.multiStructFuncall.frag.out +++ b/Test/baseResults/spv.multiStructFuncall.frag.out @@ -1,10 +1,6 @@ spv.multiStructFuncall.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 63 diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out index 3206faa3..ea694eea 100755 --- a/Test/baseResults/spv.newTexture.frag.out +++ b/Test/baseResults/spv.newTexture.frag.out @@ -1,10 +1,6 @@ spv.newTexture.frag Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 284 diff --git a/Test/baseResults/spv.noDeadDecorations.vert.out b/Test/baseResults/spv.noDeadDecorations.vert.out index e9b23566..41d2a431 100644 --- a/Test/baseResults/spv.noDeadDecorations.vert.out +++ b/Test/baseResults/spv.noDeadDecorations.vert.out @@ -1,10 +1,6 @@ spv.noDeadDecorations.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 32 diff --git a/Test/baseResults/spv.noWorkgroup.comp.out b/Test/baseResults/spv.noWorkgroup.comp.out index f12e6202..0f88436c 100755 --- a/Test/baseResults/spv.noWorkgroup.comp.out +++ b/Test/baseResults/spv.noWorkgroup.comp.out @@ -1,10 +1,6 @@ spv.noWorkgroup.comp Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 12 diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out index 329a71cb..684d4f16 100755 --- a/Test/baseResults/spv.nonSquare.vert.out +++ b/Test/baseResults/spv.nonSquare.vert.out @@ -1,8 +1,4 @@ spv.nonSquare.vert - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 90 diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out index b0091eaa..ea4be8f4 100755 --- a/Test/baseResults/spv.offsets.frag.out +++ b/Test/baseResults/spv.offsets.frag.out @@ -1,10 +1,6 @@ spv.offsets.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 15 diff --git a/Test/baseResults/spv.precise.tesc.out b/Test/baseResults/spv.precise.tesc.out index 0331a14a..4bae395a 100644 --- a/Test/baseResults/spv.precise.tesc.out +++ b/Test/baseResults/spv.precise.tesc.out @@ -1,10 +1,6 @@ spv.precise.tesc Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked tessellation control stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 72 diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out index 40339812..4f1839c7 100644 --- a/Test/baseResults/spv.precise.tese.out +++ b/Test/baseResults/spv.precise.tese.out @@ -1,10 +1,6 @@ spv.precise.tese Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked tessellation evaluation stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 119 diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out index 33e4fb20..f49b3566 100755 --- a/Test/baseResults/spv.precision.frag.out +++ b/Test/baseResults/spv.precision.frag.out @@ -1,10 +1,6 @@ spv.precision.frag Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 127 diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out index 9581267b..410286ca 100755 --- a/Test/baseResults/spv.prepost.frag.out +++ b/Test/baseResults/spv.prepost.frag.out @@ -1,8 +1,4 @@ spv.prepost.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 94 diff --git a/Test/baseResults/spv.pushConstant.vert.out b/Test/baseResults/spv.pushConstant.vert.out index 6b314e08..bdefd63d 100644 --- a/Test/baseResults/spv.pushConstant.vert.out +++ b/Test/baseResults/spv.pushConstant.vert.out @@ -1,10 +1,6 @@ spv.pushConstant.vert Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 35 diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out index d2baf722..37f474cc 100755 --- a/Test/baseResults/spv.qualifiers.vert.out +++ b/Test/baseResults/spv.qualifiers.vert.out @@ -1,10 +1,6 @@ spv.qualifiers.vert Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 21 diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out index 2236c66a..fbdcbc81 100755 --- a/Test/baseResults/spv.queryL.frag.out +++ b/Test/baseResults/spv.queryL.frag.out @@ -1,10 +1,6 @@ spv.queryL.frag Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 224 diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out index 24ce5719..6d2ad36e 100644 --- a/Test/baseResults/spv.register.autoassign-2.frag.out +++ b/Test/baseResults/spv.register.autoassign-2.frag.out @@ -1,8 +1,4 @@ spv.register.autoassign-2.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 31 diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out index 708f4750..4b4655e3 100644 --- a/Test/baseResults/spv.register.autoassign.frag.out +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -1,8 +1,4 @@ spv.register.autoassign.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 150 diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out index 94933fba..8eb76c9b 100644 --- a/Test/baseResults/spv.register.autoassign.rangetest.frag.out +++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out @@ -1,7 +1,4 @@ spv.register.autoassign.rangetest.frag - -Linked fragment stage: - INTERNAL ERROR: mapped binding out of range: g_tSamp INTERNAL ERROR: mapped binding out of range: g_tScene diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out index ad476eeb..71140dcd 100644 --- a/Test/baseResults/spv.register.noautoassign.frag.out +++ b/Test/baseResults/spv.register.noautoassign.frag.out @@ -1,8 +1,4 @@ spv.register.noautoassign.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 150 diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out index 851ef463..d6b75ba3 100644 --- a/Test/baseResults/spv.rw.autoassign.frag.out +++ b/Test/baseResults/spv.rw.autoassign.frag.out @@ -1,8 +1,4 @@ spv.rw.autoassign.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 37 diff --git a/Test/baseResults/spv.separate.frag.out b/Test/baseResults/spv.separate.frag.out index 2a71a019..c654117f 100644 --- a/Test/baseResults/spv.separate.frag.out +++ b/Test/baseResults/spv.separate.frag.out @@ -1,10 +1,6 @@ spv.separate.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 319 diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out index 72fbaa70..38cb669c 100755 --- a/Test/baseResults/spv.set.vert.out +++ b/Test/baseResults/spv.set.vert.out @@ -1,10 +1,6 @@ spv.set.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22 diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index b837b8bc..4f033128 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -1,10 +1,6 @@ spv.shaderBallot.comp Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 299 diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out index ad538107..41ad78d4 100644 --- a/Test/baseResults/spv.shaderDrawParams.vert.out +++ b/Test/baseResults/spv.shaderDrawParams.vert.out @@ -1,10 +1,6 @@ spv.shaderDrawParams.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 53 diff --git a/Test/baseResults/spv.shaderGroupVote.comp.out b/Test/baseResults/spv.shaderGroupVote.comp.out index e63164d0..f8bfae80 100644 --- a/Test/baseResults/spv.shaderGroupVote.comp.out +++ b/Test/baseResults/spv.shaderGroupVote.comp.out @@ -1,10 +1,6 @@ spv.shaderGroupVote.comp Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 37 diff --git a/Test/baseResults/spv.shiftOps.frag.out b/Test/baseResults/spv.shiftOps.frag.out index 39e40ece..498c2877 100644 --- a/Test/baseResults/spv.shiftOps.frag.out +++ b/Test/baseResults/spv.shiftOps.frag.out @@ -1,10 +1,6 @@ spv.shiftOps.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 38 diff --git a/Test/baseResults/spv.shortCircuit.frag.out b/Test/baseResults/spv.shortCircuit.frag.out index 5b39b1cb..7d5189a2 100644 --- a/Test/baseResults/spv.shortCircuit.frag.out +++ b/Test/baseResults/spv.shortCircuit.frag.out @@ -1,10 +1,6 @@ spv.shortCircuit.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 147 diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out index 458a90db..2e6b671f 100755 --- a/Test/baseResults/spv.simpleFunctionCall.frag.out +++ b/Test/baseResults/spv.simpleFunctionCall.frag.out @@ -1,8 +1,4 @@ spv.simpleFunctionCall.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 19 diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out index 3e0f05e1..2cad6313 100755 --- a/Test/baseResults/spv.simpleMat.vert.out +++ b/Test/baseResults/spv.simpleMat.vert.out @@ -1,10 +1,6 @@ spv.simpleMat.vert WARNING: 0:3: varying deprecated in version 130; may be removed in future release - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 39 diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out index ae48f41d..431ef152 100644 --- a/Test/baseResults/spv.sparseTexture.frag.out +++ b/Test/baseResults/spv.sparseTexture.frag.out @@ -1,10 +1,6 @@ spv.sparseTexture.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 438 diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out index 1922ac12..175dc35c 100644 --- a/Test/baseResults/spv.sparseTextureClamp.frag.out +++ b/Test/baseResults/spv.sparseTextureClamp.frag.out @@ -1,10 +1,6 @@ spv.sparseTextureClamp.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 360 diff --git a/Test/baseResults/spv.specConst.vert.out b/Test/baseResults/spv.specConst.vert.out index db5a417c..5a7de46f 100755 --- a/Test/baseResults/spv.specConst.vert.out +++ b/Test/baseResults/spv.specConst.vert.out @@ -1,10 +1,6 @@ spv.specConst.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 27 diff --git a/Test/baseResults/spv.specConstant.comp.out b/Test/baseResults/spv.specConstant.comp.out index 2f16f04d..481ed68c 100644 --- a/Test/baseResults/spv.specConstant.comp.out +++ b/Test/baseResults/spv.specConstant.comp.out @@ -1,10 +1,6 @@ spv.specConstant.comp Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked compute stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 27 diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index edda4a7b..dc10e238 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -1,10 +1,6 @@ spv.specConstant.vert Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 81 diff --git a/Test/baseResults/spv.specConstantComposite.vert.out b/Test/baseResults/spv.specConstantComposite.vert.out index c4585e40..f8c556ed 100644 --- a/Test/baseResults/spv.specConstantComposite.vert.out +++ b/Test/baseResults/spv.specConstantComposite.vert.out @@ -1,10 +1,6 @@ spv.specConstantComposite.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 43 diff --git a/Test/baseResults/spv.specConstantOperations.vert.out b/Test/baseResults/spv.specConstantOperations.vert.out index ab425583..e2395c82 100644 --- a/Test/baseResults/spv.specConstantOperations.vert.out +++ b/Test/baseResults/spv.specConstantOperations.vert.out @@ -1,10 +1,6 @@ spv.specConstantOperations.vert Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 135 diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out index abff6834..eb796f7c 100755 --- a/Test/baseResults/spv.structAssignment.frag.out +++ b/Test/baseResults/spv.structAssignment.frag.out @@ -2,10 +2,6 @@ spv.structAssignment.frag WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 50 diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out index 78ebdc63..e60159f9 100755 --- a/Test/baseResults/spv.structDeref.frag.out +++ b/Test/baseResults/spv.structDeref.frag.out @@ -1,8 +1,4 @@ spv.structDeref.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 123 diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out index 8d91ed04..f7cb2d2a 100755 --- a/Test/baseResults/spv.structure.frag.out +++ b/Test/baseResults/spv.structure.frag.out @@ -1,8 +1,4 @@ spv.structure.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 60 diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out index 93d680c7..c2421113 100644 --- a/Test/baseResults/spv.subpass.frag.out +++ b/Test/baseResults/spv.subpass.frag.out @@ -1,10 +1,6 @@ spv.subpass.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 67 diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out index 87ea4c87..86acb6c8 100755 --- a/Test/baseResults/spv.switch.frag.out +++ b/Test/baseResults/spv.switch.frag.out @@ -4,10 +4,6 @@ WARNING: 0:121: 'switch' : last case/default label not followed by statements WARNING: 0:134: 'switch' : last case/default label not followed by statements WARNING: 0:139: 'switch' : last case/default label not followed by statements - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 269 diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out index 471fed11..46978f8c 100755 --- a/Test/baseResults/spv.swizzle.frag.out +++ b/Test/baseResults/spv.swizzle.frag.out @@ -1,8 +1,4 @@ spv.swizzle.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 108 diff --git a/Test/baseResults/spv.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out index 6b922065..bf0699a3 100755 --- a/Test/baseResults/spv.swizzleInversion.frag.out +++ b/Test/baseResults/spv.swizzleInversion.frag.out @@ -1,10 +1,6 @@ spv.swizzleInversion.frag Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 46 diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out index 8f1c5260..bf0135ae 100644 --- a/Test/baseResults/spv.test.frag.out +++ b/Test/baseResults/spv.test.frag.out @@ -1,10 +1,6 @@ spv.test.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 55 diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out index 697e468d..623d16ba 100644 --- a/Test/baseResults/spv.test.vert.out +++ b/Test/baseResults/spv.test.vert.out @@ -1,10 +1,6 @@ spv.test.vert WARNING: 0:5: attribute deprecated in version 130; may be removed in future release - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24 diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out index 30f3f281..467f2545 100755 --- a/Test/baseResults/spv.texture.frag.out +++ b/Test/baseResults/spv.texture.frag.out @@ -3,10 +3,6 @@ WARNING: 0:10: varying deprecated in version 130; may be removed in future relea WARNING: 0:11: varying deprecated in version 130; may be removed in future release WARNING: 0:12: varying deprecated in version 130; may be removed in future release - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 305 diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out index cc3d3daa..c3615499 100755 --- a/Test/baseResults/spv.texture.vert.out +++ b/Test/baseResults/spv.texture.vert.out @@ -1,8 +1,4 @@ spv.texture.vert - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 150 diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out index 4295370d..9a2d8e35 100755 --- a/Test/baseResults/spv.types.frag.out +++ b/Test/baseResults/spv.types.frag.out @@ -1,8 +1,4 @@ spv.types.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 260 diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out index 6682e7c2..e9ba0ce2 100755 --- a/Test/baseResults/spv.uint.frag.out +++ b/Test/baseResults/spv.uint.frag.out @@ -1,10 +1,6 @@ spv.uint.frag Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 213 diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out index e66eda6b..447ad4fd 100644 --- a/Test/baseResults/spv.uniformArray.frag.out +++ b/Test/baseResults/spv.uniformArray.frag.out @@ -1,8 +1,4 @@ spv.uniformArray.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 53 diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out index 1f8ee96a..b4d3fe01 100755 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -1,10 +1,6 @@ spv.variableArrayIndex.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 93 diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out index 4a7d2ee6..58833ea1 100755 --- a/Test/baseResults/spv.varyingArray.frag.out +++ b/Test/baseResults/spv.varyingArray.frag.out @@ -1,8 +1,4 @@ spv.varyingArray.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 61 diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out index 410fd3c4..9c018406 100755 --- a/Test/baseResults/spv.varyingArrayIndirect.frag.out +++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out @@ -1,8 +1,4 @@ spv.varyingArrayIndirect.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 70 diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out index 1d4b694b..44348616 100755 --- a/Test/baseResults/spv.voidFunction.frag.out +++ b/Test/baseResults/spv.voidFunction.frag.out @@ -1,10 +1,6 @@ spv.voidFunction.frag Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 43 diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out index 2ec33102..73dc35ce 100644 --- a/Test/baseResults/spv.while-continue-break.vert.out +++ b/Test/baseResults/spv.while-continue-break.vert.out @@ -1,10 +1,6 @@ spv.while-continue-break.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 41 diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out index 0c1c8221..82121dd0 100755 --- a/Test/baseResults/spv.while-simple.vert.out +++ b/Test/baseResults/spv.while-simple.vert.out @@ -1,10 +1,6 @@ spv.while-simple.vert Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - -Linked vertex stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22 diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out index 8de5e956..ce1e195d 100755 --- a/Test/baseResults/spv.whileLoop.frag.out +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -1,8 +1,4 @@ spv.whileLoop.frag - -Linked fragment stage: - - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 35 diff --git a/Test/baseResults/vulkan.comp.out b/Test/baseResults/vulkan.comp.out index 7f1fd18a..5eb4c5b4 100644 --- a/Test/baseResults/vulkan.comp.out +++ b/Test/baseResults/vulkan.comp.out @@ -4,8 +4,4 @@ ERROR: 0:5: 'local_size' : cannot change previously set size ERROR: 1 compilation errors. No code generated. - -Linked compute stage: - - SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out index d4da9190..1df2c3eb 100644 --- a/Test/baseResults/vulkan.frag.out +++ b/Test/baseResults/vulkan.frag.out @@ -43,9 +43,6 @@ ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use ERROR: 38 compilation errors. No code generated. - -Linked fragment stage: - ERROR: Linking fragment stage: Only one push_constant block is allowed per stage SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/vulkan.vert.out b/Test/baseResults/vulkan.vert.out index 5aeaa74c..7111a2dc 100644 --- a/Test/baseResults/vulkan.vert.out +++ b/Test/baseResults/vulkan.vert.out @@ -26,8 +26,4 @@ ERROR: 0:39: 'set' : cannot be used with push_constant ERROR: 23 compilation errors. No code generated. - -Linked vertex stage: - - SPIR-V is not generated for failed compile or link diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 4b9e96e5..e4eb266c 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1670" +#define GLSLANG_REVISION "Overload400-PrecQual.1674" #define GLSLANG_DATE "03-Dec-2016" diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index ef459879..59c9a01c 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1687,7 +1687,8 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) newedIntermediate[stage] = true; } - infoSink->info << "\nLinked " << StageName(stage) << " stage:\n\n"; + if (messages & EShMsgAST) + infoSink->info << "\nLinked " << StageName(stage) << " stage:\n\n"; if (stages[stage].size() > 1) { std::list::const_iterator it; From 205dc4e4ec1ae98a1ae6791030666d9000b7ae5c Mon Sep 17 00:00:00 2001 From: Keith Newton Date: Sun, 4 Dec 2016 17:07:10 -0500 Subject: [PATCH 111/130] Fixed processing #include's when preprocessing HLSL --- glslang/MachineIndependent/parseVersions.h | 1 + glslang/MachineIndependent/preprocessor/Pp.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index 967d352a..acb57507 100755 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -110,6 +110,7 @@ public: void getPreamble(std::string&); bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; } bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; } + bool isReadingHLSL() const { return (messages & EShMsgReadHlsl) == EShMsgReadHlsl; } TInfoSink& infoSink; diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 3c6d0122..824a69a9 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -897,7 +897,9 @@ int TPpContext::readCPPline(TPpToken* ppToken) token = CPPifdef(0, ppToken); break; case PpAtomInclude: - parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_include_directive, "#include"); + if(!parseContext.isReadingHLSL()) { + parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_include_directive, "#include"); + } token = CPPinclude(ppToken); break; case PpAtomLine: From 5cc92c56236d247d720f7a08bfa807b243179a10 Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 5 Dec 2016 11:30:02 -0500 Subject: [PATCH 112/130] runtests should refer to test files in current directory Recently added entry point renaming file referred to test source file hlsl.entry.rename.frag via relative directory. Change it to be consistent with other tests: assume test sources are in the current directory. --- Test/baseResults/hlsl.entry.rename.frag.out | 2 +- Test/runtests | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/baseResults/hlsl.entry.rename.frag.out b/Test/baseResults/hlsl.entry.rename.frag.out index 0cfc9254..b24cb7a2 100644 --- a/Test/baseResults/hlsl.entry.rename.frag.out +++ b/Test/baseResults/hlsl.entry.rename.frag.out @@ -1,4 +1,4 @@ -../Test/hlsl.entry.rename.frag +hlsl.entry.rename.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence diff --git a/Test/runtests b/Test/runtests index 78c630c7..fe16f37b 100755 --- a/Test/runtests +++ b/Test/runtests @@ -49,7 +49,7 @@ diff singleThread.out multiThread.out || HASERROR=1 # # entry point renaming tests # -$EXE -i -H -V -D -e main_in_spv --source-entrypoint main ../Test/hlsl.entry.rename.frag > $TARGETDIR/hlsl.entry.rename.frag.out +$EXE -i -H -V -D -e main_in_spv --source-entrypoint main 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 if [ $HASERROR -eq 0 ] From 9df6aa5361540812ca3a969baaa8312a4ce4795b Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 5 Dec 2016 21:36:48 -0700 Subject: [PATCH 113/130] GLSL: Allow desktop shaders to call functions from outside main(). Fixes issue #239. --- Test/baseResults/110scope.vert.out | 3 +-- glslang/Include/revision.h | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 7 ++++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Test/baseResults/110scope.vert.out b/Test/baseResults/110scope.vert.out index 5f41b86b..dd532503 100644 --- a/Test/baseResults/110scope.vert.out +++ b/Test/baseResults/110scope.vert.out @@ -1,9 +1,8 @@ 110scope.vert ERROR: 0:5: 'a' : redefinition -ERROR: 0:34: 'f' : can't call user function from global scope ERROR: 0:57: 'z' : undeclared identifier ERROR: 0:57: 'z' : redefinition -ERROR: 4 compilation errors. No code generated. +ERROR: 3 compilation errors. No code generated. Shader version: 110 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index e4eb266c..c53a14dc 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1674" -#define GLSLANG_DATE "03-Dec-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1676" +#define GLSLANG_DATE "05-Dec-2016" diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 831e3ac0..ce7fa4be 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1109,9 +1109,10 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // if builtIn == true, it's definitely a built-in function with EOpNull if (! builtIn) { call->setUserDefined(); - if (symbolTable.atGlobalLevel()) - error(loc, "can't call user function from global scope", fnCandidate->getName().c_str(), ""); - else + if (symbolTable.atGlobalLevel()) { + requireProfile(loc, ~EEsProfile, "calling user function from global scope"); + intermediate.addToCallGraph(infoSink, "main(", fnCandidate->getMangledName()); + } else intermediate.addToCallGraph(infoSink, currentCaller, fnCandidate->getMangledName()); } From 8dcf20298f13785afa7eba32bb0ca32497302dc6 Mon Sep 17 00:00:00 2001 From: Frank Henigman Date: Tue, 6 Dec 2016 16:35:12 -0500 Subject: [PATCH 114/130] GLSL: Always define TShader::~Includer(). Rather than update the existing ifdef to cover all necessary cases, get rid of it and always define TShader::~Includer(). --- glslang/Public/ShaderLang.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 851e115e..323a4d75 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -375,9 +375,7 @@ public: // Signals that the parser will no longer use the contents of the // specified IncludeResult. virtual void releaseInclude(IncludeResult* result) = 0; -#ifdef __ANDROID__ - virtual ~Includer() {} // Pacify -Werror=non-virtual-dtor -#endif + virtual ~Includer() {} }; // Returns an error message for any #include directive. From 05f75142d638a56b67dec6d4740a960089ce5973 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Tue, 6 Dec 2016 15:50:11 -0700 Subject: [PATCH 115/130] HLSL: opcode specific promotion rules for interlocked ops PR #577 addresses most but not all of the intrinsic promotion problems. This PR resolves all known cases in the remainder. Interlocked ops need special promotion rules because at the time of function selection, the first argument has not been converted to a buffer object. It's just an int or uint, but you don't want to convert THAT argument, because that implies converting the buffer object itself. Rather, you can convert other arguments, but want to stay in the same "family" of functions. E.g, if the first interlocked arg is a uint, use only the uint family, never the int family, you can convert the other args as you please. This PR allows making such opcode and arg specific choices by passing the op and arg to the convertible lambda. The code in the new test "hlsl.promote.atomic.frag" would not compile without this change, but it must compile. Also, it provides better handling of downconversions (to "worse" types), which are permitted in HLSL. The existing method of selecting upconversions is unchanged, but if that doesn't find any valid ones, then it will allow downconversions. In effect this always uses an upconversion if there is one. --- Test/baseResults/hlsl.promote.atomic.frag.out | 109 ++++++++++++++++++ Test/hlsl.promote.atomic.frag | 17 +++ .../MachineIndependent/ParseContextBase.cpp | 6 +- glslang/MachineIndependent/ParseHelper.cpp | 2 +- glslang/MachineIndependent/ParseHelper.h | 2 +- gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 40 ++++++- 7 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 Test/baseResults/hlsl.promote.atomic.frag.out create mode 100644 Test/hlsl.promote.atomic.frag diff --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out new file mode 100644 index 00000000..7fa0cad8 --- /dev/null +++ b/Test/baseResults/hlsl.promote.atomic.frag.out @@ -0,0 +1,109 @@ +hlsl.promote.atomic.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: main( (temp 4-component vector of float) +0:5 Function Parameters: +0:? Sequence +0:13 move second child to first child (temp int) +0:13 'Orig' (temp int) +0:13 Convert uint to int (temp int) +0:13 imageAtomicAdd (temp uint) +0:13 's_uintbuff' (layout(r32ui ) uniform uimageBuffer) +0:13 'Loc' (temp int) +0:13 Convert int to uint (temp uint) +0:13 'Inc' (temp int) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:15 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 's_uintbuff' (layout(r32ui ) uniform uimageBuffer) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: main( (temp 4-component vector of float) +0:5 Function Parameters: +0:? Sequence +0:13 move second child to first child (temp int) +0:13 'Orig' (temp int) +0:13 Convert uint to int (temp int) +0:13 imageAtomicAdd (temp uint) +0:13 's_uintbuff' (layout(r32ui ) uniform uimageBuffer) +0:13 'Loc' (temp int) +0:13 Convert int to uint (temp uint) +0:13 'Inc' (temp int) +0:15 Sequence +0:15 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:15 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 's_uintbuff' (layout(r32ui ) uniform uimageBuffer) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 31 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 27 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "Orig" + Name 12 "s_uintbuff" + Name 13 "Loc" + Name 15 "Inc" + Name 27 "@entryPointOutput" + Decorate 12(s_uintbuff) DescriptorSet 0 + Decorate 27(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: TypeInt 32 0 + 10: TypeImage 9(int) Buffer nonsampled format:R32ui + 11: TypePointer UniformConstant 10 + 12(s_uintbuff): 11(ptr) Variable UniformConstant + 18: 9(int) Constant 0 + 19: TypePointer Image 9(int) + 21: 9(int) Constant 1 + 24: TypeFloat 32 + 25: TypeVector 24(float) 4 + 26: TypePointer Output 25(fvec4) +27(@entryPointOutput): 26(ptr) Variable Output + 28: 24(float) Constant 0 + 29: 25(fvec4) ConstantComposite 28 28 28 28 + 4(main): 2 Function None 3 + 5: Label + 8(Orig): 7(ptr) Variable Function + 13(Loc): 7(ptr) Variable Function + 15(Inc): 7(ptr) Variable Function + 14: 6(int) Load 13(Loc) + 16: 6(int) Load 15(Inc) + 17: 9(int) Bitcast 16 + 20: 19(ptr) ImageTexelPointer 12(s_uintbuff) 14 18 + 22: 9(int) AtomicIAdd 20 21 18 17 + 23: 6(int) Bitcast 22 + Store 8(Orig) 23 + Store 27(@entryPointOutput) 29 + Return + FunctionEnd diff --git a/Test/hlsl.promote.atomic.frag b/Test/hlsl.promote.atomic.frag new file mode 100644 index 00000000..2b46225b --- /dev/null +++ b/Test/hlsl.promote.atomic.frag @@ -0,0 +1,17 @@ + +RWBuffer s_uintbuff; // UINT RWBuffer ... + +float4 main() : SV_Target +{ + int Loc; // ... with INT variables + int Inc; + int Orig; + + // This must select the uint flavor of SPIR-V atomic op, and promote + // the other arguments as required. The output value from the + // imageAtomicAdd AST will be converted to an int for 'Orig'. + InterlockedAdd(s_uintbuff[Loc], Inc, Orig); + + return float4(0,0,0,0); +} + diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index dc8c61db..d084af8a 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -304,7 +304,7 @@ TVariable* TParseContextBase::getEditableVariable(const char* name) const TFunction* TParseContextBase::selectFunction( const TVector candidateList, const TFunction& call, - std::function convertible, + std::function convertible, std::function better, /* output */ bool& tie) { @@ -356,13 +356,13 @@ const TFunction* TParseContextBase::selectFunction( bool viable = true; for (int param = 0; param < candidate.getParamCount(); ++param) { if (candidate[param].type->getQualifier().isParamInput()) { - if (! convertible(*call[param].type, *candidate[param].type)) { + if (! convertible(*call[param].type, *candidate[param].type, candidate.getBuiltInOp(), param)) { viable = false; break; } } if (candidate[param].type->getQualifier().isParamOutput()) { - if (! convertible(*candidate[param].type, *call[param].type)) { + if (! convertible(*candidate[param].type, *call[param].type, candidate.getBuiltInOp(), param)) { viable = false; break; } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index ce7fa4be..ed043e0a 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4875,7 +4875,7 @@ const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFu symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); // can 'from' convert to 'to'? - const auto convertible = [this](const TType& from, const TType& to) -> bool { + const auto convertible = [this](const TType& from, const TType& to, TOperator, int) -> bool { if (from == to) return true; if (from.isArray() || to.isArray() || ! from.sameElementShape(to)) diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 165601d2..6234db60 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -167,7 +167,7 @@ protected: // see implementation for detail const TFunction* selectFunction(const TVector, const TFunction&, - std::function, + std::function, std::function, /* output */ bool& tie); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 1e7b65bf..6e778e9c 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -163,6 +163,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.partialInit.frag", "PixelShaderFunction"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, + {"hlsl.promote.atomic.frag", "main"}, {"hlsl.promote.binary.frag", "main"}, {"hlsl.promote.vec1.frag", "main"}, {"hlsl.promotions.frag", "main"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 2d99c094..522b16d2 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4394,8 +4394,10 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu return candidateList[0]; } + bool allowOnlyUpConversions = true; + // can 'from' convert to 'to'? - const auto convertible = [this](const TType& from, const TType& to) -> bool { + const auto convertible = [&](const TType& from, const TType& to, TOperator op, int arg) -> bool { if (from == to) return true; @@ -4404,9 +4406,33 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu from.isStruct() || to.isStruct()) return false; + switch (op) { + case EOpInterlockedAdd: + case EOpInterlockedAnd: + case EOpInterlockedCompareExchange: + case EOpInterlockedCompareStore: + case EOpInterlockedExchange: + case EOpInterlockedMax: + case EOpInterlockedMin: + case EOpInterlockedOr: + case EOpInterlockedXor: + // We do not promote the texture or image type for these ocodes. Normally that would not + // be an issue because it's a buffer, but we haven't decomposed the opcode yet, and at this + // stage it's merely e.g, a basic integer type. + // + // Instead, we want to promote other arguments, but stay within the same family. In other + // words, InterlockedAdd(RWBuffer, ...) will always use the int flavor, never the uint flavor, + // but it is allowed to promote its other arguments. + if (arg == 0) + return false; + default: + break; + } + // basic types have to be convertible - if (! intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType(), EOpFunctionCall)) - return false; + if (allowOnlyUpConversions) + if (! intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType(), EOpFunctionCall)) + return false; // shapes have to be convertible if ((from.isScalarOrVec1() && to.isScalarOrVec1()) || @@ -4472,6 +4498,14 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu // send to the generic selector const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie); + if (bestMatch == nullptr) { + // If there is nothing selected by allowing only up-conversions (to a larger linearize() value), + // we instead try down-conversions, which are valid in HLSL, but not preferred if there are any + // upconversions possible. + allowOnlyUpConversions = false; + bestMatch = selectFunction(candidateList, call, convertible, better, tie); + } + if (bestMatch == nullptr) { error(loc, "no matching overloaded function found", call.getName().c_str(), ""); return nullptr; From a2b01a0da83ffe92b27df67b3148f2fe60d62b85 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Mon, 28 Nov 2016 17:09:54 -0700 Subject: [PATCH 116/130] HLSL: Recursive composite flattening This PR implements recursive type flattening. For example, an array of structs of other structs can be flattened to individual member variables at the shader interface. This is sufficient for many purposes, e.g, uniforms containing opaque types, but is not sufficient for geometry shader arrayed inputs. That will be handled separately with structure splitting, which is not implemented by this PR. In the meantime, that case is detected and triggers an error. The recursive flattening extends the following three aspects of single-level flattening: - Flattening of structures to individual members with names such as "foo[0].samp[1]"; - Turning constant references to the nested composite type into a reference to a particular flattened member. - Shadow copies between arrays of flattened members and the nested composite type. Previous single-level flattening only flattened at the shader interface, and that is unchanged by this PR. Internally, shadow copies are, such as if the type is passed to a function. Also, the reasons for flattening are unchanged. Uniforms containing opaque types, and interface struct types are flattened. (The latter will change with structure splitting). One existing test changes: hlsl.structin.vert, which did in fact contain a nested composite type to be flattened. Two new tests are added: hlsl.structarray.flatten.frag, and hlsl.structarray.flatten.geom (currently issues an error until type splitting is online). The process of arriving at the individual member from chained postfix expressions is more complex than it was with one level. See large-ish comment above HlslParseContext::flatten() for details. --- .../hlsl.structarray.flatten.frag.out | 197 +++++++++++ .../hlsl.structarray.flatten.geom.out | 100 ++++++ Test/baseResults/hlsl.structin.vert.out | 198 ++++++----- Test/hlsl.structarray.flatten.frag | 28 ++ Test/hlsl.structarray.flatten.geom | 17 + Test/hlsl.structin.vert | 2 +- gtests/Hlsl.FromFile.cpp | 2 + hlsl/hlslGrammar.cpp | 18 +- hlsl/hlslParseHelper.cpp | 332 ++++++++++++------ hlsl/hlslParseHelper.h | 34 +- 10 files changed, 724 insertions(+), 204 deletions(-) create mode 100644 Test/baseResults/hlsl.structarray.flatten.frag.out create mode 100644 Test/baseResults/hlsl.structarray.flatten.geom.out create mode 100644 Test/hlsl.structarray.flatten.frag create mode 100644 Test/hlsl.structarray.flatten.geom diff --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out new file mode 100644 index 00000000..6b22d663 --- /dev/null +++ b/Test/baseResults/hlsl.structarray.flatten.frag.out @@ -0,0 +1,197 @@ +hlsl.structarray.flatten.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:23 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) +0:23 Function Parameters: +0:23 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:24 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:26 add (temp 4-component vector of float) +0:25 add (temp 4-component vector of float) +0:25 texture (temp 4-component vector of float) +0:25 Construct combined texture-sampler (temp sampler1D) +0:? 'tex' (uniform texture1D) +0:? 'samp' (uniform sampler) +0:25 Constant: +0:25 0.500000 +0:26 texture (temp 4-component vector of float) +0:26 Construct combined texture-sampler (temp sampler1D) +0:? 'g_texdata_array[1].tex' (uniform texture1D) +0:? 'g_texdata_array[1].samp' (uniform sampler) +0:26 Constant: +0:26 0.400000 +0:27 texture (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1D) +0:? 'g_texdata_array2[1].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[1].samp[0]' (uniform sampler) +0:27 Constant: +0:27 0.300000 +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'g_samp' (uniform sampler) +0:? 'g_tex' (uniform texture1D) +0:? 'g_texdata_array2[0].samp[0]' (uniform sampler) +0:? 'g_texdata_array2[0].samp[1]' (uniform sampler) +0:? 'g_texdata_array2[0].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[0].tex[1]' (uniform texture1D) +0:? 'g_texdata_array2[1].samp[0]' (uniform sampler) +0:? 'g_texdata_array2[1].samp[1]' (uniform sampler) +0:? 'g_texdata_array2[1].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[1].tex[1]' (uniform texture1D) +0:? 'g_texdata_array2[2].samp[0]' (uniform sampler) +0:? 'g_texdata_array2[2].samp[1]' (uniform sampler) +0:? 'g_texdata_array2[2].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[2].tex[1]' (uniform texture1D) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:23 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) +0:23 Function Parameters: +0:23 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:24 move second child to first child (temp 4-component vector of float) +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:26 add (temp 4-component vector of float) +0:25 add (temp 4-component vector of float) +0:25 texture (temp 4-component vector of float) +0:25 Construct combined texture-sampler (temp sampler1D) +0:? 'tex' (uniform texture1D) +0:? 'samp' (uniform sampler) +0:25 Constant: +0:25 0.500000 +0:26 texture (temp 4-component vector of float) +0:26 Construct combined texture-sampler (temp sampler1D) +0:? 'g_texdata_array[1].tex' (uniform texture1D) +0:? 'g_texdata_array[1].samp' (uniform sampler) +0:26 Constant: +0:26 0.400000 +0:27 texture (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1D) +0:? 'g_texdata_array2[1].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[1].samp[0]' (uniform sampler) +0:27 Constant: +0:27 0.300000 +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'g_samp' (uniform sampler) +0:? 'g_tex' (uniform texture1D) +0:? 'g_texdata_array2[0].samp[0]' (uniform sampler) +0:? 'g_texdata_array2[0].samp[1]' (uniform sampler) +0:? 'g_texdata_array2[0].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[0].tex[1]' (uniform texture1D) +0:? 'g_texdata_array2[1].samp[0]' (uniform sampler) +0:? 'g_texdata_array2[1].samp[1]' (uniform sampler) +0:? 'g_texdata_array2[1].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[1].tex[1]' (uniform texture1D) +0:? 'g_texdata_array2[2].samp[0]' (uniform sampler) +0:? 'g_texdata_array2[2].samp[1]' (uniform sampler) +0:? 'g_texdata_array2[2].tex[0]' (uniform texture1D) +0:? 'g_texdata_array2[2].tex[1]' (uniform texture1D) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 50 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "color" + Name 12 "tex" + Name 16 "samp" + Name 22 "g_texdata_array[1].tex" + Name 24 "g_texdata_array[1].samp" + Name 30 "g_texdata_array2[1].tex[0]" + Name 32 "g_texdata_array2[1].samp[0]" + Name 38 "g_samp" + Name 39 "g_tex" + Name 40 "g_texdata_array2[0].samp[0]" + Name 41 "g_texdata_array2[0].samp[1]" + Name 42 "g_texdata_array2[0].tex[0]" + Name 43 "g_texdata_array2[0].tex[1]" + Name 44 "g_texdata_array2[1].samp[1]" + Name 45 "g_texdata_array2[1].tex[1]" + Name 46 "g_texdata_array2[2].samp[0]" + Name 47 "g_texdata_array2[2].samp[1]" + Name 48 "g_texdata_array2[2].tex[0]" + Name 49 "g_texdata_array2[2].tex[1]" + Decorate 9(color) Location 0 + Decorate 12(tex) DescriptorSet 0 + Decorate 16(samp) DescriptorSet 0 + Decorate 22(g_texdata_array[1].tex) DescriptorSet 0 + Decorate 24(g_texdata_array[1].samp) DescriptorSet 0 + Decorate 30(g_texdata_array2[1].tex[0]) DescriptorSet 0 + Decorate 32(g_texdata_array2[1].samp[0]) DescriptorSet 0 + Decorate 38(g_samp) DescriptorSet 0 + Decorate 39(g_tex) DescriptorSet 0 + Decorate 40(g_texdata_array2[0].samp[0]) DescriptorSet 0 + Decorate 41(g_texdata_array2[0].samp[1]) DescriptorSet 0 + Decorate 42(g_texdata_array2[0].tex[0]) DescriptorSet 0 + Decorate 43(g_texdata_array2[0].tex[1]) DescriptorSet 0 + Decorate 44(g_texdata_array2[1].samp[1]) DescriptorSet 0 + Decorate 45(g_texdata_array2[1].tex[1]) DescriptorSet 0 + Decorate 46(g_texdata_array2[2].samp[0]) DescriptorSet 0 + Decorate 47(g_texdata_array2[2].samp[1]) DescriptorSet 0 + Decorate 48(g_texdata_array2[2].tex[0]) DescriptorSet 0 + Decorate 49(g_texdata_array2[2].tex[1]) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(color): 8(ptr) Variable Output + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(tex): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(samp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1056964608 +22(g_texdata_array[1].tex): 11(ptr) Variable UniformConstant +24(g_texdata_array[1].samp): 15(ptr) Variable UniformConstant + 27: 6(float) Constant 1053609165 +30(g_texdata_array2[1].tex[0]): 11(ptr) Variable UniformConstant +32(g_texdata_array2[1].samp[0]): 15(ptr) Variable UniformConstant + 35: 6(float) Constant 1050253722 + 38(g_samp): 15(ptr) Variable UniformConstant + 39(g_tex): 11(ptr) Variable UniformConstant +40(g_texdata_array2[0].samp[0]): 15(ptr) Variable UniformConstant +41(g_texdata_array2[0].samp[1]): 15(ptr) Variable UniformConstant +42(g_texdata_array2[0].tex[0]): 11(ptr) Variable UniformConstant +43(g_texdata_array2[0].tex[1]): 11(ptr) Variable UniformConstant +44(g_texdata_array2[1].samp[1]): 15(ptr) Variable UniformConstant +45(g_texdata_array2[1].tex[1]): 11(ptr) Variable UniformConstant +46(g_texdata_array2[2].samp[0]): 15(ptr) Variable UniformConstant +47(g_texdata_array2[2].samp[1]): 15(ptr) Variable UniformConstant +48(g_texdata_array2[2].tex[0]): 11(ptr) Variable UniformConstant +49(g_texdata_array2[2].tex[1]): 11(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 13: 10 Load 12(tex) + 17: 14 Load 16(samp) + 19: 18 SampledImage 13 17 + 21: 7(fvec4) ImageSampleImplicitLod 19 20 + 23: 10 Load 22(g_texdata_array[1].tex) + 25: 14 Load 24(g_texdata_array[1].samp) + 26: 18 SampledImage 23 25 + 28: 7(fvec4) ImageSampleImplicitLod 26 27 + 29: 7(fvec4) FAdd 21 28 + 31: 10 Load 30(g_texdata_array2[1].tex[0]) + 33: 14 Load 32(g_texdata_array2[1].samp[0]) + 34: 18 SampledImage 31 33 + 36: 7(fvec4) ImageSampleImplicitLod 34 35 + 37: 7(fvec4) FAdd 29 36 + Store 9(color) 37 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.structarray.flatten.geom.out b/Test/baseResults/hlsl.structarray.flatten.geom.out new file mode 100644 index 00000000..0994af84 --- /dev/null +++ b/Test/baseResults/hlsl.structarray.flatten.geom.out @@ -0,0 +1,100 @@ +hlsl.structarray.flatten.geom +ERROR: 0:10: 'vin' : recursive type not yet supported in GS input +ERROR: 1 compilation errors. No code generated. + + +Shader version: 450 +invocations = -1 +max_vertices = 4 +input primitive = lines +output primitive = triangle_strip +ERROR: node is still EOpNull! +0:10 Function Definition: main(struct-VertexData-vf4-vf4-vf21[2];struct-VertexData-vf4-vf4-vf21; (temp void) +0:10 Function Parameters: +0:10 'vin' (in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:10 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:? Sequence +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 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:13 Constant: +0:13 1 (const int) +0:? 'vin[0].color' (layout(location=1 ) in 4-component vector of float) +0:14 move second child to first child (temp 2-component vector of float) +0:14 uv: direct index for structure (temp 2-component vector of float) +0:14 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:14 Constant: +0:14 2 (const int) +0:? 'vin[0].uv' (layout(location=2 ) in 2-component vector of float) +0:15 move second child to first child (temp 4-component vector of float) +0:15 position: direct index for structure (temp 4-component vector of float) +0:15 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:15 Constant: +0:15 0 (const int) +0:? 'vin[0].position' (layout(location=0 ) in 4-component vector of float) +0:16 Sequence +0:16 move second child to first child (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 EmitVertex (temp void) +0:? Linker Objects +0:? 'vin[0].position' (layout(location=0 ) in 4-component vector of float) +0:? 'vin[0].color' (layout(location=1 ) in 4-component vector of float) +0:? 'vin[0].uv' (layout(location=2 ) in 2-component vector of float) +0:? 'vin[1].position' (layout(location=3 ) in 4-component vector of float) +0:? 'vin[1].color' (layout(location=4 ) in 4-component vector of float) +0:? 'vin[1].uv' (layout(location=5 ) in 2-component vector of float) +0:? 'position' (layout(location=0 ) out 4-component vector of float) +0:? 'color' (layout(location=1 ) out 4-component vector of float) +0:? 'uv' (layout(location=2 ) out 2-component vector of float) + + +Linked geometry stage: + + +Shader version: 450 +invocations = 1 +max_vertices = 4 +input primitive = lines +output primitive = triangle_strip +ERROR: node is still EOpNull! +0:10 Function Definition: main(struct-VertexData-vf4-vf4-vf21[2];struct-VertexData-vf4-vf4-vf21; (temp void) +0:10 Function Parameters: +0:10 'vin' (in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:10 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:? Sequence +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 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:13 Constant: +0:13 1 (const int) +0:? 'vin[0].color' (layout(location=1 ) in 4-component vector of float) +0:14 move second child to first child (temp 2-component vector of float) +0:14 uv: direct index for structure (temp 2-component vector of float) +0:14 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:14 Constant: +0:14 2 (const int) +0:? 'vin[0].uv' (layout(location=2 ) in 2-component vector of float) +0:15 move second child to first child (temp 4-component vector of float) +0:15 position: direct index for structure (temp 4-component vector of float) +0:15 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:15 Constant: +0:15 0 (const int) +0:? 'vin[0].position' (layout(location=0 ) in 4-component vector of float) +0:16 Sequence +0:16 move second child to first child (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 EmitVertex (temp void) +0:? Linker Objects +0:? 'vin[0].position' (layout(location=0 ) in 4-component vector of float) +0:? 'vin[0].color' (layout(location=1 ) in 4-component vector of float) +0:? 'vin[0].uv' (layout(location=2 ) in 2-component vector of float) +0:? 'vin[1].position' (layout(location=3 ) in 4-component vector of float) +0:? 'vin[1].color' (layout(location=4 ) in 4-component vector of float) +0:? 'vin[1].uv' (layout(location=5 ) in 2-component vector of float) +0:? 'position' (layout(location=0 ) out 4-component vector of float) +0:? 'color' (layout(location=1 ) out 4-component vector of float) +0:? 'uv' (layout(location=2 ) out 2-component vector of float) + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out index f3e56b6a..a5feea8a 100755 --- a/Test/baseResults/hlsl.structin.vert.out +++ b/Test/baseResults/hlsl.structin.vert.out @@ -16,14 +16,8 @@ Shader version: 450 0:11 add (temp 4-component vector of float) 0:11 add (temp 4-component vector of float) 0:11 add (temp 4-component vector of float) -0:11 direct index (layout(location=1 ) temp 4-component vector of float) -0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float) -0:11 Constant: -0:11 1 (const int) -0:11 direct index (layout(location=1 ) temp 4-component vector of float) -0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float) -0:11 Constant: -0:11 0 (const int) +0:? 'm[1]' (layout(location=2 ) in 4-component vector of float) +0:? 'm[0]' (layout(location=1 ) in 4-component vector of float) 0:11 Construct vec4 (temp 4-component vector of float) 0:11 Convert uint to float (temp float) 0:11 direct index (temp uint) @@ -34,12 +28,24 @@ Shader version: 450 0:11 'e' (layout(location=5 ) in 4-component vector of float) 0:13 Sequence 0:13 Sequence -0:13 move second child to first child (temp 2-element array of 4-component vector of float) -0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float) -0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) -0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:13 move second child to first child (temp 4-component vector of float) +0:? 'm[0]' (layout(location=0 ) out 4-component vector of float) +0:13 direct index (temp 4-component vector of float) +0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) +0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:13 Constant: +0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) +0:13 move second child to first child (temp 4-component vector of float) +0:? 'm[1]' (layout(location=1 ) out 4-component vector of float) +0:13 direct index (temp 4-component vector of float) +0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) +0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) 0:13 move second child to first child (temp 2-component vector of uint) 0:? 'coord' (layout(location=2 ) out 2-component vector of uint) 0:13 coord: direct index for structure (temp 2-component vector of uint) @@ -54,14 +60,20 @@ Shader version: 450 0:13 2 (const int) 0:13 Branch: Return 0:? Linker Objects -0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float) +0:? 'm[0]' (layout(location=0 ) out 4-component vector of float) +0:? 'm[1]' (layout(location=1 ) out 4-component vector of float) 0:? 'coord' (layout(location=2 ) out 2-component vector of uint) 0:? 'b' (layout(location=3 ) smooth out 4-component vector of float) 0:? 'd' (layout(location=0 ) in 4-component vector of float) -0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float) +0:? 'm[0]' (layout(location=1 ) in 4-component vector of float) +0:? 'm[1]' (layout(location=2 ) in 4-component vector of float) 0:? 'coord' (layout(location=3 ) in 2-component vector of uint) 0:? 'b' (layout(location=4 ) in 4-component vector of float) 0:? 'e' (layout(location=5 ) in 4-component vector of float) +0:? 'm[0]' (layout(location=0 ) out 4-component vector of float) +0:? 'm[1]' (layout(location=1 ) out 4-component vector of float) +0:? 'm[0]' (layout(location=1 ) in 4-component vector of float) +0:? 'm[1]' (layout(location=2 ) in 4-component vector of float) Linked vertex stage: @@ -84,14 +96,8 @@ Shader version: 450 0:11 add (temp 4-component vector of float) 0:11 add (temp 4-component vector of float) 0:11 add (temp 4-component vector of float) -0:11 direct index (layout(location=1 ) temp 4-component vector of float) -0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float) -0:11 Constant: -0:11 1 (const int) -0:11 direct index (layout(location=1 ) temp 4-component vector of float) -0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float) -0:11 Constant: -0:11 0 (const int) +0:? 'm[1]' (layout(location=2 ) in 4-component vector of float) +0:? 'm[0]' (layout(location=1 ) in 4-component vector of float) 0:11 Construct vec4 (temp 4-component vector of float) 0:11 Convert uint to float (temp float) 0:11 direct index (temp uint) @@ -102,12 +108,24 @@ Shader version: 450 0:11 'e' (layout(location=5 ) in 4-component vector of float) 0:13 Sequence 0:13 Sequence -0:13 move second child to first child (temp 2-element array of 4-component vector of float) -0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float) -0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) -0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:13 move second child to first child (temp 4-component vector of float) +0:? 'm[0]' (layout(location=0 ) out 4-component vector of float) +0:13 direct index (temp 4-component vector of float) +0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) +0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:13 Constant: +0:13 0 (const int) 0:13 Constant: 0:13 0 (const int) +0:13 move second child to first child (temp 4-component vector of float) +0:? 'm[1]' (layout(location=1 ) out 4-component vector of float) +0:13 direct index (temp 4-component vector of float) +0:13 m: direct index for structure (temp 2-element array of 4-component vector of float) +0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) 0:13 move second child to first child (temp 2-component vector of uint) 0:? 'coord' (layout(location=2 ) out 2-component vector of uint) 0:13 coord: direct index for structure (temp 2-component vector of uint) @@ -122,45 +140,55 @@ Shader version: 450 0:13 2 (const int) 0:13 Branch: Return 0:? Linker Objects -0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float) +0:? 'm[0]' (layout(location=0 ) out 4-component vector of float) +0:? 'm[1]' (layout(location=1 ) out 4-component vector of float) 0:? 'coord' (layout(location=2 ) out 2-component vector of uint) 0:? 'b' (layout(location=3 ) smooth out 4-component vector of float) 0:? 'd' (layout(location=0 ) in 4-component vector of float) -0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float) +0:? 'm[0]' (layout(location=1 ) in 4-component vector of float) +0:? 'm[1]' (layout(location=2 ) in 4-component vector of float) 0:? 'coord' (layout(location=3 ) in 2-component vector of uint) 0:? 'b' (layout(location=4 ) in 4-component vector of float) 0:? 'e' (layout(location=5 ) in 4-component vector of float) +0:? 'm[0]' (layout(location=0 ) out 4-component vector of float) +0:? 'm[1]' (layout(location=1 ) out 4-component vector of float) +0:? 'm[0]' (layout(location=1 ) in 4-component vector of float) +0:? 'm[1]' (layout(location=2 ) in 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 60 +// Id's are bound by 59 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 18 28 36 39 45 50 55 59 + EntryPoint Vertex 4 "main" 18 20 24 32 35 41 45 50 54 58 Name 4 "main" Name 12 "VI" MemberName 12(VI) 0 "m" MemberName 12(VI) 1 "coord" MemberName 12(VI) 2 "b" Name 14 "local" - Name 18 "m" - Name 28 "coord" - Name 36 "d" - Name 39 "e" - Name 45 "m" + Name 18 "m[1]" + Name 20 "m[0]" + Name 24 "coord" + Name 32 "d" + Name 35 "e" + Name 41 "m[0]" + Name 45 "m[1]" Name 50 "coord" - Name 55 "b" - Name 59 "b" - Decorate 18(m) Location 1 - Decorate 28(coord) Location 3 - Decorate 36(d) Location 0 - Decorate 39(e) Location 5 - Decorate 45(m) Location 0 + Name 54 "b" + Name 58 "b" + Decorate 18(m[1]) Location 2 + Decorate 20(m[0]) Location 1 + Decorate 24(coord) Location 3 + Decorate 32(d) Location 0 + Decorate 35(e) Location 5 + Decorate 41(m[0]) Location 0 + Decorate 45(m[1]) Location 1 Decorate 50(coord) Location 2 - Decorate 55(b) Location 3 - Decorate 59(b) Location 4 + Decorate 54(b) Location 3 + Decorate 58(b) Location 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -173,54 +201,54 @@ Shader version: 450 13: TypePointer Function 12(VI) 15: TypeInt 32 1 16: 15(int) Constant 2 - 17: TypePointer Input 10 - 18(m): 17(ptr) Variable Input - 19: 15(int) Constant 1 - 20: TypePointer Input 7(fvec4) - 23: 15(int) Constant 0 - 27: TypePointer Input 11(ivec2) - 28(coord): 27(ptr) Variable Input - 29: 8(int) Constant 0 - 30: TypePointer Input 8(int) - 36(d): 20(ptr) Variable Input - 39(e): 20(ptr) Variable Input - 42: TypePointer Function 7(fvec4) - 44: TypePointer Output 10 - 45(m): 44(ptr) Variable Output - 46: TypePointer Function 10 + 17: TypePointer Input 7(fvec4) + 18(m[1]): 17(ptr) Variable Input + 20(m[0]): 17(ptr) Variable Input + 23: TypePointer Input 11(ivec2) + 24(coord): 23(ptr) Variable Input + 25: 8(int) Constant 0 + 26: TypePointer Input 8(int) + 32(d): 17(ptr) Variable Input + 35(e): 17(ptr) Variable Input + 38: TypePointer Function 7(fvec4) + 40: TypePointer Output 7(fvec4) + 41(m[0]): 40(ptr) Variable Output + 42: 15(int) Constant 0 + 45(m[1]): 40(ptr) Variable Output + 46: 15(int) Constant 1 49: TypePointer Output 11(ivec2) 50(coord): 49(ptr) Variable Output 51: TypePointer Function 11(ivec2) - 54: TypePointer Output 7(fvec4) - 55(b): 54(ptr) Variable Output - 59(b): 20(ptr) Variable Input + 54(b): 40(ptr) Variable Output + 58(b): 17(ptr) Variable Input 4(main): 2 Function None 3 5: Label 14(local): 13(ptr) Variable Function - 21: 20(ptr) AccessChain 18(m) 19 - 22: 7(fvec4) Load 21 - 24: 20(ptr) AccessChain 18(m) 23 - 25: 7(fvec4) Load 24 - 26: 7(fvec4) FAdd 22 25 - 31: 30(ptr) AccessChain 28(coord) 29 - 32: 8(int) Load 31 - 33: 6(float) ConvertUToF 32 - 34: 7(fvec4) CompositeConstruct 33 33 33 33 - 35: 7(fvec4) FAdd 26 34 - 37: 7(fvec4) Load 36(d) - 38: 7(fvec4) FAdd 35 37 - 40: 7(fvec4) Load 39(e) - 41: 7(fvec4) FAdd 38 40 - 43: 42(ptr) AccessChain 14(local) 16 - Store 43 41 - 47: 46(ptr) AccessChain 14(local) 23 - 48: 10 Load 47 - Store 45(m) 48 - 52: 51(ptr) AccessChain 14(local) 19 + 19: 7(fvec4) Load 18(m[1]) + 21: 7(fvec4) Load 20(m[0]) + 22: 7(fvec4) FAdd 19 21 + 27: 26(ptr) AccessChain 24(coord) 25 + 28: 8(int) Load 27 + 29: 6(float) ConvertUToF 28 + 30: 7(fvec4) CompositeConstruct 29 29 29 29 + 31: 7(fvec4) FAdd 22 30 + 33: 7(fvec4) Load 32(d) + 34: 7(fvec4) FAdd 31 33 + 36: 7(fvec4) Load 35(e) + 37: 7(fvec4) FAdd 34 36 + 39: 38(ptr) AccessChain 14(local) 16 + Store 39 37 + 43: 38(ptr) AccessChain 14(local) 42 42 + 44: 7(fvec4) Load 43 + Store 41(m[0]) 44 + 47: 38(ptr) AccessChain 14(local) 42 46 + 48: 7(fvec4) Load 47 + Store 45(m[1]) 48 + 52: 51(ptr) AccessChain 14(local) 46 53: 11(ivec2) Load 52 Store 50(coord) 53 - 56: 42(ptr) AccessChain 14(local) 16 - 57: 7(fvec4) Load 56 - Store 55(b) 57 + 55: 38(ptr) AccessChain 14(local) 16 + 56: 7(fvec4) Load 55 + Store 54(b) 56 Return FunctionEnd diff --git a/Test/hlsl.structarray.flatten.frag b/Test/hlsl.structarray.flatten.frag new file mode 100644 index 00000000..eedb931d --- /dev/null +++ b/Test/hlsl.structarray.flatten.frag @@ -0,0 +1,28 @@ +SamplerState g_samp; +Texture1D g_tex; + +struct tex_t { + SamplerState samp; + Texture1D tex; + int nonopaque_thing; +}; + +struct tex_with_arrays_t { + SamplerState samp[2]; + Texture1D tex[2]; + int nonopaque_thing; +}; + +uniform tex_t g_texdata; +uniform tex_t g_texdata_array[3]; +uniform tex_with_arrays_t g_texdata_array2[3]; + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +void main(out PS_OUTPUT ps_output) +{ + ps_output.color = + g_texdata.tex.Sample(g_texdata.samp, 0.5) + + g_texdata_array[1].tex.Sample(g_texdata_array[1].samp, 0.4) + + g_texdata_array2[1].tex[0].Sample(g_texdata_array2[1].samp[0], 0.3); +} diff --git a/Test/hlsl.structarray.flatten.geom b/Test/hlsl.structarray.flatten.geom new file mode 100644 index 00000000..1b05dc11 --- /dev/null +++ b/Test/hlsl.structarray.flatten.geom @@ -0,0 +1,17 @@ + +struct VertexData { + float4 position : POSITION; + float4 color : COLOR0; + float2 uv : TEXCOORD0; +}; + +[maxvertexcount(4)] +void main(line VertexData vin[2], inout TriangleStream outStream) +{ + VertexData vout; + + vout.color = vin[0].color; + vout.uv = vin[0].uv; + vout.position = vin[0].position; + outStream.Append(vout); +} diff --git a/Test/hlsl.structin.vert b/Test/hlsl.structin.vert index 7eba552d..43d0cfd0 100644 --- a/Test/hlsl.structin.vert +++ b/Test/hlsl.structin.vert @@ -11,4 +11,4 @@ VI main(float4 d, VI vi, float4 e) : SV_POSITION local.b = vi.m[1] + vi.m[0] + float4(vi.coord.x) + d + e; return local; -} \ No newline at end of file +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 1e7b65bf..ba347958 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -203,6 +203,8 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.shapeConvRet.frag", "main"}, {"hlsl.stringtoken.frag", "main"}, {"hlsl.string.frag", "main"}, + {"hlsl.structarray.flatten.frag", "main"}, + {"hlsl.structarray.flatten.geom", "main"}, {"hlsl.structin.vert", "main"}, {"hlsl.intrinsics.vert", "VertexShaderFunction"}, {"hlsl.matType.frag", "PixelShaderFunction"}, diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 61fb4dd9..e676e95e 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -389,7 +389,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) else if (variableType.getBasicType() == EbtBlock) parseContext.declareBlock(idToken.loc, variableType, idToken.string); else { - if (variableType.getQualifier().storage == EvqUniform && ! variableType.isOpaque()) { + if (variableType.getQualifier().storage == EvqUniform && ! variableType.containsOpaque()) { // this isn't really an individual variable, but a member of the $Global buffer parseContext.growGlobalUniformBlock(idToken.loc, variableType, *idToken.string); } else { @@ -2215,6 +2215,20 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) return false; } + // This is to guarantee we do this no matter how we get out of the stack frame. + // This way there's no bug if an early return forgets to do it. + struct tFinalize { + tFinalize(HlslParseContext& p) : parseContext(p) { } + ~tFinalize() { parseContext.finalizeFlattening(); } + HlslParseContext& parseContext; + } finalize(parseContext); + + // Initialize the flattening accumulation data, so we can track data across multiple bracket or + // dot operators. This can also be nested, e.g, for [], so we have to track each nesting + // level: hence the init and finalize. Even though in practice these must be + // constants, they are parsed no matter what. + parseContext.initFlattening(); + // Something was found, chain as many postfix operations as exist. do { TSourceLoc loc = token.loc; @@ -2248,7 +2262,7 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) node = parseContext.handleDotDereference(field.loc, node, *field.string); // In the event of a method node, we look for an open paren and accept the function call. - if (node->getAsMethodNode() != nullptr && peekTokenClass(EHTokLeftParen)) { + if (node != nullptr && node->getAsMethodNode() != nullptr && peekTokenClass(EHTokLeftParen)) { if (! acceptFunctionCall(field, node, base)) { expected("function parameters"); return false; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 2d99c094..6aa965fe 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -45,6 +45,7 @@ #include "../glslang/OSDependent/osinclude.h" #include +#include #include namespace glslang { @@ -651,11 +652,11 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, else { // at least one of base and index is variable... - if (base->getAsSymbolNode() && shouldFlatten(base->getType())) { + if (base->getAsSymbolNode() && (wasFlattened(base) || shouldFlatten(base->getType()))) { if (index->getQualifier().storage != EvqConst) error(loc, "Invalid variable index to flattened uniform array", base->getAsSymbolNode()->getName().c_str(), ""); - result = flattenAccess(base, indexValue); + result = flattenAccess(loc, base, indexValue); flattened = (result != base); } else { if (index->getQualifier().storage == EvqConst) { @@ -831,8 +832,8 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt } } if (fieldFound) { - if (base->getAsSymbolNode() && shouldFlatten(base->getType())) - result = flattenAccess(base, member); + if (base->getAsSymbolNode() && (wasFlattened(base) || shouldFlatten(base->getType()))) + result = flattenAccess(loc, base, member); else { if (base->getType().getQualifier().storage == EvqConst) result = intermediate.foldDereference(base, member, loc); @@ -850,6 +851,12 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt return result; } +// Determine whether we should flatten an arbitrary type. +bool HlslParseContext::shouldFlatten(const TType& type) const +{ + return shouldFlattenIO(type) || shouldFlattenUniform(type); +} + // Is this an IO variable that can't be passed down the stack? // E.g., pipeline inputs to the vertex stage and outputs from the fragment stage. bool HlslParseContext::shouldFlattenIO(const TType& type) const @@ -869,27 +876,98 @@ bool HlslParseContext::shouldFlattenUniform(const TType& type) const { const TStorageQualifier qualifier = type.getQualifier().storage; - return type.isArray() && - intermediate.getFlattenUniformArrays() && + return ((type.isArray() && intermediate.getFlattenUniformArrays()) || type.isStruct()) && qualifier == EvqUniform && - type.isOpaque(); + type.containsOpaque(); } +// Top level variable flattening: construct data void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable) { const TType& type = variable.getType(); - // Presently, flattening of structure arrays is unimplemented. - // We handle one, or the other. - if (type.isArray() && type.isStruct()) { - error(loc, "cannot flatten structure array", variable.getName().c_str(), ""); + // emplace gives back a pair whose .first is an iterator to the item... + auto entry = flattenMap.emplace(variable.getUniqueId(), + TFlattenData(type.getQualifier().layoutBinding)); + + // ... and the item is a map pair, so first->second is the TFlattenData itself. + flatten(loc, variable, type, entry.first->second, ""); +} + +// Recursively flatten the given variable at the provided type, building the flattenData as we go. +// +// This is mutually recursive with flattenStruct and flattenArray. +// We are going to flatten an arbitrarily nested composite structure into a linear sequence of +// members, and later on, we want to turn a path through the tree structure into a final +// location in this linear sequence. +// +// If the tree was N-ary, that can be directly calculated. However, we are dealing with +// arbitrary numbers - peraps a struct of 7 members containing an array of 3. Thus, we must +// build a data structure to allow the sequence of bracket and dot operators on arrays and +// structs to arrive at the proper member. +// +// To avoid storing a tree with pointers, we are going to flatten the tree into a vector of integers. +// The leaves are the indexes into the flattened member array. +// Each level will have the next location for the Nth item stored sequentially, so for instance: +// +// struct { float2 a[2]; int b; float4 c[3] }; +// +// This will produce the following flattened tree: +// Pos: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 +// (3, 7, 8, 5, 6, 0, 1, 2, 11, 12, 13, 3, 4, 5} +// +// Given a reference to mystruct.c[1], the access chain is (2,1), so we traverse: +// (0+2) = 8 --> (8+1) = 12 --> 12 = 4 +// +// so the 4th flattened member in traversal order is ours. +// +int HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable, const TType& type, + TFlattenData& flattenData, TString name) +{ + // TODO: when struct splitting is in place we can remove this restriction. + if (language == EShLangGeometry) { + const TType derefType(type, 0); + if (!isFinalFlattening(derefType) && type.getQualifier().storage == EvqVaryingIn) + error(loc, "recursive type not yet supported in GS input", variable.getName().c_str(), ""); } - if (type.isStruct()) - flattenStruct(variable); - + // If something is an arrayed struct, the array flattener will recursively call flatten() + // to then flatten the struct, so this is an "if else": we don't do both. if (type.isArray()) - flattenArray(loc, variable); + return flattenArray(loc, variable, type, flattenData, name); + else if (type.isStruct()) + return flattenStruct(loc, variable, type, flattenData, name); + else { + assert(0); // should never happen + return -1; + } +} + +// Add a single flattened member to the flattened data being tracked for the composite +// Returns true for the final flattening level. +int HlslParseContext::addFlattenedMember(const TSourceLoc& loc, + const TVariable& variable, const TType& type, TFlattenData& flattenData, + const TString& memberName, bool track) +{ + if (isFinalFlattening(type)) { + // This is as far as we flatten. Insert the variable. + TVariable* memberVariable = makeInternalVariable(memberName.c_str(), type); + mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier()); + + if (flattenData.nextBinding != TQualifier::layoutBindingEnd) + memberVariable->getWritableType().getQualifier().layoutBinding = flattenData.nextBinding++; + + flattenData.offsets.push_back(flattenData.members.size()); + flattenData.members.push_back(memberVariable); + + if (track) + trackLinkageDeferred(*memberVariable); + + return flattenData.offsets.size()-1; // location of the member reference + } else { + // Further recursion required + return flatten(loc, variable, type, flattenData, memberName); + } } // Figure out the mapping between an aggregate's top members and an @@ -899,84 +977,103 @@ void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable) // effecting a transfer of this information to the flattened variable form. // // Assumes shouldFlatten() or equivalent was called first. -// -// TODO: generalize this to arbitrary nesting? -void HlslParseContext::flattenStruct(const TVariable& variable) +int HlslParseContext::flattenStruct(const TSourceLoc& loc, const TVariable& variable, const TType& type, + TFlattenData& flattenData, TString name) { - TVector memberVariables; + assert(type.isStruct()); + + auto members = *type.getStruct(); + + // Reserve space for this tree level. + int start = flattenData.offsets.size(); + int pos = start; + flattenData.offsets.resize(int(pos + members.size()), -1); - auto members = *variable.getType().getStruct(); for (int member = 0; member < (int)members.size(); ++member) { - TVariable* memberVariable = makeInternalVariable(members[member].type->getFieldName().c_str(), - *members[member].type); - mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier()); - memberVariables.push_back(memberVariable); + TType& dereferencedType = *members[member].type; + const TString memberName = name + (name.empty() ? "" : ".") + dereferencedType.getFieldName(); + + const int mpos = addFlattenedMember(loc, variable, dereferencedType, flattenData, memberName, false); + flattenData.offsets[pos++] = mpos; // N.B. Erase I/O-related annotations from the source-type member. - members[member].type->getQualifier().makeTemporary(); + dereferencedType.getQualifier().makeTemporary(); } - flattenMap[variable.getUniqueId()] = memberVariables; + return start; } // Figure out mapping between an array's members and an // equivalent set of individual variables. // // Assumes shouldFlatten() or equivalent was called first. -void HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& variable) +int HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& variable, const TType& type, + TFlattenData& flattenData, TString name) { - const TType& type = variable.getType(); assert(type.isArray()); if (type.isImplicitlySizedArray()) error(loc, "cannot flatten implicitly sized array", variable.getName().c_str(), ""); - if (type.getArraySizes()->getNumDims() != 1) - error(loc, "cannot flatten multi-dimensional array", variable.getName().c_str(), ""); - - const int size = type.getCumulativeArraySize(); - - TVector memberVariables; - + const int size = type.getOuterArraySize(); const TType dereferencedType(type, 0); - int binding = type.getQualifier().layoutBinding; - if (dereferencedType.isStruct() || dereferencedType.isArray()) { - error(loc, "cannot flatten array of aggregate types", variable.getName().c_str(), ""); - } + if (name.empty()) + name = variable.getName(); - for (int element=0; element < size; ++element) { + // Reserve space for this tree level. + int start = flattenData.offsets.size(); + int pos = start; + flattenData.offsets.resize(int(pos + size), -1); + + for (int element=0; element < size; ++element) { char elementNumBuf[20]; // sufficient for MAXINT snprintf(elementNumBuf, sizeof(elementNumBuf)-1, "[%d]", element); - const TString memberName = variable.getName() + elementNumBuf; + const int mpos = addFlattenedMember(loc, variable, dereferencedType, flattenData, + name + elementNumBuf, true); - TVariable* memberVariable = makeInternalVariable(memberName.c_str(), dereferencedType); - memberVariable->getWritableType().getQualifier() = variable.getType().getQualifier(); - - memberVariable->getWritableType().getQualifier().layoutBinding = binding; - - if (binding != TQualifier::layoutBindingEnd) - ++binding; - - memberVariables.push_back(memberVariable); - trackLinkageDeferred(*memberVariable); + flattenData.offsets[pos++] = mpos; } - flattenMap[variable.getUniqueId()] = memberVariables; + return start; } +// Return true if we have flattened this node. +bool HlslParseContext::wasFlattened(const TIntermTyped* node) const +{ + return node != nullptr && + node->getAsSymbolNode() != nullptr && + wasFlattened(node->getAsSymbolNode()->getId()); +} + + // Turn an access into an aggregate that was flattened to instead be // an access to the individual variable the member was flattened to. // Assumes shouldFlatten() or equivalent was called first. -TIntermTyped* HlslParseContext::flattenAccess(TIntermTyped* base, int member) +TIntermTyped* HlslParseContext::flattenAccess(const TSourceLoc&, TIntermTyped* base, int member) { + const TType dereferencedType(base->getType(), member); // dereferenced type + const TIntermSymbol& symbolNode = *base->getAsSymbolNode(); - if (flattenMap.find(symbolNode.getId()) == flattenMap.end()) + const auto flattenData = flattenMap.find(symbolNode.getId()); + + if (flattenData == flattenMap.end()) return base; - const TVariable* memberVariable = flattenMap[symbolNode.getId()][member]; - return intermediate.addSymbol(*memberVariable); + // Calculate new cumulative offset from the packed tree + flattenOffset.back() = flattenData->second.offsets[flattenOffset.back() + member]; + + if (isFinalFlattening(dereferencedType)) { + // Finished flattening: create symbol for variable + member = flattenData->second.offsets[flattenOffset.back()]; + const TVariable* memberVariable = flattenData->second.members[member]; + return intermediate.addSymbol(*memberVariable); + } else { + // If this is not the final flattening, accumulate the position and return + // an object of the partially dereferenced type. + return new TIntermSymbol(symbolNode.getId(), "flattenShadow", dereferencedType); + } } // Variables that correspond to the user-interface in and out of a stage @@ -1002,8 +1099,8 @@ void HlslParseContext::assignLocations(TVariable& variable) } }; - if (shouldFlatten(variable.getType())) { - auto& memberList = flattenMap[variable.getUniqueId()]; + if (wasFlattened(variable.getUniqueId())) { + auto& memberList = flattenMap[variable.getUniqueId()].members; for (auto member = memberList.begin(); member != memberList.end(); ++member) assignLocation(**member); } else @@ -1294,7 +1391,7 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op return nullptr; const auto mustFlatten = [&](const TIntermTyped& node) { - return shouldFlatten(node.getType()) && node.getAsSymbolNode() && + return wasFlattened(&node) && node.getAsSymbolNode() && flattenMap.find(node.getAsSymbolNode()->getId()) != flattenMap.end(); }; @@ -1327,10 +1424,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op memberCount = left->getType().getCumulativeArraySize(); if (flattenLeft) - leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second; + leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second.members; if (flattenRight) { - rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second; + rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second.members; } else { // The RHS is not flattened. There are several cases: // 1. 1 item to copy: Use the RHS directly. @@ -1355,13 +1452,15 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op } } + int memberIdx = 0; + const auto getMember = [&](bool flatten, TIntermTyped* node, const TVector& memberVariables, int member, TOperator op, const TType& memberType) -> TIntermTyped * { TIntermTyped* subTree; - if (flatten) - subTree = intermediate.addSymbol(*memberVariables[member]); - else { + if (flatten && isFinalFlattening(memberType)) { + subTree = intermediate.addSymbol(*memberVariables[memberIdx++]); + } else { subTree = intermediate.addIndex(op, node, intermediate.addConstantUnion(member, loc), loc); subTree->setType(memberType); } @@ -1369,46 +1468,59 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op return subTree; }; - // Return the proper RHS node: a new symbol from a TVariable, copy - // of an TIntermSymbol node, or sometimes the right node directly. - const auto getRHS = [&]() { - return rhsTempVar ? intermediate.addSymbol(*rhsTempVar, loc) : - cloneSymNode ? intermediate.addSymbol(*cloneSymNode) : - right; + // Cannot use auto here, because this is recursive, and auto can't work out the type without seeing the + // whole thing. So, we'll resort to an explicit type via std::function. + const std::function + traverse = [&](TIntermTyped* left, TIntermTyped* right) -> void { + // If we get here, we are assigning to or from a whole array or struct that must be + // flattened, so have to do member-by-member assignment: + + if (left->getType().isArray()) { + // array case + const TType dereferencedType(left->getType(), 0); + + for (int element=0; element < left->getType().getOuterArraySize(); ++element) { + // Add a new AST symbol node if we have a temp variable holding a complex RHS. + TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, element, + EOpIndexDirect, dereferencedType); + TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, element, + EOpIndexDirect, dereferencedType); + + if (isFinalFlattening(dereferencedType)) + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); + else + traverse(subLeft, subRight); + } + } else if (left->getType().isStruct()) { + // struct case + const auto& members = *left->getType().getStruct(); + + for (int member = 0; member < (int)members.size(); ++member) { + TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member, + EOpIndexDirectStruct, *members[member].type); + TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member, + EOpIndexDirectStruct, *members[member].type); + + if (isFinalFlattening(*members[member].type)) + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); + else + traverse(subLeft, subRight); + } + } else { + assert(0); // we should never be called on a non-flattenable thing, because + // that case bails out above to a simple copy. + } + }; - // Handle struct assignment - if (left->getType().isStruct()) { - // If we get here, we are assigning to or from a whole struct that must be - // flattened, so have to do member-by-member assignment: - const auto& members = *left->getType().getStruct(); + // Use the proper RHS node: a new symbol from a TVariable, copy + // of an TIntermSymbol node, or sometimes the right node directly. + right = rhsTempVar ? intermediate.addSymbol(*rhsTempVar, loc) : + cloneSymNode ? intermediate.addSymbol(*cloneSymNode) : + right; - for (int member = 0; member < (int)members.size(); ++member) { - TIntermTyped* subRight = getMember(flattenRight, getRHS(), *rightVariables, member, - EOpIndexDirectStruct, *members[member].type); - TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member, - EOpIndexDirectStruct, *members[member].type); - assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); - } - } - - // Handle array assignment - if (left->getType().isArray()) { - // If we get here, we are assigning to or from a whole array that must be - // flattened, so have to do member-by-member assignment: - - const TType dereferencedType(left->getType(), 0); - - for (int element=0; element < memberCount; ++element) { - // Add a new AST symbol node if we have a temp variable holding a complex RHS. - TIntermTyped* subRight = getMember(flattenRight, getRHS(), *rightVariables, element, - EOpIndexDirect, dereferencedType); - TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, element, - EOpIndexDirect, dereferencedType); - - assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); - } - } + // This makes the whole assignment, recursing through subtypes as needed. + traverse(left, right); assert(assignList != nullptr); assignList->setOperator(EOpSequence); @@ -2701,7 +2813,7 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI arg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, arg); setArg(i, arg); } else { - if (shouldFlatten(arg->getType())) { + if (wasFlattened(arg)) { // Will make a two-level subtree. // The deepest will copy member-by-member to build the structure to pass. // The level above that will be a two-operand EOpComma sequence that follows the copy by the @@ -2749,7 +2861,7 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu return function[argNum].type->getQualifier().isParamOutput() && (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() || shouldConvertLValue(arguments[argNum]) || - shouldFlatten(arguments[argNum]->getAsTyped()->getType())); + wasFlattened(arguments[argNum]->getAsTyped())); }; // Will there be any output conversions? @@ -4589,23 +4701,23 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i inheritGlobalDefaults(type.getQualifier()); - bool flattenVar = false; + const bool flattenVar = shouldFlatten(type); // Declare the variable if (type.isArray()) { // array case - flattenVar = shouldFlatten(type); declareArray(loc, identifier, type, symbol, !flattenVar); - if (flattenVar) - flatten(loc, *symbol->getAsVariable()); } else { // non-array case if (! symbol) - symbol = declareNonArray(loc, identifier, type); + symbol = declareNonArray(loc, identifier, type, !flattenVar); else if (type != symbol->getType()) error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str()); } + if (flattenVar) + flatten(loc, *symbol->getAsVariable()); + if (! symbol) return nullptr; @@ -4658,14 +4770,14 @@ TVariable* HlslParseContext::makeInternalVariable(const char* name, const TType& // // Return the successfully declared variable. // -TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type) +TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, TString& identifier, TType& type, bool track) { // make a new variable TVariable* variable = new TVariable(&identifier, type); // add variable to symbol table if (symbolTable.insert(*variable)) { - if (symbolTable.atGlobalLevel()) + if (track && symbolTable.atGlobalLevel()) trackLinkageDeferred(*variable); return variable; } diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 907490e3..206df9b8 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -169,10 +169,23 @@ public: // Potentially rename shader entry point function void renameShaderFunction(TString*& name) const; + // Reset data for incrementally built referencing of flattened composite structures + void initFlattening() { flattenLevel.push_back(0); flattenOffset.push_back(0); } + void finalizeFlattening() { flattenLevel.pop_back(); flattenOffset.pop_back(); } + protected: + struct TFlattenData { + TFlattenData() : nextBinding(TQualifier::layoutBindingEnd) { } + TFlattenData(int nb) : nextBinding(nb) { } + + TVector members; // individual flattened variables + TVector offsets; // offset to next tree level + int nextBinding; // next binding to use. + }; + void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; - TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&); + TVariable* declareNonArray(const TSourceLoc&, TString& identifier, TType&, bool track); void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool track); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); @@ -183,13 +196,19 @@ protected: bool shouldConvertLValue(const TIntermNode*) const; // Array and struct flattening - bool shouldFlatten(const TType& type) const { return shouldFlattenIO(type) || shouldFlattenUniform(type); } - TIntermTyped* flattenAccess(TIntermTyped* base, int member); + bool shouldFlatten(const TType& type) const; + TIntermTyped* flattenAccess(const TSourceLoc&, TIntermTyped* base, int member); bool shouldFlattenIO(const TType&) const; bool shouldFlattenUniform(const TType&) const; + bool wasFlattened(const TIntermTyped* node) const; + bool wasFlattened(int id) const { return flattenMap.find(id) != flattenMap.end(); } + int addFlattenedMember(const TSourceLoc& loc, const TVariable&, const TType&, TFlattenData&, const TString& name, bool track); + bool isFinalFlattening(const TType& type) const { return !(type.isStruct() || type.isArray()); } + void flatten(const TSourceLoc& loc, const TVariable& variable); - void flattenStruct(const TVariable& variable); - void flattenArray(const TSourceLoc& loc, const TVariable& variable); + int flatten(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name); + int flattenStruct(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name); + int flattenArray(const TSourceLoc& loc, const TVariable& variable, const TType&, TFlattenData&, TString name); // Current state of parsing struct TPragma contextPragma; @@ -252,7 +271,10 @@ protected: // TVector ioArraySymbolResizeList; - TMap> flattenMap; + TMap flattenMap; + TVector flattenLevel; // nested postfix operator level for flattening + TVector flattenOffset; // cumulative offset for flattening + unsigned int nextInLocation; unsigned int nextOutLocation; From 6a60c2f9ead58eb9040e47e3e2ada01488648901 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 8 Dec 2016 21:01:59 -0700 Subject: [PATCH 117/130] Linker: Walk the call graph to report an error on missing bodies. --- SPIRV/GlslangToSpv.cpp | 4 +- Test/baseResults/100scope.vert.out | 2 + Test/baseResults/110scope.vert.out | 4 + Test/baseResults/300scope.vert.out | 2 + Test/baseResults/430scope.vert.out | 2 + Test/baseResults/missingBodies.vert.out | 117 ++++++++++++++++++ Test/missingBodies.vert | 24 ++++ glslang/Include/revision.h | 4 +- glslang/MachineIndependent/linkValidate.cpp | 70 ++++++++++- .../MachineIndependent/localintermediate.h | 6 +- gtests/Link.FromFile.cpp | 1 + 11 files changed, 228 insertions(+), 8 deletions(-) create mode 100755 Test/baseResults/missingBodies.vert.out create mode 100644 Test/missingBodies.vert diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 7abd04d6..15af947c 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1352,7 +1352,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // anything else gets there, so visit out of order, doing them all now. makeGlobalInitializers(node->getAsAggregate()->getSequence()); - // Initializers are done, don't want to visit again, but functions link objects need to be processed, + // 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()); @@ -2634,7 +2634,7 @@ void TGlslangToSpvTraverser::visitFunctions(const glslang::TIntermSequence& glsl { for (int f = 0; f < (int)glslFunctions.size(); ++f) { glslang::TIntermAggregate* node = glslFunctions[f]->getAsAggregate(); - if (node && (node->getOp() == glslang::EOpFunction || node->getOp() == glslang ::EOpLinkerObjects)) + if (node && (node->getOp() == glslang::EOpFunction || node->getOp() == glslang::EOpLinkerObjects)) node->traverse(this); } } diff --git a/Test/baseResults/100scope.vert.out b/Test/baseResults/100scope.vert.out index 2b542b0c..44132bde 100644 --- a/Test/baseResults/100scope.vert.out +++ b/Test/baseResults/100scope.vert.out @@ -128,6 +128,8 @@ ERROR: node is still EOpNull! Linked vertex stage: +ERROR: Linking vertex stage: No function definition (body) found: + g( Shader version: 100 ERROR: node is still EOpNull! diff --git a/Test/baseResults/110scope.vert.out b/Test/baseResults/110scope.vert.out index dd532503..e71bba38 100644 --- a/Test/baseResults/110scope.vert.out +++ b/Test/baseResults/110scope.vert.out @@ -130,6 +130,10 @@ ERROR: node is still EOpNull! Linked vertex stage: +ERROR: Linking vertex stage: No function definition (body) found: + sin(f1; +ERROR: Linking vertex stage: No function definition (body) found: + g( Shader version: 110 ERROR: node is still EOpNull! diff --git a/Test/baseResults/300scope.vert.out b/Test/baseResults/300scope.vert.out index 2a9a945d..d2428e0d 100644 --- a/Test/baseResults/300scope.vert.out +++ b/Test/baseResults/300scope.vert.out @@ -131,6 +131,8 @@ ERROR: node is still EOpNull! Linked vertex stage: +ERROR: Linking vertex stage: No function definition (body) found: + g( Shader version: 300 ERROR: node is still EOpNull! diff --git a/Test/baseResults/430scope.vert.out b/Test/baseResults/430scope.vert.out index 0a097a21..f1b9594e 100644 --- a/Test/baseResults/430scope.vert.out +++ b/Test/baseResults/430scope.vert.out @@ -127,6 +127,8 @@ ERROR: node is still EOpNull! Linked vertex stage: +ERROR: Linking vertex stage: No function definition (body) found: + g( Shader version: 430 ERROR: node is still EOpNull! diff --git a/Test/baseResults/missingBodies.vert.out b/Test/baseResults/missingBodies.vert.out new file mode 100755 index 00000000..7cf4734d --- /dev/null +++ b/Test/baseResults/missingBodies.vert.out @@ -0,0 +1,117 @@ +missingBodies.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + +Shader version: 450 +0:? Sequence +0:4 Function Definition: foo( (global void) +0:4 Function Parameters: +0:4 Sequence +0:4 Function Call: bar( (global void) +0:8 Function Definition: C(i1;i1; (global void) +0:8 Function Parameters: +0:8 '' (in int) +0:8 '' (in int) +0:10 Function Definition: A( (global void) +0:10 Function Parameters: +0:10 Sequence +0:10 Function Call: B( (global void) +0:10 Function Call: C(i1; (global void) +0:10 Constant: +0:10 1 (const int) +0:10 Function Call: C(b1; (global void) +0:10 Constant: +0:10 true (const bool) +0:10 Function Call: C(i1;i1; (global void) +0:10 Constant: +0:10 1 (const int) +0:10 Constant: +0:10 2 (const int) +0:12 Function Definition: main( (global void) +0:12 Function Parameters: +0:14 Sequence +0:14 Function Call: foo( (global void) +0:15 Function Call: C(b1; (global void) +0:15 Constant: +0:15 true (const bool) +0:20 Sequence +0:20 move second child to first child (temp int) +0:20 'f1' (global int) +0:20 Function Call: ret1( (global int) +0:22 Function Definition: ret2( (global int) +0:22 Function Parameters: +0:22 Sequence +0:22 Branch: Return with expression +0:22 Constant: +0:22 3 (const int) +0:24 Sequence +0:24 move second child to first child (temp int) +0:24 'f2' (global int) +0:24 Function Call: ret2( (global int) +0:? Linker Objects +0:? 'f1' (global int) +0:? 'f2' (global int) +0:? 'gl_VertexID' (gl_VertexId int VertexId) +0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) + + +Linked vertex stage: + +ERROR: Linking vertex stage: No function definition (body) found: + ret1( +ERROR: Linking vertex stage: No function definition (body) found: + C(b1; +ERROR: Linking vertex stage: No function definition (body) found: + bar( + +Shader version: 450 +0:? Sequence +0:4 Function Definition: foo( (global void) +0:4 Function Parameters: +0:4 Sequence +0:4 Function Call: bar( (global void) +0:8 Function Definition: C(i1;i1; (global void) +0:8 Function Parameters: +0:8 '' (in int) +0:8 '' (in int) +0:10 Function Definition: A( (global void) +0:10 Function Parameters: +0:10 Sequence +0:10 Function Call: B( (global void) +0:10 Function Call: C(i1; (global void) +0:10 Constant: +0:10 1 (const int) +0:10 Function Call: C(b1; (global void) +0:10 Constant: +0:10 true (const bool) +0:10 Function Call: C(i1;i1; (global void) +0:10 Constant: +0:10 1 (const int) +0:10 Constant: +0:10 2 (const int) +0:12 Function Definition: main( (global void) +0:12 Function Parameters: +0:14 Sequence +0:14 Function Call: foo( (global void) +0:15 Function Call: C(b1; (global void) +0:15 Constant: +0:15 true (const bool) +0:20 Sequence +0:20 move second child to first child (temp int) +0:20 'f1' (global int) +0:20 Function Call: ret1( (global int) +0:22 Function Definition: ret2( (global int) +0:22 Function Parameters: +0:22 Sequence +0:22 Branch: Return with expression +0:22 Constant: +0:22 3 (const int) +0:24 Sequence +0:24 move second child to first child (temp int) +0:24 'f2' (global int) +0:24 Function Call: ret2( (global int) +0:? Linker Objects +0:? 'f1' (global int) +0:? 'f2' (global int) +0:? 'gl_VertexID' (gl_VertexId int VertexId) +0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) + diff --git a/Test/missingBodies.vert b/Test/missingBodies.vert new file mode 100644 index 00000000..04b71815 --- /dev/null +++ b/Test/missingBodies.vert @@ -0,0 +1,24 @@ +#version 450 + +void bar(); +void foo() { bar(); } + +void B(); +void C(int); +void C(int, int) { } +void C(bool); +void A() { B(); C(1); C(true); C(1, 2); } + +void main() +{ + foo(); + C(true); +} + +int ret1(); + +int f1 = ret1(); + +int ret2() { return 3; } + +int f2 = ret2(); diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index c53a14dc..62856cc2 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1676" -#define GLSLANG_DATE "05-Dec-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1686" +#define GLSLANG_DATE "08-Dec-2016" diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 050fdae0..8e14bbbe 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -94,7 +94,7 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); if (originUpperLeft != unit.originUpperLeft || pixelCenterInteger != unit.pixelCenterInteger) - error(infoSink, "gl_FragCoord redeclarations must match across shaders\n"); + error(infoSink, "gl_FragCoord redeclarations must match across shaders"); if (! earlyFragmentTests) earlyFragmentTests = unit.earlyFragmentTests; @@ -390,8 +390,9 @@ void TIntermediate::finalCheck(TInfoSink& infoSink) if (numPushConstants > 1) error(infoSink, "Only one push_constant block is allowed per stage"); - // recursion checking + // recursion and missing body checking checkCallGraphCycles(infoSink); + checkCallGraphBodies(infoSink); // overlap/alias/missing I/O, etc. inOutLocationCheck(infoSink); @@ -502,7 +503,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink) // void TIntermediate::checkCallGraphCycles(TInfoSink& infoSink) { - // Reset everything, once. + // Clear fields we'll use for this. for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { call->visited = false; call->currentPath = false; @@ -577,6 +578,69 @@ void TIntermediate::checkCallGraphCycles(TInfoSink& infoSink) } while (newRoot); // redundant loop check; should always exit via the 'break' above } +// +// See which functions are reachable from the entry point and which have bodies. +// Reachable ones with missing bodies are errors. +// +void TIntermediate::checkCallGraphBodies(TInfoSink& infoSink) +{ + // Clear fields we'll use for this. + for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { + call->visited = false; + call->calleeBodyPosition = -1; + } + + // The top level of the AST includes function definitions (bodies). + // Compare these to function calls in the call graph. + // We'll end up knowing which have bodies, and if so, + // how to map the call-graph node to the location in the AST. + TIntermSequence &functionSequence = getTreeRoot()->getAsAggregate()->getSequence(); + for (int f = 0; f < (int)functionSequence.size(); ++f) { + glslang::TIntermAggregate* node = functionSequence[f]->getAsAggregate(); + if (node && (node->getOp() == glslang::EOpFunction)) { + for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { + if (call->callee == node->getName()) + call->calleeBodyPosition = f; + } + } + } + + // Start call-graph traversal by visiting the entry point nodes. + for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { + if (call->caller.compare(getEntryPointMangledName().c_str()) == 0) + call->visited = true; + } + + // Propagate 'visited' through the call-graph to every part of the graph it + // can reach (seeded with the entry-point setting above). + bool changed; + do { + changed = false; + for (auto call1 = callGraph.begin(); call1 != callGraph.end(); ++call1) { + if (call1->visited) { + for (TGraph::iterator call2 = callGraph.begin(); call2 != callGraph.end(); ++call2) { + if (! call2->visited) { + if (call1->callee == call2->caller) { + changed = true; + call2->visited = true; + } + } + } + } + } + } while (changed); + + // Any call-graph node set to visited but without a callee body is an error. + for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { + if (call->visited) { + if (call->calleeBodyPosition == -1) { + error(infoSink, "No function definition (body) found: "); + infoSink.info << " " << call->callee << "\n"; + } + } + } +} + // // Satisfy rules for location qualifiers on inputs and outputs // diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 028de06d..a16383ff 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -67,7 +67,9 @@ struct TVectorFields { // by TIntermediate. // -// Used for detecting recursion: A "call" is a pair: . +// Used for call-graph algorithms for detecting recursion, missing bodies, and dead bodies. +// 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) { } TString caller; @@ -75,6 +77,7 @@ struct TCall { bool visited; bool currentPath; bool errorGiven; + int calleeBodyPosition; }; // A generic 1-D range. @@ -393,6 +396,7 @@ protected: void mergeImplicitArraySizes(TType&, const TType&); void mergeErrorCheck(TInfoSink&, const TIntermSymbol&, const TIntermSymbol&, bool crossStage); void checkCallGraphCycles(TInfoSink&); + void checkCallGraphBodies(TInfoSink&); void inOutLocationCheck(TInfoSink&); TIntermSequence& findLinkerObjects() const; bool userOutputUsed() const; diff --git a/gtests/Link.FromFile.cpp b/gtests/Link.FromFile.cpp index 2651a1e0..ab845bf5 100644 --- a/gtests/Link.FromFile.cpp +++ b/gtests/Link.FromFile.cpp @@ -99,6 +99,7 @@ INSTANTIATE_TEST_CASE_P( {"150.tesc", "150.tese", "400.tesc", "400.tese", "410.tesc", "420.tesc", "420.tese"}, {"max_vertices_0.geom"}, {"es-link1.frag", "es-link2.frag"}, + {"missingBodies.vert"} })), ); // clang-format on From 1bcb254a305be3df69ab20a0362092728f7e590d Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Fri, 9 Dec 2016 03:32:01 +0000 Subject: [PATCH 118/130] Add missing header and drop duplicate one In file included from C:/Projects/glslang/glslang/MachineIndependent/glslang.y:59:0: glslang/MachineIndependent/ParseHelper.h:276:24: error: 'va_list' has not been declared va_list args); ^~~~~~~ --- glslang/MachineIndependent/ParseHelper.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 6234db60..eb1a0538 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -49,8 +49,7 @@ #include "SymbolTable.h" #include "localintermediate.h" #include "Scan.h" -#include - +#include #include namespace glslang { From 4b6ce415eff2020dbb0d7ef4162c3fc8fe9ee2da Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 9 Dec 2016 17:14:27 -0700 Subject: [PATCH 119/130] GLSL Linker: Track entry point across compilation units. This wasn't needed until the recent generalization of "main" to "entry point", so makes some HLSL-specific code be generic now, for GLSL functional correctness. --- Test/baseResults/150.tesc.out | 5 +++++ Test/baseResults/mains1.frag.out | 1 + glslang/Include/revision.h | 2 +- glslang/MachineIndependent/linkValidate.cpp | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out index 1736bf0e..28162b22 100644 --- a/Test/baseResults/150.tesc.out +++ b/Test/baseResults/150.tesc.out @@ -910,8 +910,10 @@ ERROR: node is still EOpNull! Linked tessellation control stage: +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( +ERROR: Linking tessellation control stage: can't handle multiple entry points per stage ERROR: Linking tessellation control stage: Contradictory layout vertices values ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( @@ -921,6 +923,7 @@ 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 implicitly-sized array of float ClipDistance gl_ClipDistance}" versus "out implicitly-sized array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}" 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 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( ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: @@ -934,8 +937,10 @@ ERROR: Linking tessellation control stage: Types must match: Linked tessellation evaluation stage: +ERROR: Linking tessellation evaluation stage: can't handle multiple entry points per stage ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( +ERROR: Linking tessellation evaluation stage: can't handle multiple entry points per stage ERROR: Linking tessellation evaluation stage: Contradictory input layout primitives ERROR: Linking tessellation evaluation stage: Contradictory input vertex spacing ERROR: Linking tessellation evaluation stage: Contradictory triangle ordering diff --git a/Test/baseResults/mains1.frag.out b/Test/baseResults/mains1.frag.out index 0b5c2b78..426a1a8d 100644 --- a/Test/baseResults/mains1.frag.out +++ b/Test/baseResults/mains1.frag.out @@ -48,6 +48,7 @@ ERROR: Linking geometry stage: At least one shader must specify a layout(max_ver Linked fragment stage: +ERROR: Linking fragment stage: can't handle multiple entry points per stage ERROR: Linking fragment stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 62856cc2..00779ecd 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -3,4 +3,4 @@ // For the date, it uses the current date (when then script is run). #define GLSLANG_REVISION "Overload400-PrecQual.1686" -#define GLSLANG_DATE "08-Dec-2016" +#define GLSLANG_DATE "09-Dec-2016" diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 8e14bbbe..614a3b90 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -82,7 +82,7 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) if (source != unit.source) error(infoSink, "can't link compilation units from different source languages"); - if (source == EShSourceHlsl && unit.getNumEntryPoints() > 0) { + if (unit.getNumEntryPoints() > 0) { if (getNumEntryPoints() > 0) error(infoSink, "can't handle multiple entry points per stage"); else From bf6d7f43fd10e0ceb83889aa054591b83526b43a Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 9 Dec 2016 17:29:07 -0700 Subject: [PATCH 120/130] Linker: Track the mangled entry-point name along with the non-mangled one. --- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/linkValidate.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 00779ecd..d1b31239 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1686" +#define GLSLANG_REVISION "Overload400-PrecQual.1687" #define GLSLANG_DATE "09-Dec-2016" diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 614a3b90..820b53a5 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -85,11 +85,13 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) if (unit.getNumEntryPoints() > 0) { if (getNumEntryPoints() > 0) error(infoSink, "can't handle multiple entry points per stage"); - else - entryPointName = unit.entryPointName; + else { + entryPointName = unit.getEntryPointName(); + entryPointMangledName = unit.getEntryPointMangledName(); + } } - numEntryPoints += unit.numEntryPoints; - numErrors += unit.numErrors; + numEntryPoints += unit.getNumEntryPoints(); + numErrors += unit.getNumErrors(); numPushConstants += unit.numPushConstants; callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); From 906cc21816330c8983934d81d3e08b8a2460c7c8 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 9 Dec 2016 19:22:20 -0700 Subject: [PATCH 121/130] Linker: Eliminate uncalled functions, because they can be ill-defined. Fixes issue #610. Also provides a testing option to keep uncalled functions. --- StandAlone/StandAlone.cpp | 53 +- Test/baseResults/100.frag.out | 186 ---- Test/baseResults/100scope.vert.out | 14 - Test/baseResults/110scope.vert.out | 14 - Test/baseResults/120.frag.out | 528 ---------- Test/baseResults/120.vert.out | 279 ----- Test/baseResults/130.frag.out | 320 ------ Test/baseResults/130.vert.out | 17 - Test/baseResults/140.frag.out | 52 - Test/baseResults/140.vert.out | 65 -- Test/baseResults/150.frag.out | 84 -- Test/baseResults/150.geom.out | 28 - Test/baseResults/150.tesc.out | 64 -- Test/baseResults/300.frag.out | 125 --- Test/baseResults/300.vert.out | 126 --- Test/baseResults/300scope.vert.out | 10 - Test/baseResults/310.comp.out | 334 ------ Test/baseResults/310.frag.out | 671 ------------ Test/baseResults/310.geom.out | 68 -- Test/baseResults/310.tesc.out | 166 --- Test/baseResults/310.tese.out | 13 - Test/baseResults/310.vert.out | 687 ------------ Test/baseResults/310AofA.vert.out | 271 ----- Test/baseResults/330.frag.out | 25 - Test/baseResults/400.frag.out | 306 ------ Test/baseResults/400.geom.out | 975 ------------------ Test/baseResults/400.tesc.out | 29 - Test/baseResults/400.vert.out | 18 - Test/baseResults/410.geom.out | 29 - Test/baseResults/420.geom.out | 105 -- Test/baseResults/420.tesc.out | 35 - Test/baseResults/420.vert.out | 171 --- Test/baseResults/420_size_gl_in.geom.out | 20 - Test/baseResults/430.comp.out | 71 -- Test/baseResults/430.vert.out | 129 --- Test/baseResults/430AofA.frag.out | 28 - Test/baseResults/430scope.vert.out | 14 - Test/baseResults/440.frag.out | 29 - Test/baseResults/440.vert.out | 31 - Test/baseResults/450.frag.out | 51 - Test/baseResults/array.frag.out | 65 -- Test/baseResults/array100.frag.out | 23 - Test/baseResults/atomic_uint.frag.out | 32 - Test/baseResults/constFold.frag.out | 114 -- Test/baseResults/cppComplexExpr.vert.out | 35 - Test/baseResults/cppNest.vert.out | 11 - Test/baseResults/cppSimple.vert.out | 13 - Test/baseResults/dce.frag.out | 122 --- Test/baseResults/functionSemantics.frag.out | 13 - .../hlsl.deadFunctionMissingBody.vert.out | 25 + Test/baseResults/lineContinuation.vert.out | 29 - Test/baseResults/lineContinuation100.vert.out | 10 - Test/baseResults/mains1.frag.out | 4 - Test/baseResults/missingBodies.vert.out | 19 - Test/baseResults/noMain.vert.out | 2 - Test/baseResults/precise.tesc.out | 370 ------- .../baseResults/precise_struct_block.vert.out | 509 --------- Test/baseResults/precision.frag.out | 12 - Test/baseResults/recurse1.vert.out | 168 --- Test/baseResults/specExamples.frag.out | 11 - Test/hlsl.deadFunctionMissingBody.vert | 8 + Test/runtests | 11 +- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/ShaderLang.cpp | 2 +- glslang/MachineIndependent/linkValidate.cpp | 26 +- .../MachineIndependent/localintermediate.h | 4 +- glslang/Public/ShaderLang.h | 1 + gtests/TestFixture.cpp | 2 + 68 files changed, 101 insertions(+), 7783 deletions(-) create mode 100644 Test/baseResults/hlsl.deadFunctionMissingBody.vert.out create mode 100644 Test/hlsl.deadFunctionMissingBody.vert diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index e6c0ab70..84c80f58 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -60,29 +60,30 @@ 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), + 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), + EOptionNoStorageFormat = (1 << 21), + EOptionKeepUncalled = (1 << 21), }; // @@ -310,6 +311,9 @@ void ProcessArguments(int argc, char* argv[]) } else Error("no provided for --source-entrypoint"); break; + } else if (lowerword == "keep-uncalled" || // synonyms + lowerword == "ku") { + Options |= EOptionKeepUncalled; } else { usage(); } @@ -459,6 +463,8 @@ void SetMessageOptions(EShMessages& messages) messages = (EShMessages)(messages | EShMsgReadHlsl); if (Options & EOptionCascadingErrors) messages = (EShMessages)(messages | EShMsgCascadingErrors); + if (Options & EOptionKeepUncalled) + messages = (EShMessages)(messages | EShMsgKeepUncalled); } // @@ -978,6 +984,9 @@ void usage() "\n" " --source-entrypoint name the given shader source function is renamed to be the entry point given in -e\n" " --sep synonym for --source-entrypoint\n" + "\n" + " --keep-uncalled don't eliminate uncalled functions when linking\n" + " --ku synonym for --keep-uncalled\n" ); exit(EFailUsage); diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out index 74a597ff..42635d3b 100644 --- a/Test/baseResults/100.frag.out +++ b/Test/baseResults/100.frag.out @@ -507,123 +507,6 @@ ERROR: node is still EOpNull! 0:38 's2' (temp structure{temp mediump float f, temp 10-element array of mediump float a}) 0:38 true case is null 0:40 'b' (temp mediump int) -0:54 Function Definition: foo10( (global void) -0:54 Function Parameters: -0:67 Function Definition: f11(s21; (global void) -0:67 Function Parameters: -0:67 'p2d' (in lowp sampler2D) -0:87 Function Definition: foo234( (global void) -0:87 Function Parameters: -0:89 Sequence -0:89 texture (global highp 4-component vector of float) -0:89 's3D2' (uniform highp sampler3D) -0:89 Constant: -0:89 0.200000 -0:89 0.200000 -0:89 0.200000 -0:89 Constant: -0:89 0.200000 -0:90 textureProj (global highp 4-component vector of float) -0:90 's3D2' (uniform highp sampler3D) -0:90 direct index (smooth temp mediump 4-component vector of float) -0:90 'v' (smooth in 3-element array of mediump 4-component vector of float) -0:90 Constant: -0:90 1 (const int) -0:90 Constant: -0:90 0.400000 -0:91 dPdx (global mediump 4-component vector of float) -0:91 direct index (smooth temp mediump 4-component vector of float) -0:91 'v' (smooth in 3-element array of mediump 4-component vector of float) -0:91 Constant: -0:91 0 (const int) -0:92 Constant: -0:92 0.000000 -0:93 fwidth (global mediump float) -0:93 'f13' (invariant global mediump float) -0:98 Function Definition: foo236( (global void) -0:98 Function Parameters: -0:100 Sequence -0:100 dPdx (global mediump 4-component vector of float) -0:100 direct index (smooth temp mediump 4-component vector of float) -0:100 'v' (smooth in 3-element array of mediump 4-component vector of float) -0:100 Constant: -0:100 0 (const int) -0:101 Constant: -0:101 0.000000 -0:102 fwidth (global mediump float) -0:102 'f13' (invariant global mediump float) -0:103 move second child to first child (temp mediump float) -0:103 'gl_FragDepth' (temp mediump float) -0:103 'f13' (invariant global mediump float) -0:104 move second child to first child (temp highp float) -0:104 'gl_FragDepthEXT' (gl_FragDepth highp float FragDepth) -0:104 'f13' (invariant global mediump float) -0:109 Function Definition: foo239( (global void) -0:109 Function Parameters: -0:111 Sequence -0:111 move second child to first child (temp mediump float) -0:111 'gl_FragDepth' (temp mediump float) -0:111 'f13' (invariant global mediump float) -0:112 move second child to first child (temp highp float) -0:112 'gl_FragDepthEXT' (gl_FragDepth highp float FragDepth) -0:112 'f13' (invariant global mediump float) -0:119 Function Definition: foo245( (global void) -0:119 Function Parameters: -0:121 Sequence -0:121 texture (global lowp 4-component vector of float) -0:121 'sExt' (uniform lowp samplerExternalOES) -0:121 Constant: -0:121 0.200000 -0:121 0.200000 -0:122 textureProj (global lowp 4-component vector of float) -0:122 'sExt' (uniform lowp samplerExternalOES) -0:122 Construct vec3 (temp lowp 3-component vector of float) -0:122 'f13' (invariant global mediump float) -0:123 textureProj (global lowp 4-component vector of float, operation at mediump) -0:123 'sExt' (uniform lowp samplerExternalOES) -0:123 direct index (smooth temp mediump 4-component vector of float) -0:123 'v' (smooth in 3-element array of mediump 4-component vector of float) -0:123 Constant: -0:123 2 (const int) -0:130 Function Definition: foo246( (global void) -0:130 Function Parameters: -0:132 Sequence -0:132 texture (global mediump 4-component vector of float) -0:132 'mediumExt' (uniform mediump samplerExternalOES) -0:132 Constant: -0:132 0.200000 -0:132 0.200000 -0:133 textureProj (global highp 4-component vector of float) -0:133 'highExt' (uniform highp samplerExternalOES) -0:133 direct index (smooth temp mediump 4-component vector of float) -0:133 'v' (smooth in 3-element array of mediump 4-component vector of float) -0:133 Constant: -0:133 2 (const int) -0:134 Constant: -0:134 0.000000 -0:135 Constant: -0:135 0.000000 -0:137 Bitwise not (temp mediump int) -0:137 'a' (temp mediump int) -0:138 inclusive-or (temp mediump int) -0:138 'a' (temp mediump int) -0:138 'a' (temp mediump int) -0:139 bitwise and (temp mediump int) -0:139 'a' (temp mediump int) -0:139 'a' (temp mediump int) -0:145 Function Definition: foo203940(i1;f1;f1; (global mediump int) -0:145 Function Parameters: -0:145 'a' (in mediump int) -0:145 'b' (in mediump float) -0:147 Sequence -0:147 textureProjGrad (global lowp 4-component vector of float, operation at mediump) -0:147 's2Dg' (uniform lowp sampler2D) -0:147 Construct vec3 (temp mediump 3-component vector of float) -0:147 'f13' (invariant global mediump float) -0:147 'uv2' (invariant uniform mediump 2-component vector of float) -0:147 'uv2' (invariant uniform mediump 2-component vector of float) -0:148 Branch: Return with expression -0:148 'a' (in mediump int) 0:151 Sequence 0:151 move second child to first child (temp mediump float) 0:151 'f123' (global mediump float) @@ -634,75 +517,6 @@ ERROR: node is still EOpNull! 0:152 'f124' (global mediump float) 0:152 Constant: 0:152 50000000000.000000 -0:158 Function Definition: foo323433( (global void) -0:158 Function Parameters: -0:160 Sequence -0:160 textureLod (global lowp 4-component vector of float, operation at mediump) -0:160 's2Dg' (uniform lowp sampler2D) -0:160 'uv2' (invariant uniform mediump 2-component vector of float) -0:160 'f13' (invariant global mediump float) -0:161 textureProjGrad (global lowp 4-component vector of float, operation at mediump) -0:161 's2Dg' (uniform lowp sampler2D) -0:161 Construct vec3 (temp mediump 3-component vector of float) -0:161 'f13' (invariant global mediump float) -0:161 'uv2' (invariant uniform mediump 2-component vector of float) -0:161 'uv2' (invariant uniform mediump 2-component vector of float) -0:162 textureGrad (global lowp 4-component vector of float, operation at mediump) -0:162 's2Dg' (uniform lowp sampler2D) -0:162 'uv2' (invariant uniform mediump 2-component vector of float) -0:162 'uv2' (invariant uniform mediump 2-component vector of float) -0:162 'uv2' (invariant uniform mediump 2-component vector of float) -0:163 textureGrad (global lowp 4-component vector of float) -0:163 'sCube' (uniform lowp samplerCube) -0:163 Construct vec3 (temp lowp 3-component vector of float) -0:163 'f13' (invariant global mediump float) -0:163 Construct vec3 (temp lowp 3-component vector of float) -0:163 'f13' (invariant global mediump float) -0:163 Construct vec3 (temp lowp 3-component vector of float) -0:163 'f13' (invariant global mediump float) -0:167 Function Definition: fgfg(f1;i1; (global mediump int) -0:167 Function Parameters: -0:167 'f' (in mediump float) -0:167 'i' (in highp int) -0:167 Sequence -0:167 Branch: Return with expression -0:167 Constant: -0:167 2 (const int) -0:173 Function Definition: gggf(f1; (global mediump int) -0:173 Function Parameters: -0:173 'f' (in mediump float) -0:173 Sequence -0:173 Branch: Return with expression -0:173 Constant: -0:173 2 (const int) -0:175 Function Definition: agggf(f1; (global mediump int) -0:175 Function Parameters: -0:175 'f' (in mediump float) -0:175 Sequence -0:175 Branch: Return with expression -0:175 Constant: -0:175 2 (const int) -0:187 Function Definition: badswizzle( (global void) -0:187 Function Parameters: -0:? Sequence -0:190 'a' (temp 5-element array of mediump 3-component vector of float) -0:191 'a' (temp 5-element array of mediump 3-component vector of float) -0:192 'a' (temp 5-element array of mediump 3-component vector of float) -0:193 Constant: -0:193 5 (const int) -0:194 Constant: -0:194 0.000000 -0:199 Function Definition: fooinittest( (global mediump float) -0:199 Function Parameters: -0:201 Sequence -0:201 Branch: Return with expression -0:201 Function Call: fooinit( (global mediump float) -0:209 Function Definition: fooinit( (global mediump float) -0:209 Function Parameters: -0:211 Sequence -0:211 Branch: Return with expression -0:211 Constant: -0:211 12.000000 0:214 Sequence 0:214 move second child to first child (temp mediump int) 0:214 'init1' (global mediump int) diff --git a/Test/baseResults/100scope.vert.out b/Test/baseResults/100scope.vert.out index 44132bde..17423dc2 100644 --- a/Test/baseResults/100scope.vert.out +++ b/Test/baseResults/100scope.vert.out @@ -150,20 +150,6 @@ ERROR: node is still EOpNull! 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' (in highp int) -0:25 Function Definition: cos(f1; (global highp float) -0:25 Function Parameters: -0:25 'x' (in highp float) -0:27 Sequence -0:27 Branch: Return with expression -0:27 Constant: -0:27 1.000000 -0:29 Function Definition: radians(b1; (global bool) -0:29 Function Parameters: -0:29 'x' (in bool) -0:31 Sequence -0:31 Branch: Return with expression -0:31 Constant: -0:31 true (const bool) 0:36 Function Definition: main( (global void) 0:36 Function Parameters: 0:? Sequence diff --git a/Test/baseResults/110scope.vert.out b/Test/baseResults/110scope.vert.out index e71bba38..74002ba7 100644 --- a/Test/baseResults/110scope.vert.out +++ b/Test/baseResults/110scope.vert.out @@ -154,20 +154,6 @@ ERROR: node is still EOpNull! 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' (in int) -0:25 Function Definition: cos(f1; (global float) -0:25 Function Parameters: -0:25 'x' (in float) -0:27 Sequence -0:27 Branch: Return with expression -0:27 Constant: -0:27 1.000000 -0:29 Function Definition: radians(b1; (global bool) -0:29 Function Parameters: -0:29 'x' (in bool) -0:31 Sequence -0:31 Branch: Return with expression -0:31 Constant: -0:31 true (const bool) 0:34 Sequence 0:34 move second child to first child (temp int) 0:34 'gi' (global int) diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out index 4fa76000..79898aaf 100644 --- a/Test/baseResults/120.frag.out +++ b/Test/baseResults/120.frag.out @@ -630,537 +630,9 @@ Shader version: 120 Requested GL_ARB_shader_texture_lod Requested GL_ARB_texture_rectangle ERROR: node is still EOpNull! -0:21 Function Definition: main( (global void) -0:21 Function Parameters: -0:23 Sequence -0:23 Sequence -0:23 move second child to first child (temp 2X3 matrix of float) -0:23 'm23' (temp 2X3 matrix of float) -0:23 Construct mat2x3 (temp 2X3 matrix of float) -0:23 'm' (uniform 4X2 matrix of float) -0:27 Sequence -0:27 move second child to first child (temp structure{global float f}) -0:27 'sv' (temp structure{global float f}) -0:27 Construct structure (temp structure{global float f}) -0:27 Convert int to float (temp float) -0:27 'a' (temp int) -0:28 Sequence -0:28 move second child to first child (temp 2-element array of float) -0:28 'ia' (temp 2-element array of float) -0:28 Construct float (temp 2-element array of float) -0:28 Constant: -0:28 3.000000 -0:28 direct index (temp float) -0:28 'i' (smooth in 4-component vector of float) -0:28 Constant: -0:28 1 (const int) -0:29 Sequence -0:29 move second child to first child (temp float) -0:29 'f1' (temp float) -0:29 Constant: -0:29 1.000000 -0:30 Sequence -0:30 move second child to first child (temp float) -0:30 'f' (temp float) -0:30 Convert int to float (temp float) -0:30 'a' (temp int) -0:31 move second child to first child (temp float) -0:31 'f' (temp float) -0:31 Convert int to float (temp float) -0:31 'a' (temp int) -0:33 Sequence -0:33 move second child to first child (temp 3-component vector of float) -0:33 'v3' (temp 3-component vector of float) -0:33 Convert int to float (temp 3-component vector of float) -0:33 'iv3' (temp 3-component vector of int) -0:34 move second child to first child (temp float) -0:34 'f' (temp float) -0:34 add (temp float) -0:34 'f' (temp float) -0:34 Convert int to float (temp float) -0:34 'a' (temp int) -0:35 move second child to first child (temp float) -0:35 'f' (temp float) -0:35 subtract (temp float) -0:35 Convert int to float (temp float) -0:35 'a' (temp int) -0:35 'f' (temp float) -0:36 add second child into first child (temp float) -0:36 'f' (temp float) -0:36 Convert int to float (temp float) -0:36 'a' (temp int) -0:37 move second child to first child (temp float) -0:37 'f' (temp float) -0:37 subtract (temp float) -0:37 Convert int to float (temp float) -0:37 'a' (temp int) -0:37 'f' (temp float) -0:38 multiply second child into first child (temp 3-component vector of float) -0:38 'v3' (temp 3-component vector of float) -0:38 Convert int to float (temp 3-component vector of float) -0:38 'iv3' (temp 3-component vector of int) -0:39 move second child to first child (temp 3-component vector of float) -0:39 'v3' (temp 3-component vector of float) -0:39 divide (temp 3-component vector of float) -0:39 Convert int to float (temp 3-component vector of float) -0:39 'iv3' (temp 3-component vector of int) -0:39 Constant: -0:39 2.000000 -0:40 move second child to first child (temp 3-component vector of float) -0:40 'v3' (temp 3-component vector of float) -0:40 vector-scale (temp 3-component vector of float) -0:40 Constant: -0:40 3.000000 -0:40 Convert int to float (temp 3-component vector of float) -0:40 'iv3' (temp 3-component vector of int) -0:41 move second child to first child (temp 3-component vector of float) -0:41 'v3' (temp 3-component vector of float) -0:41 vector-scale (temp 3-component vector of float) -0:41 Constant: -0:41 2.000000 -0:41 'v3' (temp 3-component vector of float) -0:42 move second child to first child (temp 3-component vector of float) -0:42 'v3' (temp 3-component vector of float) -0:42 subtract (temp 3-component vector of float) -0:42 'v3' (temp 3-component vector of float) -0:42 Constant: -0:42 2.000000 -0:43 Test condition and select (temp void) -0:43 Condition -0:47 logical-or (temp bool) -0:46 logical-or (temp bool) -0:45 logical-or (temp bool) -0:44 logical-or (temp bool) -0:43 logical-or (temp bool) -0:43 Compare Less Than (temp bool) -0:43 'f' (temp float) -0:43 Convert int to float (temp float) -0:43 'a' (temp int) -0:44 Compare Less Than or Equal (temp bool) -0:44 Convert int to float (temp float) -0:44 'a' (temp int) -0:44 'f' (temp float) -0:45 Compare Greater Than (temp bool) -0:45 'f' (temp float) -0:45 Convert int to float (temp float) -0:45 'a' (temp int) -0:46 Compare Greater Than or Equal (temp bool) -0:46 'f' (temp float) -0:46 Convert int to float (temp float) -0:46 'a' (temp int) -0:47 Compare Equal (temp bool) -0:47 Convert int to float (temp float) -0:47 'a' (temp int) -0:47 'f' (temp float) -0:48 Compare Not Equal (temp bool) -0:48 'f' (temp float) -0:48 Convert int to float (temp float) -0:48 'a' (temp int) -0:43 true case is null -0:49 move second child to first child (temp float) -0:49 'f' (temp float) -0:49 Test condition and select (temp float) -0:49 Condition -0:49 'b' (temp bool) -0:49 true case -0:49 Convert int to float (temp float) -0:49 'a' (temp int) -0:49 false case -0:49 'f' (temp float) -0:50 move second child to first child (temp float) -0:50 'f' (temp float) -0:50 Test condition and select (temp float) -0:50 Condition -0:50 'b' (temp bool) -0:50 true case -0:50 'f' (temp float) -0:50 false case -0:50 Convert int to float (temp float) -0:50 'a' (temp int) -0:51 move second child to first child (temp float) -0:51 'f' (temp float) -0:51 Convert int to float (temp float) -0:51 Test condition and select (temp int) -0:51 Condition -0:51 'b' (temp bool) -0:51 true case -0:51 'a' (temp int) -0:51 false case -0:51 'a' (temp int) -0:52 Sequence -0:52 move second child to first child (temp structure{global float f}) -0:52 'news' (temp structure{global float f}) -0:52 'sv' (temp structure{global float f}) -0:54 vector swizzle (temp 2-component vector of float) -0:54 'i' (smooth in 4-component vector of float) -0:54 Sequence -0:54 Constant: -0:54 0 (const int) -0:54 Constant: -0:54 1 (const int) -0:55 'm' (uniform 4X2 matrix of float) -0:56 'm' (uniform 4X2 matrix of float) -0:58 'f' (temp float) -0:59 move second child to first child (temp float) -0:59 'f' (temp float) -0:59 Convert int to float (temp float) -0:59 'a' (temp int) -0:60 'f' (temp float) -0:61 'b' (temp bool) -0:62 move second child to first child (temp bool) -0:62 'b' (temp bool) -0:62 'b' (temp bool) -0:63 'f' (temp float) -0:65 move second child to first child (temp 4-component vector of float) -0:65 'gl_FragColor' (fragColor 4-component vector of float FragColor) -0:65 texture (global 4-component vector of float) -0:65 's2D' (uniform sampler2D) -0:65 'centTexCoord' (centroid smooth in 2-component vector of float) -0:? Sequence -0:79 'gl_FragColor' (fragColor 4-component vector of float FragColor) -0:82 direct index (temp float) -0:82 'gl_FragColor' (fragColor 4-component vector of float FragColor) -0:82 Constant: -0:82 0 (const int) -0:83 direct index (temp float) -0:83 'gl_FragColor' (fragColor 4-component vector of float FragColor) -0:83 Constant: -0:83 0 (const int) -0:84 direct index (temp float) -0:84 'centTexCoord' (centroid smooth in 2-component vector of float) -0:84 Constant: -0:84 0 (const int) -0:85 move second child to first child (temp bool) -0:85 Comma (temp bool) -0:85 'a' (temp int) -0:85 'b' (temp bool) -0:85 Constant: -0:85 true (const bool) -0:91 Function Definition: main( (global int) -0:91 Function Parameters: 0:92 Function Definition: main(i1; (global void) 0:92 Function Parameters: 0:92 'a' (in int) -0:97 Function Definition: foo(f1; (global int) -0:97 Function Parameters: -0:97 'a' (out float) -0:99 Sequence -0:99 Branch: Return with expression -0:99 Constant: -0:99 3.200000 -0:100 Function Call: foo(f1; (global int) -0:100 'a' (out float) -0:103 Function Definition: gen(vf3; (global bool) -0:103 Function Parameters: -0:103 'v' (in 3-component vector of float) -0:105 Sequence -0:105 Test condition and select (temp void) -0:105 Condition -0:105 logical-and (temp bool) -0:105 Compare Less Than (temp bool) -0:105 Absolute value (global float) -0:105 direct index (temp float) -0:105 'v' (in 3-component vector of float) -0:105 Constant: -0:105 0 (const int) -0:105 Constant: -0:105 0.000100 -0:105 Compare Less Than (temp bool) -0:105 Absolute value (global float) -0:105 direct index (temp float) -0:105 'v' (in 3-component vector of float) -0:105 Constant: -0:105 1 (const int) -0:105 Constant: -0:105 0.000100 -0:105 true case -0:106 Branch: Return with expression -0:106 Constant: -0:106 true (const bool) -0:109 Function Definition: v1( (global void) -0:109 Function Parameters: -0:113 Function Definition: v2( (global void) -0:113 Function Parameters: -0:115 Sequence -0:115 Branch: Return -0:118 Function Definition: atest( (global void) -0:118 Function Parameters: -0:120 Sequence -0:120 Sequence -0:120 move second child to first child (temp 4-component vector of float) -0:120 'v' (temp 4-component vector of float) -0:120 direct index (smooth temp 4-component vector of float TexCoord) -0:120 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) -0:120 Constant: -0:120 1 (const int) -0:121 add second child into first child (temp 4-component vector of float) -0:121 'v' (temp 4-component vector of float) -0:121 direct index (smooth temp 4-component vector of float TexCoord) -0:121 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float TexCoord) -0:121 Constant: -0:121 3 (const int) -0:139 Function Definition: foo123( (global void) -0:139 Function Parameters: -0:141 Sequence -0:141 Sequence -0:141 move second child to first child (temp 2X2 matrix of float) -0:141 'r2' (temp 2X2 matrix of float) -0:141 component-wise multiply (global 2X2 matrix of float) -0:141 'm22' (global 2X2 matrix of float) -0:141 'm22' (global 2X2 matrix of float) -0:142 Sequence -0:142 move second child to first child (temp 3X3 matrix of float) -0:142 'r3' (temp 3X3 matrix of float) -0:142 component-wise multiply (global 3X3 matrix of float) -0:142 'm33' (global 3X3 matrix of float) -0:142 'm33' (global 3X3 matrix of float) -0:143 Sequence -0:143 move second child to first child (temp 4X4 matrix of float) -0:143 'r4' (temp 4X4 matrix of float) -0:143 component-wise multiply (global 4X4 matrix of float) -0:143 'm44' (global 4X4 matrix of float) -0:143 'm44' (global 4X4 matrix of float) -0:145 Sequence -0:145 move second child to first child (temp 2X3 matrix of float) -0:145 'r23' (temp 2X3 matrix of float) -0:145 component-wise multiply (global 2X3 matrix of float) -0:145 'm23' (global 2X3 matrix of float) -0:145 'm23' (global 2X3 matrix of float) -0:146 Sequence -0:146 move second child to first child (temp 2X4 matrix of float) -0:146 'r24' (temp 2X4 matrix of float) -0:146 component-wise multiply (global 2X4 matrix of float) -0:146 'm24' (global 2X4 matrix of float) -0:146 'm24' (global 2X4 matrix of float) -0:147 Sequence -0:147 move second child to first child (temp 3X2 matrix of float) -0:147 'r32' (temp 3X2 matrix of float) -0:147 component-wise multiply (global 3X2 matrix of float) -0:147 'm32' (global 3X2 matrix of float) -0:147 'm32' (global 3X2 matrix of float) -0:148 Sequence -0:148 move second child to first child (temp 3X4 matrix of float) -0:148 'r34' (temp 3X4 matrix of float) -0:148 component-wise multiply (global 3X4 matrix of float) -0:148 'm34' (global 3X4 matrix of float) -0:148 'm34' (global 3X4 matrix of float) -0:149 Sequence -0:149 move second child to first child (temp 4X2 matrix of float) -0:149 'r42' (temp 4X2 matrix of float) -0:149 component-wise multiply (global 4X2 matrix of float) -0:149 'm42' (global 4X2 matrix of float) -0:149 'm42' (global 4X2 matrix of float) -0:150 Sequence -0:150 move second child to first child (temp 4X3 matrix of float) -0:150 'r43' (temp 4X3 matrix of float) -0:150 component-wise multiply (global 4X3 matrix of float) -0:150 'm43' (global 4X3 matrix of float) -0:150 'm43' (global 4X3 matrix of float) -0:156 Function Definition: matConst( (global void) -0:156 Function Parameters: -0:? Sequence -0:162 Sequence -0:162 move second child to first child (temp 4X4 matrix of float) -0:162 'm4g' (temp 4X4 matrix of float) -0:162 Construct mat4 (temp 4X4 matrix of float) -0:162 'v2' (temp 2-component vector of float) -0:162 'v3' (temp 3-component vector of float) -0:162 'v3' (temp 3-component vector of float) -0:162 'v3' (temp 3-component vector of float) -0:162 'v3' (temp 3-component vector of float) -0:162 'v3' (temp 3-component vector of float) -0:163 Sequence -0:163 move second child to first child (temp 4X4 matrix of float) -0:163 'm4' (temp 4X4 matrix of float) -0:163 Construct mat4 (temp 4X4 matrix of float) -0:163 'v2' (temp 2-component vector of float) -0:163 'v3' (temp 3-component vector of float) -0:163 'v3' (temp 3-component vector of float) -0:163 'v3' (temp 3-component vector of float) -0:163 'v3' (temp 3-component vector of float) -0:163 'v2' (temp 2-component vector of float) -0:164 Sequence -0:164 move second child to first child (temp 3X3 matrix of float) -0:164 'm3' (temp 3X3 matrix of float) -0:164 Construct mat3 (temp 3X3 matrix of float) -0:164 'm4' (temp 4X4 matrix of float) -0:165 Sequence -0:165 move second child to first child (temp 3X3 matrix of float) -0:165 'm3b1' (temp 3X3 matrix of float) -0:165 Construct mat3 (temp 3X3 matrix of float) -0:165 'm4' (temp 4X4 matrix of float) -0:165 'v2' (temp 2-component vector of float) -0:166 Sequence -0:166 move second child to first child (temp 3X3 matrix of float) -0:166 'm3b2' (temp 3X3 matrix of float) -0:166 Construct mat3 (temp 3X3 matrix of float) -0:166 'm4' (temp 4X4 matrix of float) -0:166 'm4' (temp 4X4 matrix of float) -0:167 Sequence -0:167 move second child to first child (temp 3X2 matrix of float) -0:167 'm32' (temp 3X2 matrix of float) -0:167 Construct mat3x2 (temp 3X2 matrix of float) -0:167 'm4' (temp 4X4 matrix of float) -0:168 Sequence -0:168 move second child to first child (temp 4X4 matrix of float) -0:168 'm4c' (temp 4X4 matrix of float) -0:168 Construct mat4 (temp 4X4 matrix of float) -0:168 'm32' (temp 3X2 matrix of float) -0:169 Sequence -0:169 move second child to first child (temp 3X3 matrix of float) -0:169 'm3s' (temp 3X3 matrix of float) -0:169 Construct mat3 (temp 3X3 matrix of float) -0:169 direct index (temp float) -0:169 'v2' (temp 2-component vector of float) -0:169 Constant: -0:169 0 (const int) -0:171 Sequence -0:171 move second child to first child (temp 2-element array of 3X3 matrix of float) -0:171 'm3a1' (temp 2-element array of 3X3 matrix of float) -0:171 Construct mat3 (temp 2-element array of 3X3 matrix of float) -0:171 'm3s' (temp 3X3 matrix of float) -0:171 'm3s' (temp 3X3 matrix of float) -0:179 Function Definition: foo2323( (global void) -0:179 Function Parameters: -0:? Sequence -0:184 move second child to first child (temp 4-component vector of float) -0:184 'v' (temp 4-component vector of float) -0:184 textureLod (global 4-component vector of float) -0:184 's2D' (uniform sampler2D) -0:184 'v2' (temp 2-component vector of float) -0:184 'f' (temp float) -0:185 move second child to first child (temp 4-component vector of float) -0:185 'v' (temp 4-component vector of float) -0:185 textureProjLod (global 4-component vector of float) -0:185 's3D' (uniform sampler3D) -0:185 'v' (temp 4-component vector of float) -0:185 'f' (temp float) -0:186 move second child to first child (temp 4-component vector of float) -0:186 'v' (temp 4-component vector of float) -0:186 textureProjLod (global 4-component vector of float) -0:186 's1D' (uniform sampler1D) -0:186 'v' (temp 4-component vector of float) -0:186 'f' (temp float) -0:187 move second child to first child (temp 4-component vector of float) -0:187 'v' (temp 4-component vector of float) -0:187 textureProjLod (global 4-component vector of float) -0:187 's2DS' (uniform sampler2DShadow) -0:187 'v' (temp 4-component vector of float) -0:187 'f' (temp float) -0:189 move second child to first child (temp 4-component vector of float) -0:189 'v' (temp 4-component vector of float) -0:189 textureGrad (global 4-component vector of float) -0:189 's1D' (uniform sampler1D) -0:189 'f' (temp float) -0:189 'f' (temp float) -0:189 'f' (temp float) -0:190 move second child to first child (temp 4-component vector of float) -0:190 'v' (temp 4-component vector of float) -0:190 textureProjGrad (global 4-component vector of float) -0:190 's2D' (uniform sampler2D) -0:190 'v' (temp 4-component vector of float) -0:190 'v2' (temp 2-component vector of float) -0:190 'v2' (temp 2-component vector of float) -0:191 move second child to first child (temp 4-component vector of float) -0:191 'v' (temp 4-component vector of float) -0:191 textureProjGrad (global 4-component vector of float) -0:191 's2DS' (uniform sampler2DShadow) -0:191 'v' (temp 4-component vector of float) -0:191 'v2' (temp 2-component vector of float) -0:191 'v2' (temp 2-component vector of float) -0:196 Function Definition: foo2324( (global void) -0:196 Function Parameters: -0:? Sequence -0:201 move second child to first child (temp 4-component vector of float) -0:201 'v' (temp 4-component vector of float) -0:201 textureLod (global 4-component vector of float) -0:201 's2D' (uniform sampler2D) -0:201 'v2' (temp 2-component vector of float) -0:201 'f' (temp float) -0:202 move second child to first child (temp 4-component vector of float) -0:202 'v' (temp 4-component vector of float) -0:202 textureProjLod (global 4-component vector of float) -0:202 's3D' (uniform sampler3D) -0:202 'v' (temp 4-component vector of float) -0:202 'f' (temp float) -0:203 move second child to first child (temp 4-component vector of float) -0:203 'v' (temp 4-component vector of float) -0:203 textureProjLod (global 4-component vector of float) -0:203 's1D' (uniform sampler1D) -0:203 'v' (temp 4-component vector of float) -0:203 'f' (temp float) -0:204 move second child to first child (temp 4-component vector of float) -0:204 'v' (temp 4-component vector of float) -0:204 textureProjLod (global 4-component vector of float) -0:204 's2DS' (uniform sampler2DShadow) -0:204 'v' (temp 4-component vector of float) -0:204 'f' (temp float) -0:206 move second child to first child (temp 4-component vector of float) -0:206 'v' (temp 4-component vector of float) -0:206 textureGrad (global 4-component vector of float) -0:206 's1D' (uniform sampler1D) -0:206 'f' (temp float) -0:206 'f' (temp float) -0:206 'f' (temp float) -0:207 move second child to first child (temp 4-component vector of float) -0:207 'v' (temp 4-component vector of float) -0:207 textureProjGrad (global 4-component vector of float) -0:207 's2D' (uniform sampler2D) -0:207 'v' (temp 4-component vector of float) -0:207 'v2' (temp 2-component vector of float) -0:207 'v2' (temp 2-component vector of float) -0:208 move second child to first child (temp 4-component vector of float) -0:208 'v' (temp 4-component vector of float) -0:208 textureProjGrad (global 4-component vector of float) -0:208 's2DS' (uniform sampler2DShadow) -0:208 'v' (temp 4-component vector of float) -0:208 'v2' (temp 2-component vector of float) -0:208 'v2' (temp 2-component vector of float) -0:209 'v' (temp 4-component vector of float) -0:214 Function Definition: foo121111( (global void) -0:214 Function Parameters: -0:? Sequence -0:217 Sequence -0:217 move second child to first child (temp 4-component vector of float) -0:217 'v' (temp 4-component vector of float) -0:217 texture (global 4-component vector of float) -0:217 's2DRbad' (uniform sampler2DRect) -0:217 'v2' (temp 2-component vector of float) -0:225 Function Definition: foo12111( (global void) -0:225 Function Parameters: -0:? Sequence -0:231 move second child to first child (temp 4-component vector of float) -0:231 'v' (temp 4-component vector of float) -0:231 texture (global 4-component vector of float) -0:231 's2DR' (uniform sampler2DRect) -0:231 'v2' (temp 2-component vector of float) -0:232 move second child to first child (temp 4-component vector of float) -0:232 'v' (temp 4-component vector of float) -0:232 textureProj (global 4-component vector of float) -0:232 's2DR' (uniform sampler2DRect) -0:232 'v3' (temp 3-component vector of float) -0:233 move second child to first child (temp 4-component vector of float) -0:233 'v' (temp 4-component vector of float) -0:233 textureProj (global 4-component vector of float) -0:233 's2DR' (uniform sampler2DRect) -0:233 'v4' (temp 4-component vector of float) -0:234 move second child to first child (temp 4-component vector of float) -0:234 'v' (temp 4-component vector of float) -0:234 texture (global 4-component vector of float) -0:234 's2DRS' (uniform sampler2DRectShadow) -0:234 'v3' (temp 3-component vector of float) -0:235 move second child to first child (temp 4-component vector of float) -0:235 'v' (temp 4-component vector of float) -0:235 textureProj (global 4-component vector of float) -0:235 's2DRS' (uniform sampler2DRectShadow) -0:235 'v4' (temp 4-component vector of float) -0:237 move second child to first child (temp 4-component vector of float) -0:237 'v' (temp 4-component vector of float) -0:237 textureProjGrad (global 4-component vector of float) -0:237 's2DRS' (uniform sampler2DRectShadow) -0:237 'v' (temp 4-component vector of float) -0:237 'v2' (temp 2-component vector of float) -0:237 'v2' (temp 2-component vector of float) 0:? Linker Objects 0:? 'lowp' (global float) 0:? 'mediump' (global float) diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out index 18fb221d..94a97b53 100644 --- a/Test/baseResults/120.vert.out +++ b/Test/baseResults/120.vert.out @@ -480,285 +480,6 @@ ERROR: node is still EOpNull! 0:43 'gl_PointSize' (invariant gl_PointSize float PointSize) 0:43 Constant: 0:43 3.800000 -0:61 Function Definition: overloadB(f1;f1; (global void) -0:61 Function Parameters: -0:61 '' (in float) -0:61 '' (const (read only) float) -0:78 Function Definition: foo( (global void) -0:78 Function Parameters: -0:? Sequence -0:83 Function Call: overloadB(f1;f1; (global void) -0:83 'f' (temp float) -0:83 'f' (temp float) -0:84 Function Call: overloadB(f1;f1; (global void) -0:84 'f' (temp float) -0:84 Constant: -0:84 2.000000 -0:85 Function Call: overloadB(f1;f1; (global void) -0:85 Constant: -0:85 1.000000 -0:85 Convert int to float (temp float) -0:85 'i' (temp int) -0:87 Constant: -0:87 0.000000 -0:88 Function Call: overloadC(i1;i1; (global 2-component vector of float) -0:88 Constant: -0:88 1 (const int) -0:88 'i' (temp int) -0:89 Function Call: overloadC(vf2;vf2; (global 2-component vector of float) -0:89 Constant: -0:89 1.000000 -0:89 1.000000 -0:89 Constant: -0:89 2.000000 -0:89 2.000000 -0:90 Constant: -0:90 0.000000 -0:91 Function Call: overloadC(vf2;vf2; (global 2-component vector of float) -0:91 Constant: -0:91 1.000000 -0:91 1.000000 -0:91 Constant: -0:91 2.000000 -0:91 2.000000 -0:93 Function Call: overloadD(i1;f1; (global 3-component vector of float) -0:93 'i' (temp int) -0:93 'f' (temp float) -0:94 Function Call: overloadD(f1;i1; (global 3-component vector of float) -0:94 'f' (temp float) -0:94 'i' (temp int) -0:95 Function Call: overloadD(f1;i1; (global 3-component vector of float) -0:95 Convert int to float (temp float) -0:95 'i' (temp int) -0:95 'i' (temp int) -0:98 Constant: -0:98 0.000000 -0:100 Constant: -0:100 0.841471 -0:101 texture (global 4-component vector of float) -0:101 's2D' (uniform sampler2D) -0:101 Constant: -0:101 0.000000 -0:101 0.000000 -0:102 clamp (global 4-component vector of float) -0:102 'attv4' (in 4-component vector of float) -0:102 Constant: -0:102 0.000000 -0:102 Constant: -0:102 1.000000 -0:103 clamp (global 4-component vector of float) -0:103 Convert int to float (temp 4-component vector of float) -0:103 Convert float to int (temp 4-component vector of int) -0:103 'attv4' (in 4-component vector of float) -0:103 Constant: -0:103 0.000000 -0:103 Constant: -0:103 1.000000 -0:106 Constant: -0:106 0.000000 -0:107 Constant: -0:107 0.000000 -0:108 Constant: -0:108 0.000000 -0:109 Function Call: overloadE(vf2; (global 3-component vector of float) -0:109 Constant: -0:109 3.300000 -0:109 3.300000 -0:110 Function Call: overloadE(mf22; (global 3-component vector of float) -0:110 Constant: -0:110 0.500000 -0:110 0.000000 -0:110 0.000000 -0:110 0.500000 -0:111 Constant: -0:111 0.000000 -0:112 Function Call: overloadE(vf2; (global 3-component vector of float) -0:112 Constant: -0:112 1.000000 -0:112 1.000000 -0:115 Function Call: overloadE(f1[2]; (global 3-component vector of float) -0:115 'b' (temp 2-element array of float) -0:117 Constant: -0:117 0.000000 -0:118 Function Call: overloadF(i1; (global 3-component vector of float) -0:118 Constant: -0:118 1 (const int) -0:128 Function Definition: foo2( (global void) -0:128 Function Parameters: -0:? Sequence -0:135 Comma (global void) -0:135 Function Call: outFun(f1;vi2;i1;f1; (global void) -0:135 Convert int to float (temp float) -0:135 'i' (temp int) -0:135 'tempArg' (temp 2-component vector of int) -0:135 'i' (temp int) -0:135 'f' (temp float) -0:135 move second child to first child (temp 2-component vector of float) -0:135 'v2' (temp 2-component vector of float) -0:135 Convert int to float (temp 2-component vector of float) -0:135 'tempArg' (temp 2-component vector of int) -0:136 Comma (global int) -0:136 move second child to first child (temp int) -0:136 'tempReturn' (global int) -0:136 Function Call: outFunRet(f1;i1;i1;vi4; (global int) -0:136 Convert int to float (temp float) -0:136 'i' (temp int) -0:136 'tempArg' (temp int) -0:136 'i' (temp int) -0:136 'tempArg' (temp 4-component vector of int) -0:136 move second child to first child (temp float) -0:136 'f' (temp float) -0:136 Convert int to float (temp float) -0:136 'tempArg' (temp int) -0:136 move second child to first child (temp 4-component vector of float) -0:136 'v4' (temp 4-component vector of float) -0:136 Convert int to float (temp 4-component vector of float) -0:136 'tempArg' (temp 4-component vector of int) -0:136 'tempReturn' (global int) -0:137 Sequence -0:137 move second child to first child (temp float) -0:137 'ret' (temp float) -0:137 Convert int to float (temp float) -0:137 Comma (global int) -0:137 move second child to first child (temp int) -0:137 'tempReturn' (global int) -0:137 Function Call: outFunRet(f1;i1;i1;vi4; (global int) -0:137 Convert int to float (temp float) -0:137 'i' (temp int) -0:137 'tempArg' (temp int) -0:137 'i' (temp int) -0:137 'tempArg' (temp 4-component vector of int) -0:137 move second child to first child (temp float) -0:137 'f' (temp float) -0:137 Convert int to float (temp float) -0:137 'tempArg' (temp int) -0:137 move second child to first child (temp 4-component vector of float) -0:137 'v4' (temp 4-component vector of float) -0:137 Convert int to float (temp 4-component vector of float) -0:137 'tempArg' (temp 4-component vector of int) -0:137 'tempReturn' (global int) -0:138 Sequence -0:138 move second child to first child (temp 2-component vector of float) -0:138 'ret2' (temp 2-component vector of float) -0:138 Convert int to float (temp 2-component vector of float) -0:138 Comma (global 2-component vector of int) -0:138 move second child to first child (temp 2-component vector of int) -0:138 'tempReturn' (global 2-component vector of int) -0:138 Function Call: outFunRet(f1;vi4;i1;vi4; (global 2-component vector of int) -0:138 Convert int to float (temp float) -0:138 'i' (temp int) -0:138 'tempArg' (temp 4-component vector of int) -0:138 'i' (temp int) -0:138 'tempArg' (temp 4-component vector of int) -0:138 move second child to first child (temp 4-component vector of float) -0:138 'v4' (temp 4-component vector of float) -0:138 Convert int to float (temp 4-component vector of float) -0:138 'tempArg' (temp 4-component vector of int) -0:138 move second child to first child (temp 4-component vector of float) -0:138 'v4' (temp 4-component vector of float) -0:138 Convert int to float (temp 4-component vector of float) -0:138 'tempArg' (temp 4-component vector of int) -0:138 'tempReturn' (global 2-component vector of int) -0:139 Sequence -0:139 move second child to first child (temp bool) -0:139 'b' (temp bool) -0:139 any (global bool) -0:139 Compare Less Than (global 4-component vector of bool) -0:139 'v4' (temp 4-component vector of float) -0:139 'attv4' (in 4-component vector of float) -0:142 Function Definition: noise( (global void) -0:142 Function Parameters: -0:144 Sequence -0:144 Sequence -0:144 move second child to first child (temp float) -0:144 'f1' (temp float) -0:144 noise (global float) -0:144 Constant: -0:144 1.000000 -0:145 Sequence -0:145 move second child to first child (temp 2-component vector of float) -0:145 'f2' (temp 2-component vector of float) -0:145 noise (global 2-component vector of float) -0:145 Constant: -0:145 1.000000 -0:145 1.000000 -0:146 Sequence -0:146 move second child to first child (temp 3-component vector of float) -0:146 'f3' (temp 3-component vector of float) -0:146 noise (global 3-component vector of float) -0:146 Constant: -0:146 1.000000 -0:146 1.000000 -0:146 1.000000 -0:147 Sequence -0:147 move second child to first child (temp 4-component vector of float) -0:147 'f4' (temp 4-component vector of float) -0:147 noise (global 4-component vector of float) -0:147 Constant: -0:147 1.000000 -0:147 1.000000 -0:147 1.000000 -0:147 1.000000 -0:162 Function Definition: foo213( (global void) -0:162 Function Parameters: -0:164 Sequence -0:164 Sequence -0:164 move second child to first child (temp float) -0:164 'f' (temp float) -0:164 Constant: -0:164 3.000000 -0:165 switch -0:165 condition -0:165 'c' (uniform int) -0:165 body -0:165 Sequence -0:166 case: with expression -0:166 Constant: -0:166 1 (const int) -0:? Sequence -0:167 move second child to first child (temp float) -0:167 'f' (temp float) -0:167 sine (global float) -0:167 'f' (temp float) -0:168 Branch: Break -0:169 case: with expression -0:169 Constant: -0:169 2 (const int) -0:? Sequence -0:170 move second child to first child (temp float) -0:170 'f' (temp float) -0:170 component-wise multiply (temp float) -0:170 'f' (temp float) -0:170 'f' (temp float) -0:171 default: -0:? Sequence -0:172 move second child to first child (temp float) -0:172 'f' (temp float) -0:172 Constant: -0:172 3.000000 -0:176 inclusive-or (temp int) -0:176 left-shift (temp int) -0:176 'i' (temp int) -0:176 Constant: -0:176 3 (const int) -0:176 Constant: -0:176 69 (const int) -0:180 Sequence -0:180 move second child to first child (temp float) -0:180 't' (temp float) -0:180 Constant: -0:180 0.000000 -0:186 Constant: -0:186 0.000000 -0:188 Constant: -0:188 0.000000 -0:189 Constant: -0:189 0.000000 -0:192 move second child to first child (temp float) -0:192 Constant: -0:192 0.000000 -0:192 Constant: -0:192 0.300000 0:? Linker Objects 0:? 'i' (in 4-component vector of float) 0:? 'o' (smooth out 4-component vector of float) diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out index a28908ea..e71b3e28 100644 --- a/Test/baseResults/130.frag.out +++ b/Test/baseResults/130.frag.out @@ -427,326 +427,6 @@ ERROR: node is still EOpNull! 0:18 'gl_ClipDistance' (smooth in 4-element array of float ClipDistance) 0:18 Constant: 0:18 3 (const int) -0:23 Function Definition: foo( (global void) -0:23 Function Parameters: -0:25 Sequence -0:25 Sequence -0:25 move second child to first child (temp 4-component vector of float) -0:25 's' (temp 4-component vector of float) -0:25 textureGather (global 4-component vector of float) -0:25 'sampC' (uniform samplerCube) -0:25 Constant: -0:25 0.200000 -0:25 0.200000 -0:25 0.200000 -0:30 Function Definition: bar( (global void) -0:30 Function Parameters: -0:32 Sequence -0:32 Sequence -0:32 move second child to first child (temp 4-component vector of float) -0:32 's' (temp 4-component vector of float) -0:32 textureGather (global 4-component vector of float) -0:32 'sampC' (uniform samplerCube) -0:32 Constant: -0:32 0.200000 -0:32 0.200000 -0:32 0.200000 -0:43 Function Definition: bar2( (global void) -0:43 Function Parameters: -0:45 Sequence -0:45 Sequence -0:45 move second child to first child (temp 4-component vector of float) -0:45 's' (temp 4-component vector of float) -0:45 textureGather (global 4-component vector of float) -0:45 'sampC' (uniform samplerCube) -0:45 Constant: -0:45 0.200000 -0:45 0.200000 -0:45 0.200000 -0:49 move second child to first child (temp 3-component vector of bool) -0:49 'b3' (temp 3-component vector of bool) -0:49 Compare Less Than (global 3-component vector of bool) -0:49 'uv3' (temp 3-component vector of uint) -0:49 'uv3' (temp 3-component vector of uint) -0:50 move second child to first child (temp 3-component vector of bool) -0:50 'b3' (temp 3-component vector of bool) -0:50 Equal (global 3-component vector of bool) -0:50 'uv3' (temp 3-component vector of uint) -0:50 'uv3' (temp 3-component vector of uint) -0:56 direct index (temp int) -0:56 'a1' (temp 1-element array of int) -0:56 Constant: -0:56 0 (const int) -0:57 direct index (temp int) -0:57 'a2' (temp 1-element array of int) -0:57 Constant: -0:57 0 (const int) -0:60 direct index (temp int) -0:60 'a3' (temp 4-element array of int) -0:60 Constant: -0:60 3 (const int) -0:61 Compare Not Equal (temp bool) -0:61 'b3' (temp 3-component vector of bool) -0:61 'b3' (temp 3-component vector of bool) -0:62 Constant: -0:62 false (const bool) -0:63 Constant: -0:63 false (const bool) -0:64 Constant: -0:64 false (const bool) -0:65 Constant: -0:65 true (const bool) -0:66 Constant: -0:66 false (const bool) -0:77 Function Definition: bar23( (global void) -0:77 Function Parameters: -0:? Sequence -0:80 's' (temp 4-component vector of float) -0:81 move second child to first child (temp 4-component vector of float) -0:81 's' (temp 4-component vector of float) -0:81 textureGatherOffset (global 4-component vector of float) -0:81 'samp2DR' (uniform sampler2DRect) -0:81 Constant: -0:81 0.300000 -0:81 0.300000 -0:81 Constant: -0:81 1 (const int) -0:81 1 (const int) -0:82 move second child to first child (temp 4-component vector of float) -0:82 's' (temp 4-component vector of float) -0:82 textureGatherOffset (global 4-component vector of float) -0:82 'samp2D' (uniform sampler2D) -0:82 Constant: -0:82 0.300000 -0:82 0.300000 -0:82 Constant: -0:82 1 (const int) -0:82 1 (const int) -0:83 move second child to first child (temp 4-component vector of float) -0:83 's' (temp 4-component vector of float) -0:83 textureGatherOffset (global 4-component vector of float) -0:83 'samp2DA' (uniform sampler2DArray) -0:83 Constant: -0:83 0.300000 -0:83 0.300000 -0:83 0.300000 -0:83 Constant: -0:83 1 (const int) -0:83 1 (const int) -0:84 move second child to first child (temp 4-component vector of float) -0:84 's' (temp 4-component vector of float) -0:84 textureGatherOffset (global 4-component vector of float) -0:84 'samp2DS' (uniform sampler2DShadow) -0:84 Constant: -0:84 0.300000 -0:84 0.300000 -0:84 Constant: -0:84 1.300000 -0:84 Constant: -0:84 1 (const int) -0:84 1 (const int) -0:85 move second child to first child (temp 4-component vector of float) -0:85 's' (temp 4-component vector of float) -0:85 textureGatherOffset (global 4-component vector of float) -0:85 'samp2D' (uniform sampler2D) -0:85 Constant: -0:85 0.300000 -0:85 0.300000 -0:85 Constant: -0:85 1 (const int) -0:85 1 (const int) -0:85 Constant: -0:85 2 (const int) -0:90 Function Definition: bar234( (global void) -0:90 Function Parameters: -0:? Sequence -0:93 move second child to first child (temp 4-component vector of float) -0:93 's' (temp 4-component vector of float) -0:93 textureGatherOffset (global 4-component vector of float) -0:93 'samp2D' (uniform sampler2D) -0:93 Constant: -0:93 0.300000 -0:93 0.300000 -0:93 Constant: -0:93 1 (const int) -0:93 1 (const int) -0:94 move second child to first child (temp 4-component vector of float) -0:94 's' (temp 4-component vector of float) -0:94 textureGatherOffset (global 4-component vector of float) -0:94 'samp2DA' (uniform sampler2DArray) -0:94 Constant: -0:94 0.300000 -0:94 0.300000 -0:94 0.300000 -0:94 Constant: -0:94 1 (const int) -0:94 1 (const int) -0:95 move second child to first child (temp 4-component vector of float) -0:95 's' (temp 4-component vector of float) -0:95 textureGatherOffset (global 4-component vector of float) -0:95 'samp2DR' (uniform sampler2DRect) -0:95 Constant: -0:95 0.300000 -0:95 0.300000 -0:95 Constant: -0:95 1 (const int) -0:95 1 (const int) -0:96 move second child to first child (temp 4-component vector of float) -0:96 's' (temp 4-component vector of float) -0:96 textureGatherOffset (global 4-component vector of float) -0:96 'samp2DS' (uniform sampler2DShadow) -0:96 Constant: -0:96 0.300000 -0:96 0.300000 -0:96 Constant: -0:96 1.300000 -0:96 Constant: -0:96 1 (const int) -0:96 1 (const int) -0:97 move second child to first child (temp 4-component vector of float) -0:97 's' (temp 4-component vector of float) -0:97 textureGatherOffset (global 4-component vector of float) -0:97 'samp2D' (uniform sampler2D) -0:97 Constant: -0:97 0.300000 -0:97 0.300000 -0:97 Constant: -0:97 1 (const int) -0:97 1 (const int) -0:97 Constant: -0:97 2 (const int) -0:107 Function Definition: bar235( (global void) -0:107 Function Parameters: -0:109 Sequence -0:109 Sequence -0:109 move second child to first child (temp 3-component vector of int) -0:109 'a' (temp 3-component vector of int) -0:109 textureSize (global 3-component vector of int) -0:109 'Sca' (uniform samplerCubeArray) -0:109 Constant: -0:109 3 (const int) -0:110 Sequence -0:110 move second child to first child (temp 4-component vector of float) -0:110 'b' (temp 4-component vector of float) -0:110 texture (global 4-component vector of float) -0:110 'Sca' (uniform samplerCubeArray) -0:110 'i' (smooth in 4-component vector of float) -0:111 Sequence -0:111 move second child to first child (temp 4-component vector of int) -0:111 'c' (temp 4-component vector of int) -0:111 texture (global 4-component vector of int) -0:111 'Isca' (uniform isamplerCubeArray) -0:111 'i' (smooth in 4-component vector of float) -0:111 Constant: -0:111 0.700000 -0:112 Sequence -0:112 move second child to first child (temp 4-component vector of uint) -0:112 'd' (temp 4-component vector of uint) -0:112 texture (global 4-component vector of uint) -0:112 'Usca' (uniform usamplerCubeArray) -0:112 'i' (smooth in 4-component vector of float) -0:114 move second child to first child (temp 4-component vector of float) -0:114 'b' (temp 4-component vector of float) -0:114 textureLod (global 4-component vector of float) -0:114 'Sca' (uniform samplerCubeArray) -0:114 'i' (smooth in 4-component vector of float) -0:114 Constant: -0:114 1.700000 -0:115 move second child to first child (temp 3-component vector of int) -0:115 'a' (temp 3-component vector of int) -0:115 textureSize (global 3-component vector of int) -0:115 'Scas' (uniform samplerCubeArrayShadow) -0:115 direct index (temp int) -0:115 'a' (temp 3-component vector of int) -0:115 Constant: -0:115 0 (const int) -0:116 Sequence -0:116 move second child to first child (temp float) -0:116 'f' (temp float) -0:116 texture (global float) -0:116 'Scas' (uniform samplerCubeArrayShadow) -0:116 'i' (smooth in 4-component vector of float) -0:116 direct index (temp float) -0:116 'b' (temp 4-component vector of float) -0:116 Constant: -0:116 1 (const int) -0:117 move second child to first child (temp 4-component vector of int) -0:117 'c' (temp 4-component vector of int) -0:117 textureGrad (global 4-component vector of int) -0:117 'Isca' (uniform isamplerCubeArray) -0:117 'i' (smooth in 4-component vector of float) -0:117 Constant: -0:117 0.100000 -0:117 0.100000 -0:117 0.100000 -0:117 Constant: -0:117 0.200000 -0:117 0.200000 -0:117 0.200000 -0:129 Function Definition: bar23444( (global void) -0:129 Function Parameters: -0:? Sequence -0:132 Sequence -0:132 move second child to first child (temp float) -0:132 'a1' (temp float) -0:132 direct index (temp float) -0:132 direct index (temp 3-component vector of float) -0:132 'm43' (temp 4X3 matrix of float) -0:132 Constant: -0:132 3 (const int) -0:132 Constant: -0:132 1 (const int) -0:134 Sequence -0:134 move second child to first child (temp int) -0:134 'a2' (temp int) -0:134 Constant: -0:134 4 (const int) -0:135 add second child into first child (temp int) -0:135 'a2' (temp int) -0:135 Constant: -0:135 3 (const int) -0:136 add second child into first child (temp int) -0:136 'a2' (temp int) -0:136 Constant: -0:136 3 (const int) -0:137 Sequence -0:137 move second child to first child (temp float) -0:137 'b' (const (read only) float) -0:137 component-wise multiply (temp float) -0:137 Constant: -0:137 2.000000 -0:137 'a1' (temp float) -0:138 move second child to first child (temp float) -0:138 direct index (temp float) -0:138 'a' (global 3-component vector of float) -0:138 Constant: -0:138 0 (const int) -0:138 Constant: -0:138 -1.000000 -0:140 Constant: -0:140 0.000000 -0:141 Constant: -0:141 0.000000 -0:143 Constant: -0:143 1 (const int) -0:162 Function Definition: qux2( (global void) -0:162 Function Parameters: -0:? Sequence -0:165 imageAtomicCompSwap (global int) -0:165 'iimg2D' (layout(r32i ) uniform iimage2D) -0:165 Construct ivec2 (temp 2-component vector of int) -0:165 'i' (temp int) -0:165 'i' (temp int) -0:165 'i' (temp int) -0:165 'i' (temp int) -0:166 Sequence -0:166 move second child to first child (temp 4-component vector of int) -0:166 'pos' (temp 4-component vector of int) -0:166 imageLoad (global 4-component vector of int) -0:166 'iimg2D' (layout(r32i ) uniform iimage2D) -0:166 Construct ivec2 (temp 2-component vector of int) -0:166 'i' (temp int) -0:166 'i' (temp int) 0:? Linker Objects 0:? 'a' (global 3-component vector of float) 0:? 'b' (global float) diff --git a/Test/baseResults/130.vert.out b/Test/baseResults/130.vert.out index 7cfeb19d..1b3a0e19 100644 --- a/Test/baseResults/130.vert.out +++ b/Test/baseResults/130.vert.out @@ -269,23 +269,6 @@ ERROR: node is still EOpNull! 0:46 1 (const int) 0:46 Constant: 0:46 0.300000 -0:57 Function Definition: foo88( (global void) -0:57 Function Parameters: -0:? Sequence -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) -0:65 direct index (temp structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) -0:65 'gl_LightSource' (uniform 32-element array of structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation}) -0:65 Constant: -0:65 0 (const int) -0:66 far: direct index for structure (global float) -0:66 'gl_DepthRange' (uniform structure{global float near, global float far, global float diff}) -0:66 Constant: -0:66 1 (const int) -0:67 'gl_TexCoord' (smooth out 1-element array of 4-component vector of float TexCoord) -0:68 'gl_FogFragCoord' (smooth out float FogFragCoord) -0:69 'gl_FrontColor' (smooth out 4-component vector of float FrontColor) 0:? Linker Objects 0:? 'c' (uniform int) 0:? 'us2D' (uniform usampler2D) diff --git a/Test/baseResults/140.frag.out b/Test/baseResults/140.frag.out index 38c3b9f4..224cd30d 100644 --- a/Test/baseResults/140.frag.out +++ b/Test/baseResults/140.frag.out @@ -136,51 +136,6 @@ ERROR: node is still EOpNull! 0:22 'patch' (global float) 0:22 Constant: 0:22 3.100000 -0:38 Function Definition: foo( (global void) -0:38 Function Parameters: -0:40 Sequence -0:40 Sequence -0:40 move second child to first child (temp 2-component vector of float) -0:40 'r1' (temp 2-component vector of float) -0:40 modf (global 2-component vector of float) -0:40 vector swizzle (temp 2-component vector of float) -0:40 'v' (smooth in 4-component vector of float) -0:40 Sequence -0:40 Constant: -0:40 0 (const int) -0:40 Constant: -0:40 1 (const int) -0:40 vector swizzle (temp 2-component vector of float) -0:40 'v' (smooth in 4-component vector of float) -0:40 Sequence -0:40 Constant: -0:40 2 (const int) -0:40 Constant: -0:40 3 (const int) -0:41 Sequence -0:41 move second child to first child (temp 2-component vector of float) -0:41 'r2' (temp 2-component vector of float) -0:41 modf (global 2-component vector of float) -0:41 vector swizzle (temp 2-component vector of float) -0:41 'o' (out 4-component vector of float) -0:41 Sequence -0:41 Constant: -0:41 0 (const int) -0:41 Constant: -0:41 1 (const int) -0:41 vector swizzle (temp 2-component vector of float) -0:41 'o' (out 4-component vector of float) -0:41 Sequence -0:41 Constant: -0:41 2 (const int) -0:41 Constant: -0:41 3 (const int) -0:42 move second child to first child (temp float) -0:42 direct index (temp float) -0:42 'o' (out 4-component vector of float) -0:42 Constant: -0:42 2 (const int) -0:42 Function Call: fooi( (global float) 0:47 Sequence 0:47 move second child to first child (temp float) 0:47 'i1' (global float) @@ -198,13 +153,6 @@ ERROR: node is still EOpNull! 0:48 'i2' (global float) 0:48 Constant: 0:48 102.000000 -0:50 Function Definition: fooi( (global float) -0:50 Function Parameters: -0:52 Sequence -0:52 Branch: Return with expression -0:52 add (temp float) -0:52 'i1' (global float) -0:52 'i2' (global float) 0:? Linker Objects 0:? 'v' (smooth in 4-component vector of float) 0:? 'i' (smooth in 4-component vector of float) diff --git a/Test/baseResults/140.vert.out b/Test/baseResults/140.vert.out index 365a0aae..e7f88e32 100644 --- a/Test/baseResults/140.vert.out +++ b/Test/baseResults/140.vert.out @@ -178,71 +178,6 @@ ERROR: node is still EOpNull! 0:18 'gl_TexCoord' (smooth out 1-element array of 4-component vector of float TexCoord) 0:19 'gl_FogFragCoord' (smooth out float FogFragCoord) 0:20 'gl_FrontColor' (smooth out 4-component vector of float FrontColor) -0:48 Function Definition: foo( (global void) -0:48 Function Parameters: -0:50 Sequence -0:50 Sequence -0:50 move second child to first child (temp 4-component vector of float) -0:50 'v' (temp 4-component vector of float) -0:50 textureFetch (global 4-component vector of float) -0:50 's2dr' (uniform sampler2DRect) -0:50 'itloc2' (in 2-component vector of int) -0:51 add second child into first child (temp 4-component vector of float) -0:51 'v' (temp 4-component vector of float) -0:51 Constant: -0:51 0.000000 -0:52 add second child into first child (temp 4-component vector of float) -0:52 'v' (temp 4-component vector of float) -0:52 texture (global 4-component vector of float) -0:52 's2dr' (uniform sampler2DRect) -0:52 'tloc2' (in 2-component vector of float) -0:53 add second child into first child (temp 4-component vector of float) -0:53 'v' (temp 4-component vector of float) -0:53 Constant: -0:53 0.000000 -0:54 add second child into first child (temp 4-component vector of float) -0:54 'v' (temp 4-component vector of float) -0:54 texture (global float) -0:54 's2drs' (uniform sampler2DRectShadow) -0:54 'tloc3' (in 3-component vector of float) -0:55 add second child into first child (temp 4-component vector of float) -0:55 'v' (temp 4-component vector of float) -0:55 textureProj (global 4-component vector of float) -0:55 's2dr' (uniform sampler2DRect) -0:55 'tloc3' (in 3-component vector of float) -0:56 add second child into first child (temp 4-component vector of float) -0:56 'v' (temp 4-component vector of float) -0:56 textureProj (global 4-component vector of float) -0:56 's2dr' (uniform sampler2DRect) -0:56 'tloc4' (in 4-component vector of float) -0:57 add second child into first child (temp 4-component vector of float) -0:57 'v' (temp 4-component vector of float) -0:57 textureProjGradOffset (global 4-component vector of float) -0:57 's2dr' (uniform sampler2DRect) -0:57 'tloc4' (in 4-component vector of float) -0:57 Constant: -0:57 0.000000 -0:57 0.000000 -0:57 Constant: -0:57 0.000000 -0:57 0.000000 -0:57 Constant: -0:57 1 (const int) -0:57 2 (const int) -0:58 add second child into first child (temp 4-component vector of float) -0:58 'v' (temp 4-component vector of float) -0:58 textureProjGradOffset (global float) -0:58 's2drs' (uniform sampler2DRectShadow) -0:58 'tloc4' (in 4-component vector of float) -0:58 Constant: -0:58 0.000000 -0:58 0.000000 -0:58 Constant: -0:58 0.000000 -0:58 0.000000 -0:58 Constant: -0:58 1 (const int) -0:58 2 (const int) 0:? Linker Objects 0:? 'sbuf' (uniform isamplerBuffer) 0:? 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 offset=0 ) uniform int anonMem}) diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out index 0972fdcd..143de3b5 100644 --- a/Test/baseResults/150.frag.out +++ b/Test/baseResults/150.frag.out @@ -141,90 +141,6 @@ ERROR: node is still EOpNull! 0:18 'patch' (global float) 0:18 Constant: 0:18 3.100000 -0:31 Function Definition: barWxyz( (global void) -0:31 Function Parameters: -0:33 Sequence -0:33 Sequence -0:33 move second child to first child (temp 2-component vector of int) -0:33 't11' (temp 2-component vector of int) -0:33 textureSize (global 2-component vector of int) -0:33 'sms' (uniform sampler2DMS) -0:34 Sequence -0:34 move second child to first child (temp 2-component vector of int) -0:34 't12' (temp 2-component vector of int) -0:34 textureSize (global 2-component vector of int) -0:34 'isms' (uniform isampler2DMS) -0:35 Sequence -0:35 move second child to first child (temp 2-component vector of int) -0:35 't13' (temp 2-component vector of int) -0:35 textureSize (global 2-component vector of int) -0:35 'usms' (uniform usampler2DMS) -0:36 Sequence -0:36 move second child to first child (temp 3-component vector of int) -0:36 't21' (temp 3-component vector of int) -0:36 textureSize (global 3-component vector of int) -0:36 'smsa' (uniform sampler2DMSArray) -0:37 Sequence -0:37 move second child to first child (temp 3-component vector of int) -0:37 't22' (temp 3-component vector of int) -0:37 textureSize (global 3-component vector of int) -0:37 'ismsa' (uniform isampler2DMSArray) -0:38 Sequence -0:38 move second child to first child (temp 3-component vector of int) -0:38 't23' (temp 3-component vector of int) -0:38 textureSize (global 3-component vector of int) -0:38 'usmsa' (uniform usampler2DMSArray) -0:39 Sequence -0:39 move second child to first child (temp 4-component vector of float) -0:39 't31' (temp 4-component vector of float) -0:39 textureFetch (global 4-component vector of float) -0:39 'sms' (uniform sampler2DMS) -0:39 'p2' (flat in 2-component vector of int) -0:39 'samp' (flat in int) -0:40 Sequence -0:40 move second child to first child (temp 4-component vector of int) -0:40 't32' (temp 4-component vector of int) -0:40 textureFetch (global 4-component vector of int) -0:40 'isms' (uniform isampler2DMS) -0:40 'p2' (flat in 2-component vector of int) -0:40 'samp' (flat in int) -0:41 Sequence -0:41 move second child to first child (temp 4-component vector of uint) -0:41 't33' (temp 4-component vector of uint) -0:41 textureFetch (global 4-component vector of uint) -0:41 'usms' (uniform usampler2DMS) -0:41 'p2' (flat in 2-component vector of int) -0:41 Constant: -0:41 3 (const int) -0:42 Sequence -0:42 move second child to first child (temp 4-component vector of float) -0:42 't41' (temp 4-component vector of float) -0:42 textureFetch (global 4-component vector of float) -0:42 'smsa' (uniform sampler2DMSArray) -0:42 'p3' (flat in 3-component vector of int) -0:42 'samp' (flat in int) -0:43 Sequence -0:43 move second child to first child (temp 4-component vector of int) -0:43 't42' (temp 4-component vector of int) -0:43 textureFetch (global 4-component vector of int) -0:43 'ismsa' (uniform isampler2DMSArray) -0:43 Constant: -0:43 2 (const int) -0:43 2 (const int) -0:43 2 (const int) -0:43 'samp' (flat in int) -0:44 Sequence -0:44 move second child to first child (temp 4-component vector of uint) -0:44 't43' (temp 4-component vector of uint) -0:44 textureFetch (global 4-component vector of uint) -0:44 'usmsa' (uniform usampler2DMSArray) -0:44 'p3' (flat in 3-component vector of int) -0:44 'samp' (flat in int) -0:47 Function Definition: primitiveID( (global int) -0:47 Function Parameters: -0:49 Sequence -0:49 Branch: Return with expression -0:49 'gl_PrimitiveID' (flat in int PrimitiveID) 0:? Linker Objects 0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord) 0:? 'foo' (smooth in 4-component vector of float) diff --git a/Test/baseResults/150.geom.out b/Test/baseResults/150.geom.out index 48b7925f..dc5a41a2 100644 --- a/Test/baseResults/150.geom.out +++ b/Test/baseResults/150.geom.out @@ -255,39 +255,11 @@ ERROR: node is still EOpNull! 0:37 'gl_Layer' (layout(stream=0 ) out int Layer) 0:37 Constant: 0:37 2 (const int) -0:67 Function Definition: foo(i1; (global void) -0:67 Function Parameters: -0:67 'a' (in int) -0:69 Sequence -0:69 move second child to first child (temp 4-component vector of float) -0:69 a: direct index for structure (layout(stream=6 ) out 4-component vector of float) -0:69 'ouuaa6' (layout(stream=6 ) out block{layout(stream=6 ) out 4-component vector of float a}) -0:69 Constant: -0:69 0 (const int) -0:69 Constant: -0:69 1.000000 -0:69 1.000000 -0:69 1.000000 -0:69 1.000000 0:107 Sequence 0:107 move second child to first child (temp float) 0:107 'summ' (global float) 0:107 Constant: 0:107 11332.000000 -0:127 Function Definition: fooe1( (global void) -0:127 Function Parameters: -0:129 Sequence -0:129 move second child to first child (temp int) -0:129 'gl_ViewportIndex' (layout(stream=0 ) out int ViewportIndex) -0:129 Constant: -0:129 15 (const int) -0:134 Function Definition: fooe2( (global void) -0:134 Function Parameters: -0:136 Sequence -0:136 move second child to first child (temp int) -0:136 'gl_ViewportIndex' (layout(stream=0 ) out int ViewportIndex) -0:136 Constant: -0:136 15 (const int) 0:? Linker Objects 0:? 'fromV' (in 4-element array of block{in 3-component vector of float color}) 0:? 'toF' (layout(stream=0 ) out block{layout(stream=0 ) out 3-component vector of float color}) diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out index 28162b22..21fade77 100644 --- a/Test/baseResults/150.tesc.out +++ b/Test/baseResults/150.tesc.out @@ -1189,35 +1189,6 @@ vertices = 4 0:56 Barrier (global void) 0:59 Branch: Return 0:61 Barrier (global void) -0:67 Function Definition: foo( (global void) -0:67 Function Parameters: -0:69 Sequence -0:69 gl_PointSize: direct index for structure (out float PointSize) -0:69 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) -0:69 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) -0:69 Constant: -0:69 4 (const int) -0:69 Constant: -0:69 1 (const int) -0:71 Barrier (global void) -0:91 Function Definition: foop( (global void) -0:91 Function Parameters: -0:? Sequence -0:95 multiply second child into first child (temp 3-component vector of float) -0:95 'pv3' (noContraction temp 3-component vector of float) -0:95 'pv3' (noContraction temp 3-component vector of float) -0:96 move second child to first child (temp 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:96 fma (global 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:97 move second child to first child (temp double) -0:97 'd' (noContraction temp double) -0:97 fma (global double) -0:97 'd' (noContraction temp double) -0:97 'd' (noContraction temp double) -0:97 'd' (noContraction temp double) 0:8 Function Definition: main( (global void) 0:8 Function Parameters: 0:15 Function Definition: main( (global void) @@ -1279,41 +1250,6 @@ vertices = 4 0:26 indirect index (temp block{out 4-component vector of float Position gl_Position}) 0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:26 'gl_InvocationID' (in int InvocationID) -0:34 Function Definition: foo( (global void) -0:34 Function Parameters: -0:36 Sequence -0:36 Test condition and select (temp void) -0:36 Condition -0:36 logical-or (temp bool) -0:36 Compare Not Equal (temp bool) -0:36 Constant: -0:36 -0.625000 -0:36 -0.500000 -0:36 -0.375000 -0:36 -0.250000 -0:36 -0.375000 -0:36 -0.250000 -0:36 -0.125000 -0:36 0.000000 -0:36 direct index (layout(location=0 ) temp 2X4 matrix of double) -0:36 'vs_tcs_first' (layout(location=0 ) in 32-element array of 2X4 matrix of double) -0:36 Constant: -0:36 0 (const int) -0:37 Compare Not Equal (temp bool) -0:37 Constant: -0:37 0.375000 -0:37 0.500000 -0:37 0.625000 -0:37 0.750000 -0:37 0.625000 -0:37 0.750000 -0:37 0.875000 -0:37 -0.625000 -0:37 direct index (layout(location=12 ) temp 2X4 matrix of double) -0:37 'vs_tcs_last' (layout(location=12 ) in 32-element array of 2X4 matrix of double) -0:37 Constant: -0:37 0 (const int) -0:36 true case is null 0:? Linker Objects 0:? 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:? 'outa' (global 4-element array of int) diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out index 6ec58aa1..cca6abd7 100644 --- a/Test/baseResults/300.frag.out +++ b/Test/baseResults/300.frag.out @@ -592,131 +592,6 @@ ERROR: node is still EOpNull! 0:96 'c4D' (smooth temp lowp 4-component vector of float) 0:97 arc hyp. tangent (global lowp 3-component vector of float) 0:97 'c3D' (smooth in lowp 3-component vector of float) -0:108 Function Definition: foo( (global void) -0:108 Function Parameters: -0:110 Sequence -0:110 move second child to first child (temp lowp 4-component vector of float) -0:110 direct index (temp lowp 4-component vector of float) -0:110 'colors' (out 4-element array of lowp 4-component vector of float) -0:110 Constant: -0:110 2 (const int) -0:110 'c4D' (smooth temp lowp 4-component vector of float) -0:111 move second child to first child (temp lowp 4-component vector of float) -0:111 indirect index (temp lowp 4-component vector of float) -0:111 'colors' (out 4-element array of lowp 4-component vector of float) -0:111 'ic1D' (flat in mediump int) -0:111 'c4D' (smooth temp lowp 4-component vector of float) -0:117 Function Definition: foo13(struct-s-i1-s211; (global void) -0:117 Function Parameters: -0:117 'inSt2' (in structure{global mediump int i, global lowp sampler2D s}) -0:119 Sequence -0:119 Test condition and select (temp void) -0:119 Condition -0:119 Compare Equal (temp bool) -0:119 'st1' (uniform structure{global mediump int i, global lowp sampler2D s}) -0:119 'st2' (uniform structure{global mediump int i, global lowp sampler2D s}) -0:119 true case is null -0:120 Test condition and select (temp void) -0:120 Condition -0:120 Compare Not Equal (temp bool) -0:120 'st1' (uniform structure{global mediump int i, global lowp sampler2D s}) -0:120 'st2' (uniform structure{global mediump int i, global lowp sampler2D s}) -0:120 true case is null -0:121 Constant: -0:121 false (const bool) -0:122 move second child to first child (temp structure{global mediump int i, global lowp sampler2D s}) -0:122 'inSt2' (in structure{global mediump int i, global lowp sampler2D s}) -0:122 'st1' (uniform structure{global mediump int i, global lowp sampler2D s}) -0:123 Compare Equal (temp bool) -0:123 'inSt2' (in structure{global mediump int i, global lowp sampler2D s}) -0:123 'st1' (uniform structure{global mediump int i, global lowp sampler2D s}) -0:126 Function Definition: foo23( (global void) -0:126 Function Parameters: -0:128 Sequence -0:128 textureOffset (global lowp float) -0:128 's2DShadow' (uniform lowp sampler2DShadow) -0:128 'c3D' (smooth in lowp 3-component vector of float) -0:128 Constant: -0:128 -8 (const int) -0:128 7 (const int) -0:128 'c1D' (smooth in lowp float) -0:129 textureOffset (global lowp float) -0:129 's2DShadow' (uniform lowp sampler2DShadow) -0:129 'c3D' (smooth in lowp 3-component vector of float) -0:129 Constant: -0:129 -9 (const int) -0:129 8 (const int) -0:129 'c1D' (smooth in lowp float) -0:132 Function Definition: foo324( (global void) -0:132 Function Parameters: -0:134 Sequence -0:134 Sequence -0:134 move second child to first child (temp lowp float) -0:134 'p' (temp lowp float) -0:134 Constant: -0:134 210.712306 -0:135 add second child into first child (temp lowp float) -0:135 'p' (temp lowp float) -0:135 Constant: -0:135 0.389418 -0:136 add second child into first child (temp lowp float) -0:136 'p' (temp lowp float) -0:136 Constant: -0:136 5.000000 -0:137 add second child into first child (temp lowp float) -0:137 'p' (temp lowp float) -0:137 Constant: -0:137 13.000000 -0:138 Sequence -0:138 move second child to first child (temp lowp 3-component vector of float) -0:138 'c3' (temp lowp 3-component vector of float) -0:138 Constant: -0:138 -15.000000 -0:138 -2.000000 -0:138 39.000000 -0:139 add second child into first child (temp lowp 3-component vector of float) -0:139 'c3' (temp lowp 3-component vector of float) -0:139 Constant: -0:139 -1.000000 -0:139 -2.000000 -0:139 -3.000000 -0:140 add second child into first child (temp lowp 3-component vector of float) -0:140 'c3' (temp lowp 3-component vector of float) -0:140 Constant: -0:140 1.000000 -0:140 2.000000 -0:140 3.000000 -0:141 Sequence -0:141 move second child to first child (temp lowp 2-component vector of float) -0:141 'c2' (temp lowp 2-component vector of float) -0:141 Constant: -0:141 1.000000 -0:141 -3.000000 -0:142 add second child into first child (temp lowp 2-component vector of float) -0:142 'c2' (temp lowp 2-component vector of float) -0:142 Constant: -0:142 1.000000 -0:142 -3.000000 -0:143 add second child into first child (temp lowp 2-component vector of float) -0:143 'c2' (temp lowp 2-component vector of float) -0:143 Constant: -0:143 3.000000 -0:143 -8.544004 -0:144 add second child into first child (temp lowp 2-component vector of float) -0:144 'c2' (temp lowp 2-component vector of float) -0:144 Constant: -0:144 0.000000 -0:144 0.000000 -0:145 Sequence -0:145 move second child to first child (temp lowp 3X2 matrix of float) -0:145 'm32' (temp lowp 3X2 matrix of float) -0:145 Constant: -0:145 10.000000 -0:145 15.000000 -0:145 14.000000 -0:145 21.000000 -0:145 22.000000 -0:145 33.000000 0:? Linker Objects 0:? 's2D' (uniform lowp sampler2D) 0:? 's3D' (uniform lowp sampler3D) diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out index d35929f7..5f060cba 100644 --- a/Test/baseResults/300.vert.out +++ b/Test/baseResults/300.vert.out @@ -447,132 +447,6 @@ ERROR: node is still EOpNull! 0:68 Constant: 0:68 3.000000 0:68 4.000000 -0:71 Function Definition: newVFun( (global void) -0:71 Function Parameters: -0:73 Sequence -0:73 move second child to first child (temp highp 3-component vector of float) -0:73 'newV' (smooth out highp 3-component vector of float) -0:73 'v3' (in highp 3-component vector of float) -0:118 Function Definition: foo23( (global void) -0:118 Function Parameters: -0:120 Sequence -0:120 Sequence -0:120 move second child to first child (temp highp 2-component vector of int) -0:120 'x1' (temp highp 2-component vector of int) -0:120 textureSize (global highp 2-component vector of int, operation at lowp) -0:120 's2D' (uniform lowp sampler2D) -0:120 Constant: -0:120 2 (const int) -0:121 Constant: -0:121 0.000000 -0:122 Sequence -0:122 move second child to first child (temp highp 3-component vector of int) -0:122 'x3' (temp highp 3-component vector of int) -0:122 textureSize (global highp 3-component vector of int, operation at lowp) -0:122 's2DAS' (uniform lowp sampler2DArrayShadow) -0:122 Constant: -0:122 -1 (const int) -0:123 Constant: -0:123 0.000000 -0:124 Sequence -0:124 move second child to first child (temp highp 4-component vector of float) -0:124 'x4' (temp highp 4-component vector of float) -0:124 texture (global lowp 4-component vector of float, operation at highp) -0:124 's2D' (uniform lowp sampler2D) -0:124 'c2D' (in highp 2-component vector of float) -0:125 Constant: -0:125 0.000000 -0:126 Sequence -0:126 move second child to first child (temp highp 4-component vector of float) -0:126 'x5' (temp highp 4-component vector of float) -0:126 textureProjOffset (global lowp 4-component vector of float) -0:126 's3D' (uniform lowp sampler3D) -0:126 Constant: -0:126 0.200000 -0:126 0.200000 -0:126 0.200000 -0:126 0.200000 -0:126 Constant: -0:126 1 (const int) -0:126 1 (const int) -0:126 1 (const int) -0:127 Constant: -0:127 0.000000 -0:128 Sequence -0:128 move second child to first child (temp highp float) -0:128 'x6' (temp highp float) -0:128 textureProjGradOffset (global lowp float, operation at highp) -0:128 's2DS' (uniform lowp sampler2DShadow) -0:128 'invIn' (invariant in highp 4-component vector of float) -0:128 Constant: -0:128 4.200000 -0:128 4.200000 -0:128 Constant: -0:128 5.300000 -0:128 5.300000 -0:128 Constant: -0:128 1 (const int) -0:128 1 (const int) -0:137 Function Definition: foo2349( (global void) -0:137 Function Parameters: -0:139 Sequence -0:139 Sequence -0:139 move second child to first child (temp 3-element array of highp float) -0:139 'x' (temp 3-element array of highp float) -0:139 Constant: -0:139 1.000000 -0:139 2.000000 -0:139 3.000000 -0:140 Sequence -0:140 move second child to first child (temp 3-element array of highp float) -0:140 'y' (temp 3-element array of highp float) -0:140 'x' (temp 3-element array of highp float) -0:141 Sequence -0:141 move second child to first child (temp 3-element array of highp float) -0:141 'z' (temp 3-element array of highp float) -0:141 'x' (temp 3-element array of highp float) -0:143 move second child to first child (temp 3-element array of highp float) -0:143 'w' (temp 3-element array of highp float) -0:143 'y' (temp 3-element array of highp float) -0:155 Function Definition: gggf(f1; (global highp int) -0:155 Function Parameters: -0:155 'f' (in highp float) -0:155 Sequence -0:155 Branch: Return with expression -0:155 Constant: -0:155 2 (const int) -0:158 Function Definition: agggf(f1; (global highp int) -0:158 Function Parameters: -0:158 'f' (in highp float) -0:158 Sequence -0:158 Branch: Return with expression -0:158 Constant: -0:158 2 (const int) -0:178 Function Definition: fooDeeparray( (global void) -0:178 Function Parameters: -0:181 Sequence -0:181 Sequence -0:180 move second child to first child (temp 3-element array of highp float) -0:180 'x' (temp 3-element array of highp float) -0:180 Constant: -0:180 1.000000 -0:180 2.000000 -0:180 3.000000 -0:181 move second child to first child (temp 4-element array of highp float) -0:181 'y' (temp 4-element array of highp float) -0:181 Constant: -0:181 1.000000 -0:181 2.000000 -0:181 3.000000 -0:181 4.000000 -0:183 move second child to first child (temp 3-element array of highp float) -0:183 'xp' (temp 3-element array of highp float) -0:183 'x' (temp 3-element array of highp float) -0:184 move second child to first child (temp 4-element array of highp float) -0:184 'yp' (temp 4-element array of highp float) -0:184 'y' (temp 4-element array of highp float) -0:185 'xp' (temp 3-element array of highp float) -0:186 'yp' (temp 4-element array of highp float) 0:? Linker Objects 0:? 'm43' (uniform highp 4X3 matrix of float) 0:? 'm33' (uniform highp 3X3 matrix of float) diff --git a/Test/baseResults/300scope.vert.out b/Test/baseResults/300scope.vert.out index d2428e0d..e340cf6a 100644 --- a/Test/baseResults/300scope.vert.out +++ b/Test/baseResults/300scope.vert.out @@ -153,16 +153,6 @@ ERROR: node is still EOpNull! 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' (in highp int) -0:25 Function Definition: cos(f1; (global highp float) -0:25 Function Parameters: -0:25 'x' (in highp float) -0:27 Sequence -0:27 Branch: Return -0:29 Function Definition: radians(b1; (global bool) -0:29 Function Parameters: -0:29 'x' (in bool) -0:31 Sequence -0:31 Branch: Return 0:36 Function Definition: main( (global void) 0:36 Function Parameters: 0:? Sequence diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out index 9a5e4e89..a5be10e1 100644 --- a/Test/baseResults/310.comp.out +++ b/Test/baseResults/310.comp.out @@ -536,340 +536,6 @@ ERROR: node is still EOpNull! 0:36 Constant: 0:36 1 (const uint) 0:36 'gl_LocalInvocationIndex' (in highp uint LocalInvocationIndex) -0:59 Function Definition: foo( (global void) -0:59 Function Parameters: -0:61 Sequence -0:61 move second child to first child (temp highp float) -0:61 direct index (layout(column_major shared ) temp highp float) -0:61 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:61 'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:61 Constant: -0:61 1 (const int) -0:61 Constant: -0:61 2 (const int) -0:61 Constant: -0:61 4.700000 -0:62 array length (temp int) -0:62 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:62 'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:62 Constant: -0:62 1 (const int) -0:63 Pre-Increment (temp highp 4-component vector of float) -0:63 's' (shared highp 4-component vector of float) -0:84 Function Definition: qux( (global void) -0:84 Function Parameters: -0:86 Sequence -0:86 Sequence -0:86 move second child to first child (temp highp int) -0:86 'i' (temp highp int) -0:86 Constant: -0:86 4 (const int) -0:87 imageAtomicCompSwap (global highp int) -0:87 'iimg2D' (layout(r32i ) uniform highp iimage2D) -0:87 Construct ivec2 (temp highp 2-component vector of int) -0:87 'i' (temp highp int) -0:87 'i' (temp highp int) -0:87 'i' (temp highp int) -0:87 'i' (temp highp int) -0:88 imageAtomicAdd (global highp uint) -0:88 'uimg2D' (layout(r32ui ) uniform mediump uimage2D) -0:88 Construct ivec2 (temp highp 2-component vector of int) -0:88 'i' (temp highp int) -0:88 'i' (temp highp int) -0:88 Convert int to uint (temp highp uint) -0:88 'i' (temp highp int) -0:89 imageAtomicMin (global highp int) -0:89 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D) -0:89 Construct ivec2 (temp highp 2-component vector of int) -0:89 'i' (temp highp int) -0:89 'i' (temp highp int) -0:89 'i' (temp highp int) -0:90 Constant: -0:90 0.000000 -0:91 Sequence -0:91 move second child to first child (temp highp 4-component vector of int) -0:91 'pos' (temp highp 4-component vector of int) -0:91 imageLoad (global highp 4-component vector of int) -0:91 'iimg2D' (layout(r32i ) uniform highp iimage2D) -0:91 Construct ivec2 (temp highp 2-component vector of int) -0:91 'i' (temp highp int) -0:91 'i' (temp highp int) -0:92 imageStore (global highp void) -0:92 'ii2da' (writeonly uniform highp iimage2DArray) -0:92 Construct ivec3 (temp 3-component vector of int) -0:92 'i' (temp highp int) -0:92 'i' (temp highp int) -0:92 'i' (temp highp int) -0:92 Constant: -0:92 0 (const int) -0:92 0 (const int) -0:92 0 (const int) -0:92 0 (const int) -0:93 imageLoad (global mediump 4-component vector of float) -0:93 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D) -0:93 Construct ivec2 (temp mediump 2-component vector of int) -0:93 'i' (temp highp int) -0:93 'i' (temp highp int) -0:94 imageLoad (global highp 4-component vector of int) -0:94 'ii2da' (writeonly uniform highp iimage2DArray) -0:94 Construct ivec3 (temp highp 3-component vector of int) -0:94 'i' (temp highp int) -0:94 'i' (temp highp int) -0:94 'i' (temp highp int) -0:100 Function Definition: passr(iI21; (global void) -0:100 Function Parameters: -0:100 'image' (coherent readonly in highp iimage2D) -0:107 Function Definition: passrc( (global void) -0:107 Function Parameters: -0:109 Sequence -0:109 Function Call: passr(iI21; (global void) -0:109 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D) -0:110 Function Call: passr(iI21; (global void) -0:110 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D) -0:111 Function Call: passr(iI21; (global void) -0:111 'iimg2D' (layout(r32i ) uniform highp iimage2D) -0:123 Function Definition: func(au1; (global highp uint) -0:123 Function Parameters: -0:123 'c' (in highp atomic_uint) -0:125 Sequence -0:125 Branch: Return with expression -0:125 AtomicCounterIncrement (global highp uint) -0:125 'c' (in highp atomic_uint) -0:128 Function Definition: func2(au1; (global highp uint) -0:128 Function Parameters: -0:128 'c' (out highp atomic_uint) -0:130 Sequence -0:130 Branch: Return with expression -0:130 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint) -0:131 Branch: Return with expression -0:131 AtomicCounter (global highp uint) -0:131 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint) -0:134 Function Definition: mainAC( (global void) -0:134 Function Parameters: -0:? Sequence -0:137 Sequence -0:137 move second child to first child (temp highp uint) -0:137 'val' (temp highp uint) -0:137 AtomicCounter (global highp uint) -0:137 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint) -0:138 AtomicCounterDecrement (global highp uint) -0:138 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint) -0:146 Function Definition: opac( (global void) -0:146 Function Parameters: -0:? Sequence -0:149 indirect index (temp highp int) -0:149 'a' (temp 3-element array of highp int) -0:149 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint) -0:150 direct index (layout(binding=2 offset=4 ) temp highp atomic_uint) -0:150 'countArr' (layout(binding=2 offset=4 ) uniform 4-element array of highp atomic_uint) -0:150 Constant: -0:150 2 (const int) -0:151 indirect index (layout(binding=2 offset=4 ) temp highp atomic_uint) -0:151 'countArr' (layout(binding=2 offset=4 ) uniform 4-element array of highp atomic_uint) -0:151 'i' (uniform highp int) -0:157 Function Definition: atoms( (global void) -0:157 Function Parameters: -0:159 Sequence -0:159 Sequence -0:159 move second child to first child (temp highp int) -0:159 'origi' (temp highp int) -0:159 AtomicAdd (global highp int) -0:159 'atomi' (shared highp int) -0:159 Constant: -0:159 3 (const int) -0:160 Sequence -0:160 move second child to first child (temp highp uint) -0:160 'origu' (temp highp uint) -0:160 AtomicAnd (global highp uint) -0:160 'atomu' (shared highp uint) -0:160 Constant: -0:160 7 (const uint) -0:161 move second child to first child (temp highp int) -0:161 'origi' (temp highp int) -0:161 AtomicExchange (global highp int) -0:161 'atomi' (shared highp int) -0:161 Constant: -0:161 4 (const int) -0:162 move second child to first child (temp highp uint) -0:162 'origu' (temp highp uint) -0:162 AtomicCompSwap (global highp uint) -0:162 'atomu' (shared highp uint) -0:162 Constant: -0:162 10 (const uint) -0:162 Constant: -0:162 8 (const uint) -0:191 Function Definition: foowo( (global void) -0:191 Function Parameters: -0:? Sequence -0:194 move second child to first child (temp highp float) -0:194 'g' (temp highp float) -0:194 direct index (layout(column_major shared ) temp highp float) -0:194 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:194 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:194 Constant: -0:194 1 (const int) -0:194 Constant: -0:194 2 (const int) -0:195 Sequence -0:195 move second child to first child (temp highp float) -0:195 'f' (temp highp float) -0:195 direct index (layout(column_major shared ) temp highp float) -0:195 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:195 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:195 Constant: -0:195 1 (const int) -0:195 Constant: -0:195 2 (const int) -0:196 Pre-Increment (temp highp float) -0:196 direct index (layout(column_major shared ) temp highp float) -0:196 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:196 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:196 Constant: -0:196 1 (const int) -0:196 Constant: -0:196 2 (const int) -0:197 Post-Decrement (temp highp float) -0:197 direct index (layout(column_major shared ) temp highp float) -0:197 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:197 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:197 Constant: -0:197 1 (const int) -0:197 Constant: -0:197 2 (const int) -0:198 add (temp highp float) -0:198 'f' (temp highp float) -0:198 direct index (layout(column_major shared ) temp highp float) -0:198 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:198 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:198 Constant: -0:198 1 (const int) -0:198 Constant: -0:198 2 (const int) -0:199 subtract (temp highp float) -0:199 direct index (layout(column_major shared ) temp highp float) -0:199 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:199 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:199 Constant: -0:199 1 (const int) -0:199 Constant: -0:199 2 (const int) -0:199 'f' (temp highp float) -0:201 Test condition and select (temp highp float) -0:201 Condition -0:201 'b' (temp bool) -0:201 true case -0:201 'f' (temp highp float) -0:201 false case -0:201 direct index (layout(column_major shared ) temp highp float) -0:201 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:201 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:201 Constant: -0:201 1 (const int) -0:201 Constant: -0:201 2 (const int) -0:202 Test condition and select (temp highp float) -0:202 Condition -0:202 'b' (temp bool) -0:202 true case -0:202 direct index (layout(column_major shared ) temp highp float) -0:202 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:202 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:202 Constant: -0:202 1 (const int) -0:202 Constant: -0:202 2 (const int) -0:202 false case -0:202 'f' (temp highp float) -0:203 Test condition and select (temp void) -0:203 Condition -0:203 Compare Equal (temp bool) -0:203 'f' (temp highp float) -0:203 direct index (layout(column_major shared ) temp highp float) -0:203 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:203 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:203 Constant: -0:203 1 (const int) -0:203 Constant: -0:203 2 (const int) -0:203 true case -0:204 Pre-Increment (temp highp float) -0:204 'f' (temp highp float) -0:205 Test condition and select (temp void) -0:205 Condition -0:205 Compare Greater Than or Equal (temp bool) -0:205 'f' (temp highp float) -0:205 direct index (layout(column_major shared ) temp highp float) -0:205 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:205 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:205 Constant: -0:205 1 (const int) -0:205 Constant: -0:205 2 (const int) -0:205 true case -0:206 Pre-Increment (temp highp float) -0:206 'f' (temp highp float) -0:207 move second child to first child (temp highp float) -0:207 'f' (temp highp float) -0:207 direct index (temp highp float) -0:207 Construct vec3 (temp highp 3-component vector of float) -0:207 direct index (layout(column_major shared ) temp highp float) -0:207 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:207 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:207 Constant: -0:207 1 (const int) -0:207 Constant: -0:207 2 (const int) -0:207 Constant: -0:207 0 (const int) -0:208 Bitwise not (temp highp int) -0:208 value: direct index for structure (layout(column_major shared ) buffer highp int) -0:208 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:208 Constant: -0:208 0 (const int) -0:209 move second child to first child (temp highp float) -0:209 direct index (layout(column_major shared ) temp highp float) -0:209 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:209 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:209 Constant: -0:209 1 (const int) -0:209 Constant: -0:209 2 (const int) -0:209 Constant: -0:209 3.400000 -0:218 Function Definition: foomultio( (global void) -0:218 Function Parameters: -0:? Sequence -0:221 move second child to first child (temp highp float) -0:221 'g' (temp highp float) -0:221 direct index (layout(column_major shared ) temp highp float) -0:221 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:221 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:221 Constant: -0:221 1 (const int) -0:221 Constant: -0:221 2 (const int) -0:222 Bitwise not (temp highp int) -0:222 value: direct index for structure (layout(column_major shared ) buffer highp int) -0:222 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:222 Constant: -0:222 0 (const int) -0:223 move second child to first child (temp highp float) -0:223 direct index (layout(column_major shared ) temp highp float) -0:223 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) -0:223 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:223 Constant: -0:223 1 (const int) -0:223 Constant: -0:223 2 (const int) -0:223 Constant: -0:223 3.400000 -0:224 move second child to first child (temp highp int) -0:224 value: direct index for structure (layout(column_major shared ) buffer highp int) -0:224 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) -0:224 Constant: -0:224 0 (const int) -0:224 Constant: -0:224 2 (const int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' (const highp 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out index 66d6ae00..34cae953 100644 --- a/Test/baseResults/310.frag.out +++ b/Test/baseResults/310.frag.out @@ -1125,677 +1125,6 @@ ERROR: node is still EOpNull! 0:34 0.100000 0:34 Construct ivec2 (temp highp 2-component vector of int) 0:34 'i' (uniform mediump int) -0:38 Function Definition: foo23( (global void) -0:38 Function Parameters: -0:? Sequence -0:42 textureProjGradOffset (global highp 4-component vector of uint) -0:42 'usamp2d' (uniform highp usampler2D) -0:42 'outp' (out mediump 4-component vector of float) -0:42 Constant: -0:42 0.000000 -0:42 0.000000 -0:42 Constant: -0:42 0.000000 -0:42 0.000000 -0:42 Convert float to int (temp highp 2-component vector of int) -0:42 'c2D' (smooth in mediump 2-component vector of float) -0:43 textureProjGradOffset (global highp 4-component vector of uint) -0:43 'usamp2d' (uniform highp usampler2D) -0:43 'outp' (out mediump 4-component vector of float) -0:43 Constant: -0:43 0.000000 -0:43 0.000000 -0:43 Constant: -0:43 0.000000 -0:43 0.000000 -0:43 Constant: -0:43 3 (const int) -0:43 4 (const int) -0:44 textureProjGradOffset (global highp 4-component vector of uint) -0:44 'usamp2d' (uniform highp usampler2D) -0:44 'outp' (out mediump 4-component vector of float) -0:44 Constant: -0:44 0.000000 -0:44 0.000000 -0:44 Constant: -0:44 0.000000 -0:44 0.000000 -0:44 Constant: -0:44 15 (const int) -0:44 16 (const int) -0:45 textureProjGradOffset (global highp 4-component vector of uint) -0:45 'usamp2d' (uniform highp usampler2D) -0:45 'outp' (out mediump 4-component vector of float) -0:45 Constant: -0:45 0.000000 -0:45 0.000000 -0:45 Constant: -0:45 0.000000 -0:45 0.000000 -0:45 Constant: -0:45 -10 (const int) -0:45 20 (const int) -0:47 Test condition and select (temp void) -0:47 Condition -0:47 'gl_HelperInvocation' (in bool HelperInvocation) -0:47 true case -0:48 Pre-Increment (temp mediump 4-component vector of float) -0:48 'outp' (out mediump 4-component vector of float) -0:50 Sequence -0:50 move second child to first child (temp mediump int) -0:50 'sum' (temp mediump int) -0:50 Constant: -0:50 32 (const int) -0:58 move second child to first child (temp bool) -0:58 'b1' (temp bool) -0:58 mix (global bool) -0:58 'b2' (temp bool) -0:58 'b3' (temp bool) -0:58 'b' (temp bool) -0:59 Sequence -0:59 move second child to first child (temp mediump 3-component vector of uint) -0:59 'um3' (temp mediump 3-component vector of uint) -0:59 mix (global mediump 3-component vector of uint) -0:59 Construct uvec3 (temp mediump 3-component vector of uint) -0:59 Convert int to uint (temp mediump uint) -0:59 'i' (uniform mediump int) -0:59 Construct uvec3 (temp mediump 3-component vector of uint) -0:59 Convert int to uint (temp mediump uint) -0:59 'i' (uniform mediump int) -0:59 Construct bvec3 (temp 3-component vector of bool) -0:59 'b' (temp bool) -0:60 Sequence -0:60 move second child to first child (temp mediump 4-component vector of int) -0:60 'im4' (temp mediump 4-component vector of int) -0:60 mix (global mediump 4-component vector of int) -0:60 Construct ivec4 (temp mediump 4-component vector of int) -0:60 'i' (uniform mediump int) -0:60 Construct ivec4 (temp mediump 4-component vector of int) -0:60 'i' (uniform mediump int) -0:60 Construct bvec4 (temp 4-component vector of bool) -0:60 'b' (temp bool) -0:98 Function Definition: foots( (global void) -0:98 Function Parameters: -0:100 Sequence -0:100 Sequence -0:100 move second child to first child (temp highp 2-component vector of int) -0:100 'v2' (temp highp 2-component vector of int) -0:100 textureSize (global highp 2-component vector of int) -0:100 's1' (layout(binding=3 ) uniform highp sampler2D) -0:100 Constant: -0:100 2 (const int) -0:101 Sequence -0:101 move second child to first child (temp highp 3-component vector of int) -0:101 'v3' (temp highp 3-component vector of int) -0:101 textureSize (global highp 3-component vector of int) -0:101 'isamp2DA' (uniform highp isampler2DArray) -0:101 Constant: -0:101 3 (const int) -0:102 move second child to first child (temp highp 2-component vector of int) -0:102 'v2' (temp highp 2-component vector of int) -0:102 textureSize (global highp 2-component vector of int, operation at mediump) -0:102 's2dms' (uniform mediump sampler2DMS) -0:103 move second child to first child (temp highp 2-component vector of int) -0:103 'v2' (temp highp 2-component vector of int) -0:103 imageQuerySize (global highp 2-component vector of int) -0:103 'i2D' (layout(binding=2 ) writeonly uniform highp image2D) -0:104 move second child to first child (temp highp 3-component vector of int) -0:104 'v3' (temp highp 3-component vector of int) -0:104 imageQuerySize (global highp 3-component vector of int, operation at mediump) -0:104 'i3D' (layout(binding=4 ) readonly uniform mediump image3D) -0:105 move second child to first child (temp highp 2-component vector of int) -0:105 'v2' (temp highp 2-component vector of int) -0:105 imageQuerySize (global highp 2-component vector of int, operation at mediump) -0:105 'iCube' (layout(binding=5 ) uniform mediump imageCube) -0:106 move second child to first child (temp highp 3-component vector of int) -0:106 'v3' (temp highp 3-component vector of int) -0:106 imageQuerySize (global highp 3-component vector of int, operation at mediump) -0:106 'i2DA' (layout(binding=6 ) uniform mediump image2DArray) -0:107 move second child to first child (temp highp 2-component vector of int) -0:107 'v2' (temp highp 2-component vector of int) -0:107 imageQuerySize (global highp 2-component vector of int, operation at mediump) -0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D) -0:165 Function Definition: fooIO( (global void) -0:165 Function Parameters: -0:167 Sequence -0:167 Sequence -0:167 move second child to first child (temp mediump 4-component vector of float) -0:167 'v' (temp mediump 4-component vector of float) -0:167 add (temp mediump 4-component vector of float) -0:167 v: direct index for structure (in mediump 4-component vector of float) -0:167 'inbinst' (in block{in mediump int a, in mediump 4-component vector of float v, in structure{global mediump int b} s}) -0:167 Constant: -0:167 1 (const int) -0:167 vAnon: direct index for structure (layout(location=13 ) centroid in mediump 4-component vector of float) -0:167 'anon@0' (in block{layout(location=12 ) in mediump int aAnon, layout(location=13 ) centroid in mediump 4-component vector of float vAnon}) -0:167 Constant: -0:167 1 (const uint) -0:168 vector scale second child into first child (temp mediump 4-component vector of float) -0:168 'v' (temp mediump 4-component vector of float) -0:168 f: direct index for structure (in mediump float) -0:168 direct index (temp block{in mediump float f}) -0:168 'arrayedInst' (in 4-element array of block{in mediump float f}) -0:168 Constant: -0:168 2 (const int) -0:168 Constant: -0:168 0 (const int) -0:169 vector scale second child into first child (temp mediump 4-component vector of float) -0:169 'v' (temp mediump 4-component vector of float) -0:169 f: direct index for structure (in mediump float) -0:169 indirect index (temp block{in mediump float f}) -0:169 'arrayedInst' (in 4-element array of block{in mediump float f}) -0:169 'i' (uniform mediump int) -0:169 Constant: -0:169 0 (const int) -0:179 Function Definition: foo_IO( (global void) -0:179 Function Parameters: -0:181 Sequence -0:181 move second child to first child (temp highp float) -0:181 'gl_FragDepth' (gl_FragDepth highp float FragDepth) -0:181 Constant: -0:181 0.200000 -0:182 'gl_Layer' (flat in highp int Layer) -0:183 'gl_PrimitiveID' (flat in highp int PrimitiveID) -0:184 Sequence -0:184 move second child to first child (temp bool) -0:184 'f' (temp bool) -0:184 'gl_FrontFacing' (gl_FrontFacing bool Face) -0:191 Function Definition: foo_GS( (global void) -0:191 Function Parameters: -0:193 Sequence -0:193 Sequence -0:193 move second child to first child (temp highp int) -0:193 'l' (temp highp int) -0:193 'gl_Layer' (flat in highp int Layer) -0:194 Sequence -0:194 move second child to first child (temp highp int) -0:194 'p' (temp highp int) -0:194 'gl_PrimitiveID' (flat in highp int PrimitiveID) -0:207 Function Definition: pfooBad( (global void) -0:207 Function Parameters: -0:? Sequence -0:210 move second child to first child (temp mediump 2-component vector of float) -0:210 'h' (noContraction temp mediump 2-component vector of float) -0:210 fma (global mediump 2-component vector of float) -0:210 'inf' (smooth in mediump 2-component vector of float) -0:210 'ing' (smooth in mediump 2-component vector of float) -0:210 'h' (noContraction temp mediump 2-component vector of float) -0:211 textureGatherOffset (global highp 4-component vector of float) -0:211 direct index (temp highp sampler2D) -0:211 'sArray' (uniform 4-element array of highp sampler2D) -0:211 Constant: -0:211 0 (const int) -0:211 Constant: -0:211 0.100000 -0:211 0.100000 -0:211 Convert float to int (temp highp 2-component vector of int) -0:211 'inf' (smooth in mediump 2-component vector of float) -0:212 textureGatherOffsets (global highp 4-component vector of float) -0:212 direct index (temp highp sampler2D) -0:212 'sArray' (uniform 4-element array of highp sampler2D) -0:212 Constant: -0:212 0 (const int) -0:212 Constant: -0:212 0.100000 -0:212 0.100000 -0:212 Constant: -0:212 0 (const int) -0:212 0 (const int) -0:212 0 (const int) -0:212 0 (const int) -0:212 0 (const int) -0:212 0 (const int) -0:212 0 (const int) -0:212 0 (const int) -0:217 Function Definition: pfoo( (global void) -0:217 Function Parameters: -0:? Sequence -0:220 move second child to first child (temp mediump 2-component vector of float) -0:220 'h' (noContraction temp mediump 2-component vector of float) -0:220 fma (global mediump 2-component vector of float) -0:220 'inf' (smooth in mediump 2-component vector of float) -0:220 'ing' (smooth in mediump 2-component vector of float) -0:220 'h' (noContraction temp mediump 2-component vector of float) -0:221 textureGatherOffset (global highp 4-component vector of float) -0:221 direct index (temp highp sampler2D) -0:221 'sArray' (uniform 4-element array of highp sampler2D) -0:221 Constant: -0:221 0 (const int) -0:221 Constant: -0:221 0.100000 -0:221 0.100000 -0:221 Convert float to int (temp highp 2-component vector of int) -0:221 'inf' (smooth in mediump 2-component vector of float) -0:222 textureGatherOffsets (global highp 4-component vector of float) -0:222 direct index (temp highp sampler2D) -0:222 'sArray' (uniform 4-element array of highp sampler2D) -0:222 Constant: -0:222 0 (const int) -0:222 Constant: -0:222 0.100000 -0:222 0.100000 -0:222 Constant: -0:222 0 (const int) -0:222 0 (const int) -0:222 0 (const int) -0:222 0 (const int) -0:222 0 (const int) -0:222 0 (const int) -0:222 0 (const int) -0:222 0 (const int) -0:223 textureGatherOffsets (global highp 4-component vector of float) -0:223 direct index (temp highp sampler2D) -0:223 'sArray' (uniform 4-element array of highp sampler2D) -0:223 Constant: -0:223 0 (const int) -0:223 Constant: -0:223 0.100000 -0:223 0.100000 -0:223 'offsets' (uniform 4-element array of mediump 2-component vector of int) -0:248 Function Definition: CAT( (global void) -0:248 Function Parameters: -0:250 Sequence -0:250 Sequence -0:250 move second child to first child (temp highp 4-component vector of float) -0:250 'b4' (temp highp 4-component vector of float) -0:250 texture (global highp 4-component vector of float) -0:250 'CA4' (uniform highp samplerCubeArray) -0:250 Constant: -0:250 0.500000 -0:250 0.500000 -0:250 0.500000 -0:250 0.500000 -0:250 Constant: -0:250 0.240000 -0:251 Sequence -0:251 move second child to first child (temp highp 4-component vector of int) -0:251 'b6' (temp highp 4-component vector of int) -0:251 texture (global highp 4-component vector of int) -0:251 'CA6' (uniform highp isamplerCubeArray) -0:251 Constant: -0:251 0.500000 -0:251 0.500000 -0:251 0.500000 -0:251 0.500000 -0:251 Constant: -0:251 0.260000 -0:252 Sequence -0:252 move second child to first child (temp highp 4-component vector of uint) -0:252 'b7' (temp highp 4-component vector of uint) -0:252 texture (global highp 4-component vector of uint) -0:252 'CA7' (uniform highp usamplerCubeArray) -0:252 Constant: -0:252 0.500000 -0:252 0.500000 -0:252 0.500000 -0:252 0.500000 -0:252 Constant: -0:252 0.270000 -0:255 Function Definition: badSample( (global void) -0:255 Function Parameters: -0:257 Sequence -0:257 Sequence -0:257 move second child to first child (temp lowp int) -0:257 'a1' (temp lowp int) -0:257 'gl_SampleID' (flat in lowp int SampleId) -0:258 Sequence -0:258 move second child to first child (temp mediump 2-component vector of float) -0:258 'a2' (temp mediump 2-component vector of float) -0:258 'gl_SamplePosition' (smooth in mediump 2-component vector of float SamplePosition) -0:259 Sequence -0:259 move second child to first child (temp highp int) -0:259 'a3' (temp highp int) -0:259 direct index (flat temp highp int SampleMaskIn) -0:259 'gl_SampleMaskIn' (flat in 1-element array of highp int SampleMaskIn) -0:259 Constant: -0:259 0 (const int) -0:260 move second child to first child (temp highp int) -0:260 direct index (temp highp int SampleMaskIn) -0:260 'gl_SampleMask' (out 1-element array of highp int SampleMaskIn) -0:260 Constant: -0:260 0 (const int) -0:260 'a3' (temp highp int) -0:261 Sequence -0:261 move second child to first child (temp mediump int) -0:261 'n' (temp mediump int) -0:261 'gl_NumSamples' (uniform lowp int) -0:268 Function Definition: goodSample( (global void) -0:268 Function Parameters: -0:270 Sequence -0:270 Sequence -0:270 move second child to first child (temp lowp int) -0:270 'a1' (temp lowp int) -0:270 'gl_SampleID' (flat in lowp int SampleId) -0:271 Sequence -0:271 move second child to first child (temp mediump 2-component vector of float) -0:271 'a2' (temp mediump 2-component vector of float) -0:271 'gl_SamplePosition' (smooth in mediump 2-component vector of float SamplePosition) -0:272 Sequence -0:272 move second child to first child (temp highp int) -0:272 'a3' (temp highp int) -0:272 direct index (flat temp highp int SampleMaskIn) -0:272 'gl_SampleMaskIn' (flat in 1-element array of highp int SampleMaskIn) -0:272 Constant: -0:272 0 (const int) -0:273 move second child to first child (temp highp int) -0:273 direct index (temp highp int SampleMaskIn) -0:273 'gl_SampleMask' (out 1-element array of highp int SampleMaskIn) -0:273 Constant: -0:273 0 (const int) -0:273 'a3' (temp highp int) -0:274 Sequence -0:274 move second child to first child (temp mediump int) -0:274 'n1' (temp mediump int) -0:274 Constant: -0:274 4 (const int) -0:275 Sequence -0:275 move second child to first child (temp mediump int) -0:275 'n2' (temp mediump int) -0:275 'gl_NumSamples' (uniform lowp int) -0:283 Function Definition: badImageAtom( (global void) -0:283 Function Parameters: -0:? Sequence -0:289 imageAtomicAdd (global highp int) -0:289 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:289 'P' (uniform mediump 2-component vector of int) -0:289 'dati' (temp mediump int) -0:290 imageAtomicAdd (global highp uint) -0:290 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:290 'P' (uniform mediump 2-component vector of int) -0:290 'datu' (temp mediump uint) -0:291 imageAtomicMin (global highp int) -0:291 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:291 'P' (uniform mediump 2-component vector of int) -0:291 'dati' (temp mediump int) -0:292 imageAtomicMin (global highp uint) -0:292 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:292 'P' (uniform mediump 2-component vector of int) -0:292 'datu' (temp mediump uint) -0:293 imageAtomicMax (global highp int) -0:293 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:293 'P' (uniform mediump 2-component vector of int) -0:293 'dati' (temp mediump int) -0:294 imageAtomicMax (global highp uint) -0:294 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:294 'P' (uniform mediump 2-component vector of int) -0:294 'datu' (temp mediump uint) -0:295 imageAtomicAnd (global highp int) -0:295 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:295 'P' (uniform mediump 2-component vector of int) -0:295 'dati' (temp mediump int) -0:296 imageAtomicAnd (global highp uint) -0:296 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:296 'P' (uniform mediump 2-component vector of int) -0:296 'datu' (temp mediump uint) -0:297 imageAtomicOr (global highp int) -0:297 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:297 'P' (uniform mediump 2-component vector of int) -0:297 'dati' (temp mediump int) -0:298 imageAtomicOr (global highp uint) -0:298 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:298 'P' (uniform mediump 2-component vector of int) -0:298 'datu' (temp mediump uint) -0:299 imageAtomicXor (global highp int) -0:299 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:299 'P' (uniform mediump 2-component vector of int) -0:299 'dati' (temp mediump int) -0:300 imageAtomicXor (global highp uint) -0:300 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:300 'P' (uniform mediump 2-component vector of int) -0:300 'datu' (temp mediump uint) -0:301 imageAtomicExchange (global highp int) -0:301 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:301 'P' (uniform mediump 2-component vector of int) -0:301 'dati' (temp mediump int) -0:302 imageAtomicExchange (global highp uint) -0:302 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:302 'P' (uniform mediump 2-component vector of int) -0:302 'datu' (temp mediump uint) -0:303 imageAtomicExchange (global highp float) -0:303 'im2Df' (layout(r32f ) uniform highp image2D) -0:303 'P' (uniform mediump 2-component vector of int) -0:303 'datf' (temp mediump float) -0:304 imageAtomicCompSwap (global highp int) -0:304 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:304 'P' (uniform mediump 2-component vector of int) -0:304 Constant: -0:304 3 (const int) -0:304 'dati' (temp mediump int) -0:305 imageAtomicCompSwap (global highp uint) -0:305 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:305 'P' (uniform mediump 2-component vector of int) -0:305 Constant: -0:305 5 (const uint) -0:305 'datu' (temp mediump uint) -0:316 Function Definition: goodImageAtom( (global void) -0:316 Function Parameters: -0:? Sequence -0:322 imageAtomicAdd (global highp int) -0:322 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:322 'P' (uniform mediump 2-component vector of int) -0:322 'dati' (temp mediump int) -0:323 imageAtomicAdd (global highp uint) -0:323 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:323 'P' (uniform mediump 2-component vector of int) -0:323 'datu' (temp mediump uint) -0:324 imageAtomicMin (global highp int) -0:324 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:324 'P' (uniform mediump 2-component vector of int) -0:324 'dati' (temp mediump int) -0:325 imageAtomicMin (global highp uint) -0:325 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:325 'P' (uniform mediump 2-component vector of int) -0:325 'datu' (temp mediump uint) -0:326 imageAtomicMax (global highp int) -0:326 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:326 'P' (uniform mediump 2-component vector of int) -0:326 'dati' (temp mediump int) -0:327 imageAtomicMax (global highp uint) -0:327 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:327 'P' (uniform mediump 2-component vector of int) -0:327 'datu' (temp mediump uint) -0:328 imageAtomicAnd (global highp int) -0:328 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:328 'P' (uniform mediump 2-component vector of int) -0:328 'dati' (temp mediump int) -0:329 imageAtomicAnd (global highp uint) -0:329 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:329 'P' (uniform mediump 2-component vector of int) -0:329 'datu' (temp mediump uint) -0:330 imageAtomicOr (global highp int) -0:330 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:330 'P' (uniform mediump 2-component vector of int) -0:330 'dati' (temp mediump int) -0:331 imageAtomicOr (global highp uint) -0:331 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:331 'P' (uniform mediump 2-component vector of int) -0:331 'datu' (temp mediump uint) -0:332 imageAtomicXor (global highp int) -0:332 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:332 'P' (uniform mediump 2-component vector of int) -0:332 'dati' (temp mediump int) -0:333 imageAtomicXor (global highp uint) -0:333 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:333 'P' (uniform mediump 2-component vector of int) -0:333 'datu' (temp mediump uint) -0:334 imageAtomicExchange (global highp int) -0:334 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:334 'P' (uniform mediump 2-component vector of int) -0:334 'dati' (temp mediump int) -0:335 imageAtomicExchange (global highp uint) -0:335 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:335 'P' (uniform mediump 2-component vector of int) -0:335 'datu' (temp mediump uint) -0:336 imageAtomicExchange (global highp float) -0:336 'im2Df' (layout(r32f ) uniform highp image2D) -0:336 'P' (uniform mediump 2-component vector of int) -0:336 'datf' (temp mediump float) -0:337 imageAtomicCompSwap (global highp int) -0:337 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:337 'P' (uniform mediump 2-component vector of int) -0:337 Constant: -0:337 3 (const int) -0:337 'dati' (temp mediump int) -0:338 imageAtomicCompSwap (global highp uint) -0:338 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:338 'P' (uniform mediump 2-component vector of int) -0:338 Constant: -0:338 5 (const uint) -0:338 'datu' (temp mediump uint) -0:340 imageAtomicMax (global highp int) -0:340 'badIm2Di' (layout(rgba16i ) uniform highp iimage2D) -0:340 'P' (uniform mediump 2-component vector of int) -0:340 'dati' (temp mediump int) -0:341 imageAtomicMax (global highp uint) -0:341 'badIm2Du' (layout(rgba8ui ) uniform highp uimage2D) -0:341 'P' (uniform mediump 2-component vector of int) -0:341 'datu' (temp mediump uint) -0:342 imageAtomicExchange (global highp float) -0:342 'badIm2Df' (layout(rgba32f ) uniform highp image2D) -0:342 'P' (uniform mediump 2-component vector of int) -0:342 'datf' (temp mediump float) -0:353 Function Definition: badInterp( (global void) -0:353 Function Parameters: -0:355 Sequence -0:355 interpolateAtCentroid (global mediump 2-component vector of float) -0:355 'colorfc' (centroid flat in mediump 2-component vector of float) -0:356 interpolateAtSample (global mediump 2-component vector of float) -0:356 'colorfc' (centroid flat in mediump 2-component vector of float) -0:356 Constant: -0:356 1 (const int) -0:357 interpolateAtOffset (global mediump 2-component vector of float) -0:357 'colorfc' (centroid flat in mediump 2-component vector of float) -0:357 Constant: -0:357 0.200000 -0:357 0.200000 -0:369 Function Definition: interp( (global void) -0:369 Function Parameters: -0:? Sequence -0:376 move second child to first child (temp mediump 2-component vector of float) -0:376 'res2' (temp mediump 2-component vector of float) -0:376 interpolateAtCentroid (global mediump 2-component vector of float) -0:376 'colorfc' (centroid flat in mediump 2-component vector of float) -0:377 move second child to first child (temp mediump 4-component vector of float) -0:377 'res4' (temp mediump 4-component vector of float) -0:377 interpolateAtCentroid (global mediump 4-component vector of float) -0:377 'colorSampIn' (smooth sample in mediump 4-component vector of float) -0:378 move second child to first child (temp mediump 4-component vector of float) -0:378 'res4' (temp mediump 4-component vector of float) -0:378 interpolateAtCentroid (global mediump 4-component vector of float) -0:378 'colorfsi' (flat sample in mediump 4-component vector of float) -0:379 move second child to first child (temp mediump float) -0:379 'res' (temp mediump float) -0:379 interpolateAtCentroid (global mediump float) -0:379 'scalarIn' (smooth in mediump float) -0:380 'res3' (temp mediump 3-component vector of float) -0:381 move second child to first child (temp mediump 3-component vector of float) -0:381 'res3' (temp mediump 3-component vector of float) -0:381 interpolateAtCentroid (global mediump 3-component vector of float) -0:381 direct index (smooth sample temp mediump 3-component vector of float) -0:381 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float) -0:381 Constant: -0:381 2 (const int) -0:382 move second child to first child (temp mediump 2-component vector of float) -0:382 'res2' (temp mediump 2-component vector of float) -0:382 interpolateAtCentroid (global mediump 2-component vector of float) -0:382 vector swizzle (temp mediump 2-component vector of float) -0:382 direct index (smooth sample temp mediump 3-component vector of float) -0:382 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float) -0:382 Constant: -0:382 2 (const int) -0:382 Sequence -0:382 Constant: -0:382 0 (const int) -0:382 Constant: -0:382 1 (const int) -0:384 'res3' (temp mediump 3-component vector of float) -0:385 move second child to first child (temp mediump 3-component vector of float) -0:385 'res3' (temp mediump 3-component vector of float) -0:385 interpolateAtSample (global mediump 3-component vector of float) -0:385 indirect index (smooth sample temp mediump 3-component vector of float) -0:385 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float) -0:385 'i' (uniform mediump int) -0:385 Constant: -0:385 0 (const int) -0:386 move second child to first child (temp mediump 2-component vector of float) -0:386 'res2' (temp mediump 2-component vector of float) -0:386 interpolateAtSample (global mediump 2-component vector of float) -0:386 vector swizzle (temp mediump 2-component vector of float) -0:386 direct index (smooth sample temp mediump 3-component vector of float) -0:386 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float) -0:386 Constant: -0:386 2 (const int) -0:386 Sequence -0:386 Constant: -0:386 0 (const int) -0:386 Constant: -0:386 1 (const int) -0:386 Constant: -0:386 2 (const int) -0:387 move second child to first child (temp mediump float) -0:387 'res' (temp mediump float) -0:387 interpolateAtSample (global mediump float) -0:387 'scalarIn' (smooth in mediump float) -0:387 Constant: -0:387 1 (const int) -0:389 'res3' (temp mediump 3-component vector of float) -0:390 move second child to first child (temp mediump 3-component vector of float) -0:390 'res3' (temp mediump 3-component vector of float) -0:390 interpolateAtOffset (global mediump 3-component vector of float) -0:390 direct index (smooth sample temp mediump 3-component vector of float) -0:390 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float) -0:390 Constant: -0:390 2 (const int) -0:390 Constant: -0:390 0.200000 -0:390 0.200000 -0:391 move second child to first child (temp mediump 2-component vector of float) -0:391 'res2' (temp mediump 2-component vector of float) -0:391 interpolateAtOffset (global mediump 2-component vector of float) -0:391 vector swizzle (temp mediump 2-component vector of float) -0:391 direct index (smooth sample temp mediump 3-component vector of float) -0:391 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float) -0:391 Constant: -0:391 2 (const int) -0:391 Sequence -0:391 Constant: -0:391 0 (const int) -0:391 Constant: -0:391 1 (const int) -0:391 Constant: -0:391 0.200000 -0:391 0.200000 -0:392 move second child to first child (temp mediump float) -0:392 'res' (temp mediump float) -0:392 interpolateAtOffset (global mediump float) -0:392 add (temp mediump float) -0:392 'scalarIn' (smooth in mediump float) -0:392 'scalarIn' (smooth in mediump float) -0:392 Constant: -0:392 0.200000 -0:392 0.200000 -0:393 move second child to first child (temp mediump float) -0:393 'res' (temp mediump float) -0:393 interpolateAtOffset (global mediump float) -0:393 'scalarIn' (smooth in mediump float) -0:393 Constant: -0:393 0.200000 -0:393 0.200000 -0:396 move second child to first child (temp mediump float) -0:396 'res' (temp mediump float) -0:396 interpolateAtCentroid (global mediump float) -0:396 'f' (temp mediump float) -0:397 move second child to first child (temp mediump 4-component vector of float) -0:397 'res4' (temp mediump 4-component vector of float) -0:397 interpolateAtSample (global mediump 4-component vector of float) -0:397 'outp' (out mediump 4-component vector of float) -0:397 Constant: -0:397 0 (const int) -0:427 Function Definition: blendFoo( (temp void) -0:427 Function Parameters: -0:428 Function Definition: blendFoo(vf3; (global void) -0:428 Function Parameters: -0:428 'v' (in mediump 3-component vector of float) 0:? Linker Objects 0:? 'gl_FragCoord' (smooth in mediump 4-component vector of float) 0:? 'v3' (layout(location=2 ) smooth in mediump 3-component vector of float) diff --git a/Test/baseResults/310.geom.out b/Test/baseResults/310.geom.out index 888c1423..def6b7ab 100644 --- a/Test/baseResults/310.geom.out +++ b/Test/baseResults/310.geom.out @@ -250,74 +250,6 @@ ERROR: node is still EOpNull! 0:52 'gl_Layer' (layout(stream=0 ) out highp int Layer) 0:52 Constant: 0:52 2 (const int) -0:63 Function Definition: foo(i1; (global void) -0:63 Function Parameters: -0:63 'a' (in highp int) -0:65 Sequence -0:65 move second child to first child (temp mediump 4-component vector of float) -0:65 a: direct index for structure (layout(stream=0 ) out mediump 4-component vector of float) -0:65 'ouuaa6' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 4-component vector of float a}) -0:65 Constant: -0:65 0 (const int) -0:65 Constant: -0:65 1.000000 -0:65 1.000000 -0:65 1.000000 -0:65 1.000000 -0:114 Function Definition: fooe1( (global void) -0:114 Function Parameters: -0:116 Sequence -0:116 'gl_ViewportIndex' (temp float) -0:117 'gl_MaxViewports' (temp float) -0:118 Constant: -0:118 4 (const int) -0:119 Sequence -0:119 move second child to first child (temp highp int) -0:119 'inv' (temp highp int) -0:119 'gl_InvocationID' (in highp int InvocationID) -0:134 Function Definition: notHere( (global void) -0:134 Function Parameters: -0:136 Sequence -0:136 'gl_MaxGeometryVaryingComponents' (temp float) -0:137 'gl_VerticesIn' (temp float) -0:140 Function Definition: pointSize1( (global void) -0:140 Function Parameters: -0:142 Sequence -0:142 Sequence -0:142 move second child to first child (temp highp float) -0:142 'ps' (temp highp float) -0:142 gl_PointSize: direct index for structure (in highp float PointSize) -0:142 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) -0:142 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) -0:142 Constant: -0:142 3 (const int) -0:142 Constant: -0:142 1 (const int) -0:143 move second child to first child (temp highp float) -0:143 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize highp float PointSize) -0:143 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize}) -0:143 Constant: -0:143 1 (const uint) -0:143 'ps' (temp highp float) -0:148 Function Definition: pointSize2( (global void) -0:148 Function Parameters: -0:150 Sequence -0:150 Sequence -0:150 move second child to first child (temp highp float) -0:150 'ps' (temp highp float) -0:150 gl_PointSize: direct index for structure (in highp float PointSize) -0:150 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) -0:150 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) -0:150 Constant: -0:150 3 (const int) -0:150 Constant: -0:150 1 (const int) -0:151 move second child to first child (temp highp float) -0:151 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize highp float PointSize) -0:151 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize}) -0:151 Constant: -0:151 1 (const uint) -0:151 'ps' (temp highp float) 0:? Linker Objects 0:? 'fromV' (in 4-element array of block{in mediump 3-component vector of float color}) 0:? 'nonBlockUnsized' (in 4-element array of mediump 4-component vector of float) diff --git a/Test/baseResults/310.tesc.out b/Test/baseResults/310.tesc.out index 24e3d209..ab27198f 100644 --- a/Test/baseResults/310.tesc.out +++ b/Test/baseResults/310.tesc.out @@ -514,172 +514,6 @@ ERROR: node is still EOpNull! 0:58 Barrier (global void) 0:61 Branch: Return 0:63 Barrier (global void) -0:69 Function Definition: foo( (global void) -0:69 Function Parameters: -0:71 Sequence -0:71 gl_Position: direct index for structure (out highp 4-component vector of float Position) -0:71 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:71 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:71 Constant: -0:71 4 (const int) -0:71 Constant: -0:71 0 (const int) -0:73 Barrier (global void) -0:92 Function Definition: foop( (global void) -0:92 Function Parameters: -0:? Sequence -0:95 move second child to first child (temp highp float) -0:95 'd' (noContraction temp highp float) -0:95 fma (global highp float) -0:95 'd' (noContraction temp highp float) -0:95 'd' (noContraction temp highp float) -0:95 'd' (noContraction temp highp float) -0:112 Function Definition: pointSize2( (global void) -0:112 Function Parameters: -0:114 Sequence -0:114 Sequence -0:114 move second child to first child (temp highp float) -0:114 'ps' (temp highp float) -0:114 gl_PointSize: direct index for structure (in highp float PointSize) -0:114 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) -0:114 'gl_in' (in 32-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) -0:114 Constant: -0:114 1 (const int) -0:114 Constant: -0:114 1 (const int) -0:115 move second child to first child (temp highp float) -0:115 gl_PointSize: direct index for structure (out highp float PointSize) -0:115 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:115 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:115 'gl_InvocationID' (in highp int InvocationID) -0:115 Constant: -0:115 1 (const int) -0:115 'ps' (temp highp float) -0:122 Function Definition: goodfoop( (global void) -0:122 Function Parameters: -0:? Sequence -0:126 multiply second child into first child (temp highp 3-component vector of float) -0:126 'pv3' (noContraction temp highp 3-component vector of float) -0:126 'pv3' (noContraction temp highp 3-component vector of float) -0:127 move second child to first child (temp highp 3-component vector of float) -0:127 'pv3' (noContraction temp highp 3-component vector of float) -0:127 fma (global highp 3-component vector of float) -0:127 'pv3' (noContraction temp highp 3-component vector of float) -0:127 'pv3' (noContraction temp highp 3-component vector of float) -0:127 'pv3' (noContraction temp highp 3-component vector of float) -0:128 move second child to first child (temp highp float) -0:128 'd' (noContraction temp highp float) -0:128 fma (global highp float) -0:128 'd' (noContraction temp highp float) -0:128 'd' (noContraction temp highp float) -0:128 'd' (noContraction temp highp float) -0:131 Function Definition: bbBad( (global void) -0:131 Function Parameters: -0:133 Sequence -0:133 'gl_BoundingBoxOES' (patch out 2-element array of highp 4-component vector of float BoundingBox) -0:138 Function Definition: bb( (global void) -0:138 Function Parameters: -0:140 Sequence -0:140 move second child to first child (temp highp 4-component vector of float) -0:140 direct index (patch temp highp 4-component vector of float BoundingBox) -0:140 'gl_BoundingBoxOES' (patch out 2-element array of highp 4-component vector of float BoundingBox) -0:140 Constant: -0:140 0 (const int) -0:140 Constant: -0:140 0.000000 -0:140 0.000000 -0:140 0.000000 -0:140 0.000000 -0:141 move second child to first child (temp highp 4-component vector of float) -0:141 direct index (patch temp highp 4-component vector of float BoundingBox) -0:141 'gl_BoundingBoxOES' (patch out 2-element array of highp 4-component vector of float BoundingBox) -0:141 Constant: -0:141 1 (const int) -0:141 Constant: -0:141 1.000000 -0:141 1.000000 -0:141 1.000000 -0:141 1.000000 -0:142 move second child to first child (temp highp 4-component vector of float) -0:142 direct index (patch temp highp 4-component vector of float BoundingBox) -0:142 'gl_BoundingBoxOES' (patch out 2-element array of highp 4-component vector of float BoundingBox) -0:142 Constant: -0:142 2 (const int) -0:142 Constant: -0:142 2.000000 -0:142 2.000000 -0:142 2.000000 -0:142 2.000000 -0:153 Function Definition: outputtingOutparam(i1; (global void) -0:153 Function Parameters: -0:153 'a' (out highp int) -0:155 Sequence -0:155 move second child to first child (temp highp int) -0:155 'a' (out highp int) -0:155 Constant: -0:155 2 (const int) -0:158 Function Definition: outputting( (global void) -0:158 Function Parameters: -0:160 Sequence -0:160 move second child to first child (temp highp int) -0:160 indirect index (temp highp int) -0:160 'outa' (out 4-element array of highp int) -0:160 'gl_InvocationID' (in highp int InvocationID) -0:160 Constant: -0:160 2 (const int) -0:161 move second child to first child (temp highp int) -0:161 direct index (temp highp int) -0:161 'outa' (out 4-element array of highp int) -0:161 Constant: -0:161 1 (const int) -0:161 Constant: -0:161 2 (const int) -0:162 move second child to first child (temp highp 4-component vector of float) -0:162 gl_Position: direct index for structure (out highp 4-component vector of float Position) -0:162 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:162 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:162 Constant: -0:162 0 (const int) -0:162 Constant: -0:162 0 (const int) -0:162 Constant: -0:162 1.000000 -0:162 1.000000 -0:162 1.000000 -0:162 1.000000 -0:163 direct index (temp highp int) -0:163 'outa' (out 4-element array of highp int) -0:163 Constant: -0:163 1 (const int) -0:164 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:164 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) -0:164 Constant: -0:164 0 (const int) -0:165 Function Call: outputtingOutparam(i1; (global void) -0:165 direct index (temp highp int) -0:165 'outa' (out 4-element array of highp int) -0:165 Constant: -0:165 0 (const int) -0:166 Function Call: outputtingOutparam(i1; (global void) -0:166 indirect index (temp highp int) -0:166 'outa' (out 4-element array of highp int) -0:166 'gl_InvocationID' (in highp int InvocationID) -0:167 move second child to first child (temp highp float) -0:167 f: direct index for structure (out highp float) -0:167 direct index (patch temp block{out highp float f}) -0:167 'patchIName' (patch out 4-element array of block{out highp float f}) -0:167 Constant: -0:167 1 (const int) -0:167 Constant: -0:167 0 (const int) -0:167 Constant: -0:167 3.140000 -0:168 move second child to first child (temp highp int) -0:168 indirect index (temp highp int) -0:168 'outa' (out 4-element array of highp int) -0:168 'gl_InvocationID' (in highp int InvocationID) -0:168 Constant: -0:168 2 (const int) 0:? Linker Objects 0:? 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:? 'outa' (out 4-element array of highp int) diff --git a/Test/baseResults/310.tese.out b/Test/baseResults/310.tese.out index aacfedbd..62894ec7 100644 --- a/Test/baseResults/310.tese.out +++ b/Test/baseResults/310.tese.out @@ -274,19 +274,6 @@ ERROR: node is still EOpNull! 0:48 Constant: 0:48 0.000000 0:48 'cd' (temp highp float) -0:117 Function Definition: pointSize2( (global void) -0:117 Function Parameters: -0:? Sequence -0:120 move second child to first child (temp highp float) -0:120 gl_PointSize: direct index for structure (gl_PointSize highp float PointSize) -0:120 'anon@1' (out block{gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) -0:120 Constant: -0:120 1 (const uint) -0:120 'ps' (temp highp float) -0:125 Function Definition: bbbad( (global void) -0:125 Function Parameters: -0:127 Sequence -0:127 'gl_BoundingBoxOES' (temp float) 0:? Linker Objects 0:? 'patchIn' (patch in highp 4-component vector of float) 0:? 'patchOut' (patch out highp 4-component vector of float) diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out index 84a50e89..d0dfedf2 100644 --- a/Test/baseResults/310.vert.out +++ b/Test/baseResults/310.vert.out @@ -1158,693 +1158,6 @@ ERROR: node is still EOpNull! 0:48 'v4' (temp mediump 4-component vector of float) 0:48 UnpackSnorm4x8 (global mediump 4-component vector of float, operation at highp) 0:48 'u1' (temp highp uint) -0:60 Function Definition: foo( (global void) -0:60 Function Parameters: -0:? Sequence -0:63 move second child to first child (temp highp 2-component vector of int) -0:63 'v2' (temp highp 2-component vector of int) -0:63 textureSize (global highp 2-component vector of int) -0:63 's2dms' (uniform highp sampler2DMS) -0:64 move second child to first child (temp highp 2-component vector of int) -0:64 'v2' (temp highp 2-component vector of int) -0:64 textureSize (global highp 2-component vector of int) -0:64 'us2dms' (uniform highp usampler2DMS) -0:65 Sequence -0:65 move second child to first child (temp highp 4-component vector of float) -0:65 'v4' (temp highp 4-component vector of float) -0:65 textureFetch (global highp 4-component vector of float) -0:65 's2dms' (uniform highp sampler2DMS) -0:65 'v2' (temp highp 2-component vector of int) -0:65 Constant: -0:65 2 (const int) -0:66 Sequence -0:66 move second child to first child (temp highp 4-component vector of int) -0:66 'iv4' (temp highp 4-component vector of int) -0:66 textureFetch (global highp 4-component vector of int) -0:66 'is2dms' (uniform highp isampler2DMS) -0:66 'v2' (temp highp 2-component vector of int) -0:66 Constant: -0:66 2 (const int) -0:67 Constant: -0:67 0.000000 -0:69 frexp (global highp float) -0:69 'f' (temp highp float) -0:69 'ini' (in highp int) -0:114 Function Definition: foo_IO( (global void) -0:114 Function Parameters: -0:116 Sequence -0:116 Sequence -0:116 move second child to first child (temp highp int) -0:116 'sum' (temp highp int) -0:116 add (temp highp int) -0:116 'gl_VertexID' (gl_VertexId highp int VertexId) -0:117 'gl_InstanceID' (gl_InstanceId highp int InstanceId) -0:118 move second child to first child (temp highp 4-component vector of float) -0:118 gl_Position: direct index for structure (gl_Position highp 4-component vector of float Position) -0:118 'anon@1' (out block{gl_Position highp 4-component vector of float Position gl_Position, }) -0:118 Constant: -0:118 0 (const uint) -0:118 Constant: -0:118 1.000000 -0:118 1.000000 -0:118 1.000000 -0:118 1.000000 -0:119 gl_PointSize: direct index for structure (gl_PointSize highp void PointSize) -0:119 'anon@1' (out block{gl_Position highp 4-component vector of float Position gl_Position, }) -0:119 Constant: -0:119 1 (const uint) -0:153 Function Definition: pfooBad( (global void) -0:153 Function Parameters: -0:? Sequence -0:156 move second child to first child (temp highp 2-component vector of float) -0:156 'h' (noContraction temp highp 2-component vector of float) -0:156 fma (global highp 2-component vector of float) -0:156 'inf' (in highp 2-component vector of float) -0:156 'ing' (in highp 2-component vector of float) -0:156 'h' (noContraction temp highp 2-component vector of float) -0:157 indirect index (temp lowp sampler2D) -0:157 'sArray' (uniform 4-element array of lowp sampler2D) -0:157 add (temp highp int) -0:157 'sIndex' (uniform highp int) -0:157 Constant: -0:157 1 (const int) -0:158 indirect index (layout(binding=0 offset=0 ) temp highp atomic_uint) -0:158 'auArray' (layout(binding=0 offset=0 ) uniform 2-element array of highp atomic_uint) -0:158 add (temp highp int) -0:158 'sIndex' (uniform highp int) -0:158 Constant: -0:158 1 (const int) -0:159 direct index (layout(column_major shared ) temp block{layout(column_major shared ) uniform highp int i}) -0:159 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i}) -0:159 Constant: -0:159 1 (const int) -0:160 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp int i}) -0:160 'bbInst' (layout(column_major shared ) buffer 4-element array of block{layout(column_major shared ) buffer highp int i}) -0:160 Constant: -0:160 2 (const int) -0:161 indirect index (layout(column_major shared ) temp block{layout(column_major shared ) uniform highp int i}) -0:161 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i}) -0:161 add (temp highp int) -0:161 'sIndex' (uniform highp int) -0:161 Constant: -0:161 1 (const int) -0:162 indirect index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp int i}) -0:162 'bbInst' (layout(column_major shared ) buffer 4-element array of block{layout(column_major shared ) buffer highp int i}) -0:162 'sIndex' (uniform highp int) -0:163 direct index (writeonly temp highp image2D) -0:163 'iArray' (writeonly uniform 5-element array of highp image2D) -0:163 Constant: -0:163 2 (const int) -0:164 indirect index (writeonly temp highp image2D) -0:164 'iArray' (writeonly uniform 5-element array of highp image2D) -0:164 component-wise multiply (temp highp int) -0:164 'sIndex' (uniform highp int) -0:164 Constant: -0:164 2 (const int) -0:165 textureGatherOffset (global lowp 4-component vector of float) -0:165 direct index (temp lowp sampler2D) -0:165 'sArray' (uniform 4-element array of lowp sampler2D) -0:165 Constant: -0:165 0 (const int) -0:165 Constant: -0:165 0.100000 -0:165 0.100000 -0:165 Convert float to int (temp lowp 2-component vector of int) -0:165 'inf' (in highp 2-component vector of float) -0:166 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) -0:166 direct index (temp lowp sampler2D) -0:166 'sArray' (uniform 4-element array of lowp sampler2D) -0:166 Constant: -0:166 0 (const int) -0:166 Constant: -0:166 0.100000 -0:166 0.100000 -0:166 Constant: -0:166 0 (const int) -0:166 0 (const int) -0:166 0 (const int) -0:166 0 (const int) -0:166 0 (const int) -0:166 0 (const int) -0:166 0 (const int) -0:166 0 (const int) -0:171 Function Definition: pfoo( (global void) -0:171 Function Parameters: -0:? Sequence -0:174 move second child to first child (temp highp 2-component vector of float) -0:174 'h' (noContraction temp highp 2-component vector of float) -0:174 fma (global highp 2-component vector of float) -0:174 'inf' (in highp 2-component vector of float) -0:174 'ing' (in highp 2-component vector of float) -0:174 'h' (noContraction temp highp 2-component vector of float) -0:175 indirect index (temp lowp sampler2D) -0:175 'sArray' (uniform 4-element array of lowp sampler2D) -0:175 add (temp highp int) -0:175 'sIndex' (uniform highp int) -0:175 Constant: -0:175 1 (const int) -0:176 indirect index (layout(column_major shared ) temp block{layout(column_major shared ) uniform highp int i}) -0:176 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i}) -0:176 add (temp highp int) -0:176 'sIndex' (uniform highp int) -0:176 Constant: -0:176 1 (const int) -0:177 indirect index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp int i}) -0:177 'bbInst' (layout(column_major shared ) buffer 4-element array of block{layout(column_major shared ) buffer highp int i}) -0:177 subtract (temp highp int) -0:177 'sIndex' (uniform highp int) -0:177 Constant: -0:177 2 (const int) -0:178 direct index (writeonly temp highp image2D) -0:178 'iArray' (writeonly uniform 5-element array of highp image2D) -0:178 Constant: -0:178 2 (const int) -0:179 indirect index (writeonly temp highp image2D) -0:179 'iArray' (writeonly uniform 5-element array of highp image2D) -0:179 subtract (temp highp int) -0:179 'sIndex' (uniform highp int) -0:179 Constant: -0:179 2 (const int) -0:180 textureGatherOffset (global lowp 4-component vector of float) -0:180 direct index (temp lowp sampler2D) -0:180 'sArray' (uniform 4-element array of lowp sampler2D) -0:180 Constant: -0:180 0 (const int) -0:180 Constant: -0:180 0.100000 -0:180 0.100000 -0:180 Convert float to int (temp lowp 2-component vector of int) -0:180 'inf' (in highp 2-component vector of float) -0:181 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) -0:181 direct index (temp lowp sampler2D) -0:181 'sArray' (uniform 4-element array of lowp sampler2D) -0:181 Constant: -0:181 0 (const int) -0:181 Constant: -0:181 0.100000 -0:181 0.100000 -0:181 Constant: -0:181 0 (const int) -0:181 0 (const int) -0:181 0 (const int) -0:181 0 (const int) -0:181 0 (const int) -0:181 0 (const int) -0:181 0 (const int) -0:181 0 (const int) -0:182 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) -0:182 direct index (temp lowp sampler2D) -0:182 'sArray' (uniform 4-element array of lowp sampler2D) -0:182 Constant: -0:182 0 (const int) -0:182 Constant: -0:182 0.100000 -0:182 0.100000 -0:182 'offsets' (uniform 4-element array of highp 2-component vector of int) -0:220 Function Definition: bufferT( (global void) -0:220 Function Parameters: -0:222 Sequence -0:222 Sequence -0:222 move second child to first child (temp highp int) -0:222 's1' (temp highp int) -0:222 textureSize (global highp int) -0:222 'bufSamp1' (uniform highp samplerBuffer) -0:223 Sequence -0:223 move second child to first child (temp highp int) -0:223 's2' (temp highp int) -0:223 textureSize (global highp int) -0:223 'bufSamp2' (uniform highp isamplerBuffer) -0:224 Sequence -0:224 move second child to first child (temp highp int) -0:224 's3' (temp highp int) -0:224 textureSize (global highp int) -0:224 'bufSamp3' (uniform highp usamplerBuffer) -0:226 Sequence -0:226 move second child to first child (temp highp int) -0:226 's4' (temp highp int) -0:226 imageQuerySize (global highp int) -0:226 'bufSamp4' (writeonly uniform highp imageBuffer) -0:227 Sequence -0:227 move second child to first child (temp highp int) -0:227 's5' (temp highp int) -0:227 imageQuerySize (global highp int) -0:227 'bufSamp5' (writeonly uniform highp iimageBuffer) -0:228 Sequence -0:228 move second child to first child (temp highp int) -0:228 's6' (temp highp int) -0:228 imageQuerySize (global highp int) -0:228 'bufSamp6' (writeonly uniform highp uimageBuffer) -0:230 Sequence -0:230 move second child to first child (temp highp 4-component vector of float) -0:230 'f1' (temp highp 4-component vector of float) -0:230 textureFetch (global highp 4-component vector of float) -0:230 'bufSamp1' (uniform highp samplerBuffer) -0:230 's1' (temp highp int) -0:231 Sequence -0:231 move second child to first child (temp highp 4-component vector of int) -0:231 'f2' (temp highp 4-component vector of int) -0:231 textureFetch (global highp 4-component vector of int) -0:231 'bufSamp2' (uniform highp isamplerBuffer) -0:231 's2' (temp highp int) -0:232 Sequence -0:232 move second child to first child (temp highp 4-component vector of uint) -0:232 'f3' (temp highp 4-component vector of uint) -0:232 textureFetch (global highp 4-component vector of uint) -0:232 'bufSamp3' (uniform highp usamplerBuffer) -0:232 's3' (temp highp int) -0:279 Function Definition: CAT( (global void) -0:279 Function Parameters: -0:281 Sequence -0:281 Sequence -0:281 move second child to first child (temp highp 3-component vector of int) -0:281 's4' (temp highp 3-component vector of int) -0:281 textureSize (global highp 3-component vector of int) -0:281 'CA4' (uniform highp samplerCubeArray) -0:281 Constant: -0:281 1 (const int) -0:282 Sequence -0:282 move second child to first child (temp highp 3-component vector of int) -0:282 's5' (temp highp 3-component vector of int) -0:282 textureSize (global highp 3-component vector of int) -0:282 'CA5' (uniform highp samplerCubeArrayShadow) -0:282 Constant: -0:282 1 (const int) -0:283 Sequence -0:283 move second child to first child (temp highp 3-component vector of int) -0:283 's6' (temp highp 3-component vector of int) -0:283 textureSize (global highp 3-component vector of int) -0:283 'CA6' (uniform highp isamplerCubeArray) -0:283 Constant: -0:283 1 (const int) -0:284 Sequence -0:284 move second child to first child (temp highp 3-component vector of int) -0:284 's7' (temp highp 3-component vector of int) -0:284 textureSize (global highp 3-component vector of int) -0:284 'CA7' (uniform highp usamplerCubeArray) -0:284 Constant: -0:284 1 (const int) -0:286 Sequence -0:286 move second child to first child (temp highp 4-component vector of float) -0:286 't4' (temp highp 4-component vector of float) -0:286 texture (global highp 4-component vector of float) -0:286 'CA4' (uniform highp samplerCubeArray) -0:286 Constant: -0:286 0.500000 -0:286 0.500000 -0:286 0.500000 -0:286 0.500000 -0:287 Sequence -0:287 move second child to first child (temp highp float) -0:287 't5' (temp highp float) -0:287 texture (global highp float) -0:287 'CA5' (uniform highp samplerCubeArrayShadow) -0:287 Constant: -0:287 0.500000 -0:287 0.500000 -0:287 0.500000 -0:287 0.500000 -0:287 Constant: -0:287 3.000000 -0:288 Sequence -0:288 move second child to first child (temp highp 4-component vector of int) -0:288 't6' (temp highp 4-component vector of int) -0:288 texture (global highp 4-component vector of int) -0:288 'CA6' (uniform highp isamplerCubeArray) -0:288 Constant: -0:288 0.500000 -0:288 0.500000 -0:288 0.500000 -0:288 0.500000 -0:289 Sequence -0:289 move second child to first child (temp highp 4-component vector of uint) -0:289 't7' (temp highp 4-component vector of uint) -0:289 texture (global highp 4-component vector of uint) -0:289 'CA7' (uniform highp usamplerCubeArray) -0:289 Constant: -0:289 0.500000 -0:289 0.500000 -0:289 0.500000 -0:289 0.500000 -0:291 Sequence -0:291 move second child to first child (temp highp 4-component vector of float) -0:291 'L4' (temp highp 4-component vector of float) -0:291 textureLod (global highp 4-component vector of float) -0:291 'CA4' (uniform highp samplerCubeArray) -0:291 Constant: -0:291 0.500000 -0:291 0.500000 -0:291 0.500000 -0:291 0.500000 -0:291 Constant: -0:291 0.240000 -0:292 Sequence -0:292 move second child to first child (temp highp 4-component vector of int) -0:292 'L6' (temp highp 4-component vector of int) -0:292 textureLod (global highp 4-component vector of int) -0:292 'CA6' (uniform highp isamplerCubeArray) -0:292 Constant: -0:292 0.500000 -0:292 0.500000 -0:292 0.500000 -0:292 0.500000 -0:292 Constant: -0:292 0.260000 -0:293 Sequence -0:293 move second child to first child (temp highp 4-component vector of uint) -0:293 'L7' (temp highp 4-component vector of uint) -0:293 textureLod (global highp 4-component vector of uint) -0:293 'CA7' (uniform highp usamplerCubeArray) -0:293 Constant: -0:293 0.500000 -0:293 0.500000 -0:293 0.500000 -0:293 0.500000 -0:293 Constant: -0:293 0.270000 -0:295 Sequence -0:295 move second child to first child (temp highp 4-component vector of float) -0:295 'g4' (temp highp 4-component vector of float) -0:295 textureGrad (global highp 4-component vector of float) -0:295 'CA4' (uniform highp samplerCubeArray) -0:295 Constant: -0:295 0.500000 -0:295 0.500000 -0:295 0.500000 -0:295 0.500000 -0:295 Constant: -0:295 0.100000 -0:295 0.100000 -0:295 0.100000 -0:295 Constant: -0:295 0.200000 -0:295 0.200000 -0:295 0.200000 -0:296 Sequence -0:296 move second child to first child (temp highp 4-component vector of int) -0:296 'g6' (temp highp 4-component vector of int) -0:296 textureGrad (global highp 4-component vector of int) -0:296 'CA6' (uniform highp isamplerCubeArray) -0:296 Constant: -0:296 0.500000 -0:296 0.500000 -0:296 0.500000 -0:296 0.500000 -0:296 Constant: -0:296 0.100000 -0:296 0.100000 -0:296 0.100000 -0:296 Constant: -0:296 0.200000 -0:296 0.200000 -0:296 0.200000 -0:297 Sequence -0:297 move second child to first child (temp highp 4-component vector of uint) -0:297 'g7' (temp highp 4-component vector of uint) -0:297 textureGrad (global highp 4-component vector of uint) -0:297 'CA7' (uniform highp usamplerCubeArray) -0:297 Constant: -0:297 0.500000 -0:297 0.500000 -0:297 0.500000 -0:297 0.500000 -0:297 Constant: -0:297 0.100000 -0:297 0.100000 -0:297 0.100000 -0:297 Constant: -0:297 0.200000 -0:297 0.200000 -0:297 0.200000 -0:299 Sequence -0:299 move second child to first child (temp highp 4-component vector of float) -0:299 'gath4' (temp highp 4-component vector of float) -0:299 textureGather (global highp 4-component vector of float) -0:299 'CA4' (uniform highp samplerCubeArray) -0:299 Constant: -0:299 0.500000 -0:299 0.500000 -0:299 0.500000 -0:299 0.500000 -0:300 Sequence -0:300 move second child to first child (temp highp 4-component vector of float) -0:300 'gathC4' (temp highp 4-component vector of float) -0:300 textureGather (global highp 4-component vector of float) -0:300 'CA4' (uniform highp samplerCubeArray) -0:300 Constant: -0:300 0.500000 -0:300 0.500000 -0:300 0.500000 -0:300 0.500000 -0:300 Constant: -0:300 2 (const int) -0:301 Sequence -0:301 move second child to first child (temp highp 4-component vector of int) -0:301 'gath6' (temp highp 4-component vector of int) -0:301 textureGather (global highp 4-component vector of int) -0:301 'CA6' (uniform highp isamplerCubeArray) -0:301 Constant: -0:301 0.500000 -0:301 0.500000 -0:301 0.500000 -0:301 0.500000 -0:302 Sequence -0:302 move second child to first child (temp highp 4-component vector of int) -0:302 'gathC6' (temp highp 4-component vector of int) -0:302 textureGather (global highp 4-component vector of int) -0:302 'CA6' (uniform highp isamplerCubeArray) -0:302 Constant: -0:302 0.500000 -0:302 0.500000 -0:302 0.500000 -0:302 0.500000 -0:302 Constant: -0:302 1 (const int) -0:303 Sequence -0:303 move second child to first child (temp highp 4-component vector of uint) -0:303 'gath7' (temp highp 4-component vector of uint) -0:303 textureGather (global highp 4-component vector of uint) -0:303 'CA7' (uniform highp usamplerCubeArray) -0:303 Constant: -0:303 0.500000 -0:303 0.500000 -0:303 0.500000 -0:303 0.500000 -0:304 Sequence -0:304 move second child to first child (temp highp 4-component vector of uint) -0:304 'gathC7' (temp highp 4-component vector of uint) -0:304 textureGather (global highp 4-component vector of uint) -0:304 'CA7' (uniform highp usamplerCubeArray) -0:304 Constant: -0:304 0.500000 -0:304 0.500000 -0:304 0.500000 -0:304 0.500000 -0:304 Constant: -0:304 0 (const int) -0:306 Sequence -0:306 move second child to first child (temp highp 4-component vector of float) -0:306 'gath5' (temp highp 4-component vector of float) -0:306 textureGather (global highp 4-component vector of float) -0:306 'CA5' (uniform highp samplerCubeArrayShadow) -0:306 Constant: -0:306 0.500000 -0:306 0.500000 -0:306 0.500000 -0:306 0.500000 -0:306 Constant: -0:306 2.500000 -0:308 Sequence -0:308 move second child to first child (temp highp 3-component vector of int) -0:308 's1' (temp highp 3-component vector of int) -0:308 imageQuerySize (global highp 3-component vector of int) -0:308 'CA1' (writeonly uniform highp imageCubeArray) -0:309 Sequence -0:309 move second child to first child (temp highp 3-component vector of int) -0:309 's2' (temp highp 3-component vector of int) -0:309 imageQuerySize (global highp 3-component vector of int) -0:309 'CA2' (writeonly uniform highp iimageCubeArray) -0:310 Sequence -0:310 move second child to first child (temp highp 3-component vector of int) -0:310 's3' (temp highp 3-component vector of int) -0:310 imageQuerySize (global highp 3-component vector of int) -0:310 'CA3' (writeonly uniform highp uimageCubeArray) -0:312 imageStore (global highp void) -0:312 'CA1' (writeonly uniform highp imageCubeArray) -0:312 's3' (temp highp 3-component vector of int) -0:312 Constant: -0:312 1.000000 -0:312 1.000000 -0:312 1.000000 -0:312 1.000000 -0:313 imageStore (global highp void) -0:313 'CA2' (writeonly uniform highp iimageCubeArray) -0:313 's3' (temp highp 3-component vector of int) -0:313 Constant: -0:313 1 (const int) -0:313 1 (const int) -0:313 1 (const int) -0:313 1 (const int) -0:314 imageStore (global highp void) -0:314 'CA3' (writeonly uniform highp uimageCubeArray) -0:314 's3' (temp highp 3-component vector of int) -0:314 Constant: -0:314 1 (const uint) -0:314 1 (const uint) -0:314 1 (const uint) -0:314 1 (const uint) -0:316 Sequence -0:316 move second child to first child (temp highp 4-component vector of float) -0:316 'cl1' (temp highp 4-component vector of float) -0:316 imageLoad (global highp 4-component vector of float) -0:316 'rCA1' (layout(rgba16f ) readonly uniform highp imageCubeArray) -0:316 's3' (temp highp 3-component vector of int) -0:317 Sequence -0:317 move second child to first child (temp highp 4-component vector of int) -0:317 'cl2' (temp highp 4-component vector of int) -0:317 imageLoad (global highp 4-component vector of int) -0:317 'rCA2' (layout(rgba32i ) readonly uniform highp iimageCubeArray) -0:317 's3' (temp highp 3-component vector of int) -0:318 Sequence -0:318 move second child to first child (temp highp 4-component vector of uint) -0:318 'cl3' (temp highp 4-component vector of uint) -0:318 imageLoad (global highp 4-component vector of uint) -0:318 'rCA3' (layout(r32ui ) readonly uniform highp uimageCubeArray) -0:318 's3' (temp highp 3-component vector of int) -0:343 Function Definition: MSA( (global void) -0:343 Function Parameters: -0:345 Sequence -0:345 Sequence -0:345 move second child to first child (temp highp 4-component vector of float) -0:345 'tf' (temp highp 4-component vector of float) -0:345 textureFetch (global highp 4-component vector of float) -0:345 'samp2DMSA' (uniform highp sampler2DMSArray) -0:345 Constant: -0:345 5 (const int) -0:345 5 (const int) -0:345 5 (const int) -0:345 Constant: -0:345 2 (const int) -0:346 Sequence -0:346 move second child to first child (temp highp 4-component vector of int) -0:346 'tfi' (temp highp 4-component vector of int) -0:346 textureFetch (global highp 4-component vector of int) -0:346 'samp2DMSAi' (uniform highp isampler2DMSArray) -0:346 Constant: -0:346 5 (const int) -0:346 5 (const int) -0:346 5 (const int) -0:346 Constant: -0:346 2 (const int) -0:347 Sequence -0:347 move second child to first child (temp highp 4-component vector of uint) -0:347 'tfu' (temp highp 4-component vector of uint) -0:347 textureFetch (global highp 4-component vector of uint) -0:347 'samp2DMSAu' (uniform highp usampler2DMSArray) -0:347 Constant: -0:347 5 (const int) -0:347 5 (const int) -0:347 5 (const int) -0:347 Constant: -0:347 2 (const int) -0:349 Sequence -0:349 move second child to first child (temp highp 3-component vector of int) -0:349 'tfs' (temp highp 3-component vector of int) -0:349 textureSize (global highp 3-component vector of int) -0:349 'samp2DMSA' (uniform highp sampler2DMSArray) -0:350 Sequence -0:350 move second child to first child (temp highp 3-component vector of int) -0:350 'tfsi' (temp highp 3-component vector of int) -0:350 textureSize (global highp 3-component vector of int) -0:350 'samp2DMSAi' (uniform highp isampler2DMSArray) -0:352 Sequence -0:352 move second child to first child (temp highp 3-component vector of int) -0:352 'tfsu' (temp highp 3-component vector of int) -0:352 textureSize (global highp 3-component vector of int) -0:352 'samp2DMSAu' (uniform highp usampler2DMSArray) -0:364 Function Definition: goodImageAtom( (global void) -0:364 Function Parameters: -0:? Sequence -0:370 imageAtomicAdd (global highp int) -0:370 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:370 'P' (uniform highp 2-component vector of int) -0:370 'dati' (temp highp int) -0:371 imageAtomicAdd (global highp uint) -0:371 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:371 'P' (uniform highp 2-component vector of int) -0:371 'datu' (temp highp uint) -0:372 imageAtomicMin (global highp int) -0:372 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:372 'P' (uniform highp 2-component vector of int) -0:372 'dati' (temp highp int) -0:373 imageAtomicMin (global highp uint) -0:373 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:373 'P' (uniform highp 2-component vector of int) -0:373 'datu' (temp highp uint) -0:374 imageAtomicMax (global highp int) -0:374 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:374 'P' (uniform highp 2-component vector of int) -0:374 'dati' (temp highp int) -0:375 imageAtomicMax (global highp uint) -0:375 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:375 'P' (uniform highp 2-component vector of int) -0:375 'datu' (temp highp uint) -0:376 imageAtomicAnd (global highp int) -0:376 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:376 'P' (uniform highp 2-component vector of int) -0:376 'dati' (temp highp int) -0:377 imageAtomicAnd (global highp uint) -0:377 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:377 'P' (uniform highp 2-component vector of int) -0:377 'datu' (temp highp uint) -0:378 imageAtomicOr (global highp int) -0:378 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:378 'P' (uniform highp 2-component vector of int) -0:378 'dati' (temp highp int) -0:379 imageAtomicOr (global highp uint) -0:379 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:379 'P' (uniform highp 2-component vector of int) -0:379 'datu' (temp highp uint) -0:380 imageAtomicXor (global highp int) -0:380 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:380 'P' (uniform highp 2-component vector of int) -0:380 'dati' (temp highp int) -0:381 imageAtomicXor (global highp uint) -0:381 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:381 'P' (uniform highp 2-component vector of int) -0:381 'datu' (temp highp uint) -0:382 imageAtomicExchange (global highp int) -0:382 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:382 'P' (uniform highp 2-component vector of int) -0:382 'dati' (temp highp int) -0:383 imageAtomicExchange (global highp uint) -0:383 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:383 'P' (uniform highp 2-component vector of int) -0:383 'datu' (temp highp uint) -0:384 imageAtomicExchange (global highp float) -0:384 'im2Df' (layout(r32f ) uniform highp image2D) -0:384 'P' (uniform highp 2-component vector of int) -0:384 'datf' (temp highp float) -0:385 imageAtomicCompSwap (global highp int) -0:385 'im2Di' (layout(r32i ) uniform highp iimage2D) -0:385 'P' (uniform highp 2-component vector of int) -0:385 Constant: -0:385 3 (const int) -0:385 'dati' (temp highp int) -0:386 imageAtomicCompSwap (global highp uint) -0:386 'im2Du' (layout(r32ui ) uniform highp uimage2D) -0:386 'P' (uniform highp 2-component vector of int) -0:386 Constant: -0:386 5 (const uint) -0:386 'datu' (temp highp uint) -0:398 Function Definition: badInterp( (global void) -0:398 Function Parameters: -0:400 Sequence -0:400 Constant: -0:400 0.000000 -0:401 Constant: -0:401 0.000000 -0:402 Constant: -0:402 0.000000 0:? Linker Objects 0:? 's' (shared highp 4-component vector of float) 0:? 'v' (buffer highp 4-component vector of float) diff --git a/Test/baseResults/310AofA.vert.out b/Test/baseResults/310AofA.vert.out index 28592d51..6b69e71e 100644 --- a/Test/baseResults/310AofA.vert.out +++ b/Test/baseResults/310AofA.vert.out @@ -359,277 +359,6 @@ ERROR: node is still EOpNull! 0:13 1 (const uint) 0:13 2 (const uint) 0:13 'd' (temp 3-element array of 2-element array of highp int) -0:44 Function Definition: foo(f1[5][7]; (global 4-element array of 7-element array of highp float) -0:44 Function Parameters: -0:44 'a' (in 5-element array of 7-element array of highp float) -0:? Sequence -0:47 move second child to first child (temp 7-element array of highp float) -0:47 'r' (temp 7-element array of highp float) -0:47 direct index (temp 7-element array of highp float) -0:47 'a' (in 5-element array of 7-element array of highp float) -0:47 Constant: -0:47 2 (const int) -0:48 Constant: -0:48 0.000000 -0:49 Constant: -0:49 0.000000 -0:50 Branch: Return with expression -0:50 Construct float (temp 4-element array of 7-element array of float) -0:50 direct index (temp 7-element array of highp float) -0:50 'a' (in 5-element array of 7-element array of highp float) -0:50 Constant: -0:50 0 (const int) -0:50 direct index (temp 7-element array of highp float) -0:50 'a' (in 5-element array of 7-element array of highp float) -0:50 Constant: -0:50 1 (const int) -0:50 'r' (temp 7-element array of highp float) -0:50 direct index (temp 7-element array of highp float) -0:50 'a' (in 5-element array of 7-element array of highp float) -0:50 Constant: -0:50 3 (const int) -0:51 Branch: Return with expression -0:51 Construct float (temp 4-element array of 7-element array of float) -0:51 direct index (temp 7-element array of highp float) -0:51 'a' (in 5-element array of 7-element array of highp float) -0:51 Constant: -0:51 0 (const int) -0:51 direct index (temp 7-element array of highp float) -0:51 'a' (in 5-element array of 7-element array of highp float) -0:51 Constant: -0:51 1 (const int) -0:51 'r' (temp 7-element array of highp float) -0:51 direct index (temp 7-element array of highp float) -0:51 'a' (in 5-element array of 7-element array of highp float) -0:51 Constant: -0:51 3 (const int) -0:52 Branch: Return with expression -0:52 Construct float (temp 4-element array of 7-element array of float) -0:52 direct index (temp 7-element array of highp float) -0:52 'a' (in 5-element array of 7-element array of highp float) -0:52 Constant: -0:52 0 (const int) -0:52 direct index (temp 7-element array of highp float) -0:52 'a' (in 5-element array of 7-element array of highp float) -0:52 Constant: -0:52 1 (const int) -0:52 direct index (temp 7-element array of highp float) -0:52 'a' (in 5-element array of 7-element array of highp float) -0:52 Constant: -0:52 2 (const int) -0:52 direct index (temp 7-element array of highp float) -0:52 'a' (in 5-element array of 7-element array of highp float) -0:52 Constant: -0:52 3 (const int) -0:55 Function Definition: bar(f1[5][7]; (global void) -0:55 Function Parameters: -0:55 '' (in 5-element array of 7-element array of highp float) -0:57 Function Definition: foo2( (global void) -0:57 Function Parameters: -0:? Sequence -0:? Sequence -0:62 move second child to first child (temp highp float) -0:62 direct index (temp highp float) -0:62 direct index (temp 2-element array of highp float) -0:62 direct index (temp 4-element array of 2-element array of highp float) -0:62 'gu' (temp 3-element array of 4-element array of 2-element array of highp float) -0:62 Constant: -0:62 2 (const int) -0:62 Constant: -0:62 4 (const int) -0:62 Constant: -0:62 1 (const int) -0:62 Constant: -0:62 4.000000 -0:64 Sequence -0:64 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float) -0:64 'ca4' (temp 3-element array of 2-element array of highp 4-component vector of float) -0:66 Constant: -0:66 0.000000 -0:66 0.000000 -0:66 0.000000 -0:66 0.000000 -0:66 1.000000 -0:66 1.000000 -0:66 1.000000 -0:66 1.000000 -0:66 0.000000 -0:66 0.000000 -0:66 0.000000 -0:66 0.000000 -0:66 1.000000 -0:66 1.000000 -0:66 1.000000 -0:66 1.000000 -0:66 0.000000 -0:66 0.000000 -0:66 0.000000 -0:66 0.000000 -0:66 1.000000 -0:66 1.000000 -0:66 1.000000 -0:66 1.000000 -0:67 Sequence -0:67 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float) -0:67 'caim' (temp 3-element array of 2-element array of highp 4-component vector of float) -0:69 Constant: -0:69 4.000000 -0:69 4.000000 -0:69 4.000000 -0:69 4.000000 -0:69 2.000000 -0:69 2.000000 -0:69 2.000000 -0:69 2.000000 -0:69 4.000000 -0:69 4.000000 -0:69 4.000000 -0:69 4.000000 -0:69 2.000000 -0:69 2.000000 -0:69 2.000000 -0:69 2.000000 -0:69 4.000000 -0:69 4.000000 -0:69 4.000000 -0:69 4.000000 -0:69 2.000000 -0:69 2.000000 -0:69 2.000000 -0:69 2.000000 -0:70 Sequence -0:70 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float) -0:70 'caim2' (temp 3-element array of 2-element array of highp 4-component vector of float) -0:72 Constant: -0:72 4.000000 -0:72 4.000000 -0:72 4.000000 -0:72 4.000000 -0:72 2.000000 -0:72 2.000000 -0:72 2.000000 -0:72 2.000000 -0:72 4.000000 -0:72 4.000000 -0:72 4.000000 -0:72 4.000000 -0:72 2.000000 -0:72 2.000000 -0:72 2.000000 -0:72 2.000000 -0:72 4.000000 -0:72 4.000000 -0:72 4.000000 -0:72 4.000000 -0:72 2.000000 -0:72 2.000000 -0:72 2.000000 -0:72 2.000000 -0:73 Sequence -0:73 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float) -0:73 'caim3' (temp 3-element array of 2-element array of highp 4-component vector of float) -0:75 Constant: -0:75 4.000000 -0:75 4.000000 -0:75 4.000000 -0:75 4.000000 -0:75 2.000000 -0:75 2.000000 -0:75 2.000000 -0:75 2.000000 -0:75 4.000000 -0:75 4.000000 -0:75 4.000000 -0:75 4.000000 -0:75 2.000000 -0:75 2.000000 -0:75 2.000000 -0:75 2.000000 -0:75 4.000000 -0:75 4.000000 -0:75 4.000000 -0:75 4.000000 -0:75 2.000000 -0:75 2.000000 -0:75 2.000000 -0:75 2.000000 -0:77 move second child to first child (temp 4-element array of 7-element array of highp float) -0:77 'g4' (global 4-element array of 7-element array of highp float) -0:77 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float) -0:77 'g5' (global 5-element array of 7-element array of highp float) -0:78 'g5' (global 5-element array of 7-element array of highp float) -0:79 'gu' (global 1-element array of 7-element array of highp float) -0:81 Constant: -0:81 0.000000 -0:82 Function Call: bar(f1[5][7]; (global void) -0:82 'g5' (global 5-element array of 7-element array of highp float) -0:84 Test condition and select (temp void) -0:84 Condition -0:84 Compare Equal (temp bool) -0:84 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float) -0:84 'g5' (global 5-element array of 7-element array of highp float) -0:84 'g4' (global 4-element array of 7-element array of highp float) -0:84 true case is null -0:86 Test condition and select (temp void) -0:86 Condition -0:86 Constant: -0:86 false (const bool) -0:86 true case is null -0:90 move second child to first child (temp highp float) -0:90 direct index (temp highp float) -0:90 direct index (temp 7-element array of highp float) -0:90 'u' (temp 5-element array of 7-element array of highp float) -0:90 Constant: -0:90 5 (const int) -0:90 Constant: -0:90 2 (const int) -0:90 Constant: -0:90 5.000000 -0:91 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float) -0:91 'u' (temp 5-element array of 7-element array of highp float) -0:94 direct index (layout(column_major shared ) temp highp 4-component vector of float) -0:94 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float) -0:94 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v}) -0:94 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v}) -0:94 Constant: -0:94 1 (const int) -0:94 Constant: -0:94 1 (const int) -0:94 Constant: -0:94 -1 (const int) -0:95 move second child to first child (temp highp 4-component vector of float) -0:95 direct index (layout(column_major shared ) temp highp 4-component vector of float) -0:95 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float) -0:95 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v}) -0:95 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v}) -0:95 Constant: -0:95 1 (const int) -0:95 Constant: -0:95 1 (const int) -0:95 Constant: -0:95 1 (const int) -0:95 Constant: -0:95 4.300000 -0:95 4.300000 -0:95 4.300000 -0:95 4.300000 -0:96 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float) -0:96 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v}) -0:96 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v}) -0:96 Constant: -0:96 1 (const int) -0:96 Constant: -0:96 1 (const int) -0:98 Constant: -0:98 7 (const int) -0:99 array length (temp int) -0:99 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float) -0:99 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v}) -0:99 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v}) -0:99 Constant: -0:99 0 (const int) -0:99 Constant: -0:99 1 (const int) 0:? Linker Objects 0:? 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v}) 0:? 'uname' (layout(column_major shared ) uniform 3-element array of block{layout(column_major shared ) uniform highp float u, layout(column_major shared ) uniform 1-element array of highp 4-component vector of float v}) diff --git a/Test/baseResults/330.frag.out b/Test/baseResults/330.frag.out index 904ad3ed..d3c54fcf 100644 --- a/Test/baseResults/330.frag.out +++ b/Test/baseResults/330.frag.out @@ -152,31 +152,6 @@ ERROR: node is still EOpNull! 0:12 'buffer' (temp int) 0:12 Constant: 0:12 4 (const int) -0:21 Function Definition: foo( (global void) -0:21 Function Parameters: -0:23 Sequence -0:23 Sequence -0:23 move second child to first child (temp 4-component vector of float) -0:23 'c' (temp 4-component vector of float) -0:23 gl_Color: direct index for structure (in 4-component vector of float Color) -0:23 'anon@0' (in block{in 4-component vector of float Color gl_Color, }) -0:23 Constant: -0:23 2 (const uint) -0:24 move second child to first child (temp 4-component vector of float) -0:24 'outVar' (layout(location=0 index=0 ) out 4-component vector of float) -0:24 'inVar' (smooth in 4-component vector of float) -0:133 Function Definition: qlod( (global void) -0:133 Function Parameters: -0:? Sequence -0:140 'lod' (temp 2-component vector of float) -0:141 'lod' (temp 2-component vector of float) -0:147 Function Definition: fooKeyMem( (global void) -0:147 Function Parameters: -0:149 Sequence -0:149 precise: direct index for structure (global int) -0:149 'KeyMem' (global structure{global int precise}) -0:149 Constant: -0:149 0 (const int) 0:? Linker Objects 0:? 'inVar' (smooth in 4-component vector of float) 0:? 'outVar' (layout(location=0 index=0 ) out 4-component vector of float) diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out index 90904140..aea4e49b 100644 --- a/Test/baseResults/400.frag.out +++ b/Test/baseResults/400.frag.out @@ -642,312 +642,6 @@ ERROR: node is still EOpNull! 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:? 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: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:? Linker Objects 0:? 'c2D' (smooth in 2-component vector of float) 0:? 'i' (flat in int) diff --git a/Test/baseResults/400.geom.out b/Test/baseResults/400.geom.out index 16117e62..86e2b8ff 100644 --- a/Test/baseResults/400.geom.out +++ b/Test/baseResults/400.geom.out @@ -1070,981 +1070,6 @@ ERROR: node is still EOpNull! 0:9 move second child to first child (temp int) 0:9 'id' (temp int) 0:9 'gl_InvocationID' (in int InvocationID) -0:23 Function Definition: foo( (global void) -0:23 Function Parameters: -0:25 Sequence -0:25 Constant: -0:25 1 (const int) -0:26 gl_Position: direct index for structure (in 4-component vector of float Position) -0:26 direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) -0:26 'gl_in' (in 3-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) -0:26 Constant: -0:26 1 (const int) -0:26 Constant: -0:26 0 (const int) -0:34 Function Definition: foo2( (global void) -0:34 Function Parameters: -0:36 Sequence -0:36 Constant: -0:36 1 (const int) -0:37 Constant: -0:37 3 (const int) -0:46 Function Definition: foo3( (global void) -0:46 Function Parameters: -0:48 Sequence -0:48 Constant: -0:48 3 (const int) -0:49 Constant: -0:49 3 (const int) -0:50 Constant: -0:50 3 (const int) -0:51 Constant: -0:51 3 (const int) -0:75 Function Definition: bits( (global void) -0:75 Function Parameters: -0:? Sequence -0:78 move second child to first child (temp 2-component vector of uint) -0:78 'u2' (temp 2-component vector of uint) -0:78 addCarry (global 2-component vector of uint) -0:78 'u2' (temp 2-component vector of uint) -0:78 'u2' (temp 2-component vector of uint) -0:78 'u2' (temp 2-component vector of uint) -0:80 move second child to first child (temp uint) -0:80 'u1' (temp uint) -0:80 subBorrow (global uint) -0:80 'u1' (temp uint) -0:80 'u1' (temp uint) -0:80 'u1' (temp uint) -0:82 uMulExtended (global void) -0:82 'u4' (temp 4-component vector of uint) -0:82 'u4' (temp 4-component vector of uint) -0:82 'u4' (temp 4-component vector of uint) -0:82 'u4' (temp 4-component vector of uint) -0:84 iMulExtended (global void) -0:84 'i4' (temp 4-component vector of int) -0:84 'i4' (temp 4-component vector of int) -0:84 'i4' (temp 4-component vector of int) -0:84 'i4' (temp 4-component vector of int) -0:86 move second child to first child (temp int) -0:86 'i1' (temp int) -0:86 bitfieldExtract (global int) -0:86 'i1' (temp int) -0:86 Constant: -0:86 4 (const int) -0:86 Constant: -0:86 5 (const int) -0:88 move second child to first child (temp 3-component vector of uint) -0:88 'u3' (temp 3-component vector of uint) -0:88 bitfieldExtract (global 3-component vector of uint) -0:88 'u3' (temp 3-component vector of uint) -0:88 Constant: -0:88 4 (const int) -0:88 Constant: -0:88 5 (const int) -0:90 move second child to first child (temp 3-component vector of int) -0:90 'i3' (temp 3-component vector of int) -0:90 bitfieldInsert (global 3-component vector of int) -0:90 'i3' (temp 3-component vector of int) -0:90 'i3' (temp 3-component vector of int) -0:90 Constant: -0:90 4 (const int) -0:90 Constant: -0:90 5 (const int) -0:91 move second child to first child (temp uint) -0:91 'u1' (temp uint) -0:91 bitfieldInsert (global uint) -0:91 'u1' (temp uint) -0:91 'u1' (temp uint) -0:91 Constant: -0:91 4 (const int) -0:91 Constant: -0:91 5 (const int) -0:93 move second child to first child (temp 2-component vector of int) -0:93 'i2' (temp 2-component vector of int) -0:93 bitFieldReverse (global 2-component vector of int) -0:93 'i2' (temp 2-component vector of int) -0:94 move second child to first child (temp 4-component vector of uint) -0:94 'u4' (temp 4-component vector of uint) -0:94 bitFieldReverse (global 4-component vector of uint) -0:94 'u4' (temp 4-component vector of uint) -0:95 move second child to first child (temp int) -0:95 'i1' (temp int) -0:95 bitCount (global int) -0:95 'i1' (temp int) -0:96 move second child to first child (temp 3-component vector of int) -0:96 'i3' (temp 3-component vector of int) -0:96 bitCount (global 3-component vector of int) -0:96 'u3' (temp 3-component vector of uint) -0:97 move second child to first child (temp 2-component vector of int) -0:97 'i2' (temp 2-component vector of int) -0:97 findLSB (global 2-component vector of int) -0:97 'i2' (temp 2-component vector of int) -0:98 move second child to first child (temp 4-component vector of int) -0:98 'i4' (temp 4-component vector of int) -0:98 findLSB (global 4-component vector of int) -0:98 'u4' (temp 4-component vector of uint) -0:99 move second child to first child (temp int) -0:99 'i1' (temp int) -0:99 findMSB (global int) -0:99 'i1' (temp int) -0:100 move second child to first child (temp 2-component vector of int) -0:100 'i2' (temp 2-component vector of int) -0:100 findMSB (global 2-component vector of int) -0:100 'u2' (temp 2-component vector of uint) -0:108 Function Definition: qlod( (global void) -0:108 Function Parameters: -0:? Sequence -0:115 'lod' (temp 2-component vector of float) -0:116 'lod' (temp 2-component vector of float) -0:119 Function Definition: doubles( (global void) -0:119 Function Parameters: -0:? Sequence -0:131 move second child to first child (temp double) -0:131 'doublev' (temp double) -0:131 Constant: -0:131 1.702939 -0:132 move second child to first child (temp 2-component vector of double) -0:132 'dvec2v' (temp 2-component vector of double) -0:132 Constant: -0:132 1.643168 -0:132 1.643168 -0:133 move second child to first child (temp 3-component vector of double) -0:133 'dvec3v' (temp 3-component vector of double) -0:133 Constant: -0:133 1.414214 -0:133 1.414214 -0:133 1.414214 -0:134 move second child to first child (temp 4-component vector of double) -0:134 'dvec4v' (temp 4-component vector of double) -0:134 Constant: -0:134 1.449138 -0:134 1.449138 -0:134 1.449138 -0:134 1.449138 -0:136 add second child into first child (temp double) -0:136 'doublev' (temp double) -0:136 inverse sqrt (global double) -0:136 'doublev' (temp double) -0:137 add second child into first child (temp 2-component vector of double) -0:137 'dvec2v' (temp 2-component vector of double) -0:137 inverse sqrt (global 2-component vector of double) -0:137 'dvec2v' (temp 2-component vector of double) -0:138 add second child into first child (temp 3-component vector of double) -0:138 'dvec3v' (temp 3-component vector of double) -0:138 inverse sqrt (global 3-component vector of double) -0:138 'dvec3v' (temp 3-component vector of double) -0:139 add second child into first child (temp 4-component vector of double) -0:139 'dvec4v' (temp 4-component vector of double) -0:139 inverse sqrt (global 4-component vector of double) -0:139 'dvec4v' (temp 4-component vector of double) -0:141 add second child into first child (temp double) -0:141 'doublev' (temp double) -0:141 Absolute value (global double) -0:141 'doublev' (temp double) -0:142 add second child into first child (temp 2-component vector of double) -0:142 'dvec2v' (temp 2-component vector of double) -0:142 Absolute value (global 2-component vector of double) -0:142 'dvec2v' (temp 2-component vector of double) -0:143 add second child into first child (temp 3-component vector of double) -0:143 'dvec3v' (temp 3-component vector of double) -0:143 Absolute value (global 3-component vector of double) -0:143 'dvec3v' (temp 3-component vector of double) -0:144 add second child into first child (temp 4-component vector of double) -0:144 'dvec4v' (temp 4-component vector of double) -0:144 Absolute value (global 4-component vector of double) -0:144 'dvec4v' (temp 4-component vector of double) -0:146 add second child into first child (temp double) -0:146 'doublev' (temp double) -0:146 Sign (global double) -0:146 'doublev' (temp double) -0:147 add second child into first child (temp 2-component vector of double) -0:147 'dvec2v' (temp 2-component vector of double) -0:147 Sign (global 2-component vector of double) -0:147 'dvec2v' (temp 2-component vector of double) -0:148 add second child into first child (temp 3-component vector of double) -0:148 'dvec3v' (temp 3-component vector of double) -0:148 Sign (global 3-component vector of double) -0:148 'dvec3v' (temp 3-component vector of double) -0:149 add second child into first child (temp 4-component vector of double) -0:149 'dvec4v' (temp 4-component vector of double) -0:149 Sign (global 4-component vector of double) -0:149 'dvec4v' (temp 4-component vector of double) -0:151 add second child into first child (temp double) -0:151 'doublev' (temp double) -0:151 Floor (global double) -0:151 'doublev' (temp double) -0:152 add second child into first child (temp 2-component vector of double) -0:152 'dvec2v' (temp 2-component vector of double) -0:152 Floor (global 2-component vector of double) -0:152 'dvec2v' (temp 2-component vector of double) -0:153 add second child into first child (temp 3-component vector of double) -0:153 'dvec3v' (temp 3-component vector of double) -0:153 Floor (global 3-component vector of double) -0:153 'dvec3v' (temp 3-component vector of double) -0:154 add second child into first child (temp 4-component vector of double) -0:154 'dvec4v' (temp 4-component vector of double) -0:154 Floor (global 4-component vector of double) -0:154 'dvec4v' (temp 4-component vector of double) -0:156 add second child into first child (temp double) -0:156 'doublev' (temp double) -0:156 trunc (global double) -0:156 'doublev' (temp double) -0:157 add second child into first child (temp 2-component vector of double) -0:157 'dvec2v' (temp 2-component vector of double) -0:157 trunc (global 2-component vector of double) -0:157 'dvec2v' (temp 2-component vector of double) -0:158 add second child into first child (temp 3-component vector of double) -0:158 'dvec3v' (temp 3-component vector of double) -0:158 trunc (global 3-component vector of double) -0:158 'dvec3v' (temp 3-component vector of double) -0:159 add second child into first child (temp 4-component vector of double) -0:159 'dvec4v' (temp 4-component vector of double) -0:159 trunc (global 4-component vector of double) -0:159 'dvec4v' (temp 4-component vector of double) -0:161 add second child into first child (temp double) -0:161 'doublev' (temp double) -0:161 round (global double) -0:161 'doublev' (temp double) -0:162 add second child into first child (temp 2-component vector of double) -0:162 'dvec2v' (temp 2-component vector of double) -0:162 round (global 2-component vector of double) -0:162 'dvec2v' (temp 2-component vector of double) -0:163 add second child into first child (temp 3-component vector of double) -0:163 'dvec3v' (temp 3-component vector of double) -0:163 round (global 3-component vector of double) -0:163 'dvec3v' (temp 3-component vector of double) -0:164 add second child into first child (temp 4-component vector of double) -0:164 'dvec4v' (temp 4-component vector of double) -0:164 round (global 4-component vector of double) -0:164 'dvec4v' (temp 4-component vector of double) -0:166 add second child into first child (temp double) -0:166 'doublev' (temp double) -0:166 roundEven (global double) -0:166 'doublev' (temp double) -0:167 add second child into first child (temp 2-component vector of double) -0:167 'dvec2v' (temp 2-component vector of double) -0:167 roundEven (global 2-component vector of double) -0:167 'dvec2v' (temp 2-component vector of double) -0:168 add second child into first child (temp 3-component vector of double) -0:168 'dvec3v' (temp 3-component vector of double) -0:168 roundEven (global 3-component vector of double) -0:168 'dvec3v' (temp 3-component vector of double) -0:169 add second child into first child (temp 4-component vector of double) -0:169 'dvec4v' (temp 4-component vector of double) -0:169 roundEven (global 4-component vector of double) -0:169 'dvec4v' (temp 4-component vector of double) -0:171 add second child into first child (temp double) -0:171 'doublev' (temp double) -0:171 Ceiling (global double) -0:171 'doublev' (temp double) -0:172 add second child into first child (temp 2-component vector of double) -0:172 'dvec2v' (temp 2-component vector of double) -0:172 Ceiling (global 2-component vector of double) -0:172 'dvec2v' (temp 2-component vector of double) -0:173 add second child into first child (temp 3-component vector of double) -0:173 'dvec3v' (temp 3-component vector of double) -0:173 Ceiling (global 3-component vector of double) -0:173 'dvec3v' (temp 3-component vector of double) -0:174 add second child into first child (temp 4-component vector of double) -0:174 'dvec4v' (temp 4-component vector of double) -0:174 Ceiling (global 4-component vector of double) -0:174 'dvec4v' (temp 4-component vector of double) -0:176 add second child into first child (temp double) -0:176 'doublev' (temp double) -0:176 Fraction (global double) -0:176 'doublev' (temp double) -0:177 add second child into first child (temp 2-component vector of double) -0:177 'dvec2v' (temp 2-component vector of double) -0:177 Fraction (global 2-component vector of double) -0:177 'dvec2v' (temp 2-component vector of double) -0:178 add second child into first child (temp 3-component vector of double) -0:178 'dvec3v' (temp 3-component vector of double) -0:178 Fraction (global 3-component vector of double) -0:178 'dvec3v' (temp 3-component vector of double) -0:179 add second child into first child (temp 4-component vector of double) -0:179 'dvec4v' (temp 4-component vector of double) -0:179 Fraction (global 4-component vector of double) -0:179 'dvec4v' (temp 4-component vector of double) -0:181 add second child into first child (temp double) -0:181 'doublev' (temp double) -0:181 mod (global double) -0:181 'doublev' (temp double) -0:181 'doublev' (temp double) -0:182 add second child into first child (temp 2-component vector of double) -0:182 'dvec2v' (temp 2-component vector of double) -0:182 mod (global 2-component vector of double) -0:182 'dvec2v' (temp 2-component vector of double) -0:182 'doublev' (temp double) -0:183 add second child into first child (temp 3-component vector of double) -0:183 'dvec3v' (temp 3-component vector of double) -0:183 mod (global 3-component vector of double) -0:183 'dvec3v' (temp 3-component vector of double) -0:183 'doublev' (temp double) -0:184 add second child into first child (temp 4-component vector of double) -0:184 'dvec4v' (temp 4-component vector of double) -0:184 mod (global 4-component vector of double) -0:184 'dvec4v' (temp 4-component vector of double) -0:184 'doublev' (temp double) -0:185 add second child into first child (temp 2-component vector of double) -0:185 'dvec2v' (temp 2-component vector of double) -0:185 mod (global 2-component vector of double) -0:185 'dvec2v' (temp 2-component vector of double) -0:185 'dvec2v' (temp 2-component vector of double) -0:186 add second child into first child (temp 3-component vector of double) -0:186 'dvec3v' (temp 3-component vector of double) -0:186 mod (global 3-component vector of double) -0:186 'dvec3v' (temp 3-component vector of double) -0:186 'dvec3v' (temp 3-component vector of double) -0:187 add second child into first child (temp 4-component vector of double) -0:187 'dvec4v' (temp 4-component vector of double) -0:187 mod (global 4-component vector of double) -0:187 'dvec4v' (temp 4-component vector of double) -0:187 'dvec4v' (temp 4-component vector of double) -0:189 add second child into first child (temp double) -0:189 'doublev' (temp double) -0:189 modf (global double) -0:189 'doublev' (temp double) -0:189 'doublev' (temp double) -0:190 add second child into first child (temp 2-component vector of double) -0:190 'dvec2v' (temp 2-component vector of double) -0:190 modf (global 2-component vector of double) -0:190 'dvec2v' (temp 2-component vector of double) -0:190 'dvec2v' (temp 2-component vector of double) -0:191 add second child into first child (temp 3-component vector of double) -0:191 'dvec3v' (temp 3-component vector of double) -0:191 modf (global 3-component vector of double) -0:191 'dvec3v' (temp 3-component vector of double) -0:191 'dvec3v' (temp 3-component vector of double) -0:192 add second child into first child (temp 4-component vector of double) -0:192 'dvec4v' (temp 4-component vector of double) -0:192 modf (global 4-component vector of double) -0:192 'dvec4v' (temp 4-component vector of double) -0:192 'dvec4v' (temp 4-component vector of double) -0:194 add second child into first child (temp double) -0:194 'doublev' (temp double) -0:194 min (global double) -0:194 'doublev' (temp double) -0:194 'doublev' (temp double) -0:195 add second child into first child (temp 2-component vector of double) -0:195 'dvec2v' (temp 2-component vector of double) -0:195 min (global 2-component vector of double) -0:195 'dvec2v' (temp 2-component vector of double) -0:195 'doublev' (temp double) -0:196 add second child into first child (temp 3-component vector of double) -0:196 'dvec3v' (temp 3-component vector of double) -0:196 min (global 3-component vector of double) -0:196 'dvec3v' (temp 3-component vector of double) -0:196 'doublev' (temp double) -0:197 add second child into first child (temp 4-component vector of double) -0:197 'dvec4v' (temp 4-component vector of double) -0:197 min (global 4-component vector of double) -0:197 'dvec4v' (temp 4-component vector of double) -0:197 'doublev' (temp double) -0:198 add second child into first child (temp 2-component vector of double) -0:198 'dvec2v' (temp 2-component vector of double) -0:198 min (global 2-component vector of double) -0:198 'dvec2v' (temp 2-component vector of double) -0:198 'dvec2v' (temp 2-component vector of double) -0:199 add second child into first child (temp 3-component vector of double) -0:199 'dvec3v' (temp 3-component vector of double) -0:199 min (global 3-component vector of double) -0:199 'dvec3v' (temp 3-component vector of double) -0:199 'dvec3v' (temp 3-component vector of double) -0:200 add second child into first child (temp 4-component vector of double) -0:200 'dvec4v' (temp 4-component vector of double) -0:200 min (global 4-component vector of double) -0:200 'dvec4v' (temp 4-component vector of double) -0:200 'dvec4v' (temp 4-component vector of double) -0:202 add second child into first child (temp double) -0:202 'doublev' (temp double) -0:202 max (global double) -0:202 'doublev' (temp double) -0:202 'doublev' (temp double) -0:203 add second child into first child (temp 2-component vector of double) -0:203 'dvec2v' (temp 2-component vector of double) -0:203 max (global 2-component vector of double) -0:203 'dvec2v' (temp 2-component vector of double) -0:203 'doublev' (temp double) -0:204 add second child into first child (temp 3-component vector of double) -0:204 'dvec3v' (temp 3-component vector of double) -0:204 max (global 3-component vector of double) -0:204 'dvec3v' (temp 3-component vector of double) -0:204 'doublev' (temp double) -0:205 add second child into first child (temp 4-component vector of double) -0:205 'dvec4v' (temp 4-component vector of double) -0:205 max (global 4-component vector of double) -0:205 'dvec4v' (temp 4-component vector of double) -0:205 'doublev' (temp double) -0:206 add second child into first child (temp 2-component vector of double) -0:206 'dvec2v' (temp 2-component vector of double) -0:206 max (global 2-component vector of double) -0:206 'dvec2v' (temp 2-component vector of double) -0:206 'dvec2v' (temp 2-component vector of double) -0:207 add second child into first child (temp 3-component vector of double) -0:207 'dvec3v' (temp 3-component vector of double) -0:207 max (global 3-component vector of double) -0:207 'dvec3v' (temp 3-component vector of double) -0:207 'dvec3v' (temp 3-component vector of double) -0:208 add second child into first child (temp 4-component vector of double) -0:208 'dvec4v' (temp 4-component vector of double) -0:208 max (global 4-component vector of double) -0:208 'dvec4v' (temp 4-component vector of double) -0:208 'dvec4v' (temp 4-component vector of double) -0:210 add second child into first child (temp double) -0:210 'doublev' (temp double) -0:210 clamp (global double) -0:210 'doublev' (temp double) -0:210 'doublev' (temp double) -0:210 'doublev' (temp double) -0:211 add second child into first child (temp 2-component vector of double) -0:211 'dvec2v' (temp 2-component vector of double) -0:211 clamp (global 2-component vector of double) -0:211 'dvec2v' (temp 2-component vector of double) -0:211 'doublev' (temp double) -0:211 'doublev' (temp double) -0:212 add second child into first child (temp 3-component vector of double) -0:212 'dvec3v' (temp 3-component vector of double) -0:212 clamp (global 3-component vector of double) -0:212 'dvec3v' (temp 3-component vector of double) -0:212 'doublev' (temp double) -0:212 'doublev' (temp double) -0:213 add second child into first child (temp 4-component vector of double) -0:213 'dvec4v' (temp 4-component vector of double) -0:213 clamp (global 4-component vector of double) -0:213 'dvec4v' (temp 4-component vector of double) -0:213 'doublev' (temp double) -0:213 'doublev' (temp double) -0:214 add second child into first child (temp 2-component vector of double) -0:214 'dvec2v' (temp 2-component vector of double) -0:214 clamp (global 2-component vector of double) -0:214 'dvec2v' (temp 2-component vector of double) -0:214 'dvec2v' (temp 2-component vector of double) -0:214 'dvec2v' (temp 2-component vector of double) -0:215 add second child into first child (temp 3-component vector of double) -0:215 'dvec3v' (temp 3-component vector of double) -0:215 clamp (global 3-component vector of double) -0:215 'dvec3v' (temp 3-component vector of double) -0:215 'dvec3v' (temp 3-component vector of double) -0:215 'dvec3v' (temp 3-component vector of double) -0:216 add second child into first child (temp 4-component vector of double) -0:216 'dvec4v' (temp 4-component vector of double) -0:216 clamp (global 4-component vector of double) -0:216 'dvec4v' (temp 4-component vector of double) -0:216 'dvec4v' (temp 4-component vector of double) -0:216 'dvec4v' (temp 4-component vector of double) -0:218 add second child into first child (temp double) -0:218 'doublev' (temp double) -0:218 mix (global double) -0:218 'doublev' (temp double) -0:218 'doublev' (temp double) -0:218 'doublev' (temp double) -0:219 add second child into first child (temp 2-component vector of double) -0:219 'dvec2v' (temp 2-component vector of double) -0:219 mix (global 2-component vector of double) -0:219 'dvec2v' (temp 2-component vector of double) -0:219 'dvec2v' (temp 2-component vector of double) -0:219 'doublev' (temp double) -0:220 add second child into first child (temp 3-component vector of double) -0:220 'dvec3v' (temp 3-component vector of double) -0:220 mix (global 3-component vector of double) -0:220 'dvec3v' (temp 3-component vector of double) -0:220 'dvec3v' (temp 3-component vector of double) -0:220 'doublev' (temp double) -0:221 add second child into first child (temp 4-component vector of double) -0:221 'dvec4v' (temp 4-component vector of double) -0:221 mix (global 4-component vector of double) -0:221 'dvec4v' (temp 4-component vector of double) -0:221 'dvec4v' (temp 4-component vector of double) -0:221 'doublev' (temp double) -0:222 add second child into first child (temp 2-component vector of double) -0:222 'dvec2v' (temp 2-component vector of double) -0:222 mix (global 2-component vector of double) -0:222 'dvec2v' (temp 2-component vector of double) -0:222 'dvec2v' (temp 2-component vector of double) -0:222 'dvec2v' (temp 2-component vector of double) -0:223 add second child into first child (temp 3-component vector of double) -0:223 'dvec3v' (temp 3-component vector of double) -0:223 mix (global 3-component vector of double) -0:223 'dvec3v' (temp 3-component vector of double) -0:223 'dvec3v' (temp 3-component vector of double) -0:223 'dvec3v' (temp 3-component vector of double) -0:224 add second child into first child (temp 4-component vector of double) -0:224 'dvec4v' (temp 4-component vector of double) -0:224 mix (global 4-component vector of double) -0:224 'dvec4v' (temp 4-component vector of double) -0:224 'dvec4v' (temp 4-component vector of double) -0:224 'dvec4v' (temp 4-component vector of double) -0:225 add second child into first child (temp double) -0:225 'doublev' (temp double) -0:225 mix (global double) -0:225 'doublev' (temp double) -0:225 'doublev' (temp double) -0:225 'boolv' (temp bool) -0:226 add second child into first child (temp 2-component vector of double) -0:226 'dvec2v' (temp 2-component vector of double) -0:226 mix (global 2-component vector of double) -0:226 'dvec2v' (temp 2-component vector of double) -0:226 'dvec2v' (temp 2-component vector of double) -0:226 'bvec2v' (temp 2-component vector of bool) -0:227 add second child into first child (temp 3-component vector of double) -0:227 'dvec3v' (temp 3-component vector of double) -0:227 mix (global 3-component vector of double) -0:227 'dvec3v' (temp 3-component vector of double) -0:227 'dvec3v' (temp 3-component vector of double) -0:227 'bvec3v' (temp 3-component vector of bool) -0:228 add second child into first child (temp 4-component vector of double) -0:228 'dvec4v' (temp 4-component vector of double) -0:228 mix (global 4-component vector of double) -0:228 'dvec4v' (temp 4-component vector of double) -0:228 'dvec4v' (temp 4-component vector of double) -0:228 'bvec4v' (temp 4-component vector of bool) -0:230 add second child into first child (temp double) -0:230 'doublev' (temp double) -0:230 step (global double) -0:230 'doublev' (temp double) -0:230 'doublev' (temp double) -0:231 add second child into first child (temp 2-component vector of double) -0:231 'dvec2v' (temp 2-component vector of double) -0:231 step (global 2-component vector of double) -0:231 'dvec2v' (temp 2-component vector of double) -0:231 'dvec2v' (temp 2-component vector of double) -0:232 add second child into first child (temp 3-component vector of double) -0:232 'dvec3v' (temp 3-component vector of double) -0:232 step (global 3-component vector of double) -0:232 'dvec3v' (temp 3-component vector of double) -0:232 'dvec3v' (temp 3-component vector of double) -0:233 add second child into first child (temp 4-component vector of double) -0:233 'dvec4v' (temp 4-component vector of double) -0:233 step (global 4-component vector of double) -0:233 'dvec4v' (temp 4-component vector of double) -0:233 'dvec4v' (temp 4-component vector of double) -0:234 add second child into first child (temp 2-component vector of double) -0:234 'dvec2v' (temp 2-component vector of double) -0:234 step (global 2-component vector of double) -0:234 'doublev' (temp double) -0:234 'dvec2v' (temp 2-component vector of double) -0:235 add second child into first child (temp 3-component vector of double) -0:235 'dvec3v' (temp 3-component vector of double) -0:235 step (global 3-component vector of double) -0:235 'doublev' (temp double) -0:235 'dvec3v' (temp 3-component vector of double) -0:236 add second child into first child (temp 4-component vector of double) -0:236 'dvec4v' (temp 4-component vector of double) -0:236 step (global 4-component vector of double) -0:236 'doublev' (temp double) -0:236 'dvec4v' (temp 4-component vector of double) -0:238 add second child into first child (temp double) -0:238 'doublev' (temp double) -0:238 smoothstep (global double) -0:238 'doublev' (temp double) -0:238 'doublev' (temp double) -0:238 'doublev' (temp double) -0:239 add second child into first child (temp 2-component vector of double) -0:239 'dvec2v' (temp 2-component vector of double) -0:239 smoothstep (global 2-component vector of double) -0:239 'dvec2v' (temp 2-component vector of double) -0:239 'dvec2v' (temp 2-component vector of double) -0:239 'dvec2v' (temp 2-component vector of double) -0:240 add second child into first child (temp 3-component vector of double) -0:240 'dvec3v' (temp 3-component vector of double) -0:240 smoothstep (global 3-component vector of double) -0:240 'dvec3v' (temp 3-component vector of double) -0:240 'dvec3v' (temp 3-component vector of double) -0:240 'dvec3v' (temp 3-component vector of double) -0:241 add second child into first child (temp 4-component vector of double) -0:241 'dvec4v' (temp 4-component vector of double) -0:241 smoothstep (global 4-component vector of double) -0:241 'dvec4v' (temp 4-component vector of double) -0:241 'dvec4v' (temp 4-component vector of double) -0:241 'dvec4v' (temp 4-component vector of double) -0:242 add second child into first child (temp 2-component vector of double) -0:242 'dvec2v' (temp 2-component vector of double) -0:242 smoothstep (global 2-component vector of double) -0:242 'doublev' (temp double) -0:242 'doublev' (temp double) -0:242 'dvec2v' (temp 2-component vector of double) -0:243 add second child into first child (temp 3-component vector of double) -0:243 'dvec3v' (temp 3-component vector of double) -0:243 smoothstep (global 3-component vector of double) -0:243 'doublev' (temp double) -0:243 'doublev' (temp double) -0:243 'dvec3v' (temp 3-component vector of double) -0:244 add second child into first child (temp 4-component vector of double) -0:244 'dvec4v' (temp 4-component vector of double) -0:244 smoothstep (global 4-component vector of double) -0:244 'doublev' (temp double) -0:244 'doublev' (temp double) -0:244 'dvec4v' (temp 4-component vector of double) -0:246 move second child to first child (temp bool) -0:246 'boolv' (temp bool) -0:246 isnan (global bool) -0:246 'doublev' (temp double) -0:247 move second child to first child (temp 2-component vector of bool) -0:247 'bvec2v' (temp 2-component vector of bool) -0:247 isnan (global 2-component vector of bool) -0:247 'dvec2v' (temp 2-component vector of double) -0:248 move second child to first child (temp 3-component vector of bool) -0:248 'bvec3v' (temp 3-component vector of bool) -0:248 isnan (global 3-component vector of bool) -0:248 'dvec3v' (temp 3-component vector of double) -0:249 move second child to first child (temp 4-component vector of bool) -0:249 'bvec4v' (temp 4-component vector of bool) -0:249 isnan (global 4-component vector of bool) -0:249 'dvec4v' (temp 4-component vector of double) -0:251 move second child to first child (temp bool) -0:251 'boolv' (temp bool) -0:251 Test condition and select (temp bool) -0:251 Condition -0:251 'boolv' (temp bool) -0:251 true case -0:251 isinf (global bool) -0:251 'doublev' (temp double) -0:251 false case -0:251 Constant: -0:251 false (const bool) -0:252 move second child to first child (temp 2-component vector of bool) -0:252 'bvec2v' (temp 2-component vector of bool) -0:252 Test condition and select (temp 2-component vector of bool) -0:252 Condition -0:252 'boolv' (temp bool) -0:252 true case -0:252 isinf (global 2-component vector of bool) -0:252 'dvec2v' (temp 2-component vector of double) -0:252 false case -0:252 Constant: -0:252 false (const bool) -0:252 false (const bool) -0:253 move second child to first child (temp 3-component vector of bool) -0:253 'bvec3v' (temp 3-component vector of bool) -0:253 Test condition and select (temp 3-component vector of bool) -0:253 Condition -0:253 'boolv' (temp bool) -0:253 true case -0:253 isinf (global 3-component vector of bool) -0:253 'dvec3v' (temp 3-component vector of double) -0:253 false case -0:253 Constant: -0:253 false (const bool) -0:253 false (const bool) -0:253 false (const bool) -0:254 move second child to first child (temp 4-component vector of bool) -0:254 'bvec4v' (temp 4-component vector of bool) -0:254 Test condition and select (temp 4-component vector of bool) -0:254 Condition -0:254 'boolv' (temp bool) -0:254 true case -0:254 isinf (global 4-component vector of bool) -0:254 'dvec4v' (temp 4-component vector of double) -0:254 false case -0:254 Constant: -0:254 false (const bool) -0:254 false (const bool) -0:254 false (const bool) -0:254 false (const bool) -0:256 add second child into first child (temp double) -0:256 'doublev' (temp double) -0:256 length (global double) -0:256 'doublev' (temp double) -0:257 add second child into first child (temp double) -0:257 'doublev' (temp double) -0:257 length (global double) -0:257 'dvec2v' (temp 2-component vector of double) -0:258 add second child into first child (temp double) -0:258 'doublev' (temp double) -0:258 length (global double) -0:258 'dvec3v' (temp 3-component vector of double) -0:259 add second child into first child (temp double) -0:259 'doublev' (temp double) -0:259 length (global double) -0:259 'dvec4v' (temp 4-component vector of double) -0:261 add second child into first child (temp double) -0:261 'doublev' (temp double) -0:261 distance (global double) -0:261 'doublev' (temp double) -0:261 'doublev' (temp double) -0:262 add second child into first child (temp double) -0:262 'doublev' (temp double) -0:262 distance (global double) -0:262 'dvec2v' (temp 2-component vector of double) -0:262 'dvec2v' (temp 2-component vector of double) -0:263 add second child into first child (temp double) -0:263 'doublev' (temp double) -0:263 distance (global double) -0:263 'dvec3v' (temp 3-component vector of double) -0:263 'dvec3v' (temp 3-component vector of double) -0:264 add second child into first child (temp double) -0:264 'doublev' (temp double) -0:264 distance (global double) -0:264 'dvec4v' (temp 4-component vector of double) -0:264 'dvec4v' (temp 4-component vector of double) -0:266 add second child into first child (temp double) -0:266 'doublev' (temp double) -0:266 dot-product (global double) -0:266 'doublev' (temp double) -0:266 'doublev' (temp double) -0:267 add second child into first child (temp double) -0:267 'doublev' (temp double) -0:267 dot-product (global double) -0:267 'dvec2v' (temp 2-component vector of double) -0:267 'dvec2v' (temp 2-component vector of double) -0:268 add second child into first child (temp double) -0:268 'doublev' (temp double) -0:268 dot-product (global double) -0:268 'dvec3v' (temp 3-component vector of double) -0:268 'dvec3v' (temp 3-component vector of double) -0:269 add second child into first child (temp double) -0:269 'doublev' (temp double) -0:269 dot-product (global double) -0:269 'dvec4v' (temp 4-component vector of double) -0:269 'dvec4v' (temp 4-component vector of double) -0:271 add second child into first child (temp 3-component vector of double) -0:271 'dvec3v' (temp 3-component vector of double) -0:271 cross-product (global 3-component vector of double) -0:271 'dvec3v' (temp 3-component vector of double) -0:271 'dvec3v' (temp 3-component vector of double) -0:273 add second child into first child (temp double) -0:273 'doublev' (temp double) -0:273 normalize (global double) -0:273 'doublev' (temp double) -0:274 add second child into first child (temp 2-component vector of double) -0:274 'dvec2v' (temp 2-component vector of double) -0:274 normalize (global 2-component vector of double) -0:274 'dvec2v' (temp 2-component vector of double) -0:275 add second child into first child (temp 3-component vector of double) -0:275 'dvec3v' (temp 3-component vector of double) -0:275 normalize (global 3-component vector of double) -0:275 'dvec3v' (temp 3-component vector of double) -0:276 add second child into first child (temp 4-component vector of double) -0:276 'dvec4v' (temp 4-component vector of double) -0:276 normalize (global 4-component vector of double) -0:276 'dvec4v' (temp 4-component vector of double) -0:278 add second child into first child (temp double) -0:278 'doublev' (temp double) -0:278 face-forward (global double) -0:278 'doublev' (temp double) -0:278 'doublev' (temp double) -0:278 'doublev' (temp double) -0:279 add second child into first child (temp 2-component vector of double) -0:279 'dvec2v' (temp 2-component vector of double) -0:279 face-forward (global 2-component vector of double) -0:279 'dvec2v' (temp 2-component vector of double) -0:279 'dvec2v' (temp 2-component vector of double) -0:279 'dvec2v' (temp 2-component vector of double) -0:280 add second child into first child (temp 3-component vector of double) -0:280 'dvec3v' (temp 3-component vector of double) -0:280 face-forward (global 3-component vector of double) -0:280 'dvec3v' (temp 3-component vector of double) -0:280 'dvec3v' (temp 3-component vector of double) -0:280 'dvec3v' (temp 3-component vector of double) -0:281 add second child into first child (temp 4-component vector of double) -0:281 'dvec4v' (temp 4-component vector of double) -0:281 face-forward (global 4-component vector of double) -0:281 'dvec4v' (temp 4-component vector of double) -0:281 'dvec4v' (temp 4-component vector of double) -0:281 'dvec4v' (temp 4-component vector of double) -0:283 add second child into first child (temp double) -0:283 'doublev' (temp double) -0:283 reflect (global double) -0:283 'doublev' (temp double) -0:283 'doublev' (temp double) -0:284 add second child into first child (temp 2-component vector of double) -0:284 'dvec2v' (temp 2-component vector of double) -0:284 reflect (global 2-component vector of double) -0:284 'dvec2v' (temp 2-component vector of double) -0:284 'dvec2v' (temp 2-component vector of double) -0:285 add second child into first child (temp 3-component vector of double) -0:285 'dvec3v' (temp 3-component vector of double) -0:285 reflect (global 3-component vector of double) -0:285 'dvec3v' (temp 3-component vector of double) -0:285 'dvec3v' (temp 3-component vector of double) -0:286 add second child into first child (temp 4-component vector of double) -0:286 'dvec4v' (temp 4-component vector of double) -0:286 reflect (global 4-component vector of double) -0:286 'dvec4v' (temp 4-component vector of double) -0:286 'dvec4v' (temp 4-component vector of double) -0:288 add second child into first child (temp double) -0:288 'doublev' (temp double) -0:288 refract (global double) -0:288 'doublev' (temp double) -0:288 'doublev' (temp double) -0:288 'doublev' (temp double) -0:289 add second child into first child (temp 2-component vector of double) -0:289 'dvec2v' (temp 2-component vector of double) -0:289 refract (global 2-component vector of double) -0:289 'dvec2v' (temp 2-component vector of double) -0:289 'dvec2v' (temp 2-component vector of double) -0:289 'doublev' (temp double) -0:290 add second child into first child (temp 3-component vector of double) -0:290 'dvec3v' (temp 3-component vector of double) -0:290 refract (global 3-component vector of double) -0:290 'dvec3v' (temp 3-component vector of double) -0:290 'dvec3v' (temp 3-component vector of double) -0:290 'doublev' (temp double) -0:291 add second child into first child (temp 4-component vector of double) -0:291 'dvec4v' (temp 4-component vector of double) -0:291 refract (global 4-component vector of double) -0:291 'dvec4v' (temp 4-component vector of double) -0:291 'dvec4v' (temp 4-component vector of double) -0:291 'doublev' (temp double) -0:293 Sequence -0:293 move second child to first child (temp 2X2 matrix of double) -0:293 'dmat2v' (temp 2X2 matrix of double) -0:293 outer product (global 2X2 matrix of double) -0:293 'dvec2v' (temp 2-component vector of double) -0:293 'dvec2v' (temp 2-component vector of double) -0:294 Sequence -0:294 move second child to first child (temp 3X3 matrix of double) -0:294 'dmat3v' (temp 3X3 matrix of double) -0:294 outer product (global 3X3 matrix of double) -0:294 'dvec3v' (temp 3-component vector of double) -0:294 'dvec3v' (temp 3-component vector of double) -0:295 Sequence -0:295 move second child to first child (temp 4X4 matrix of double) -0:295 'dmat4v' (temp 4X4 matrix of double) -0:295 outer product (global 4X4 matrix of double) -0:295 'dvec4v' (temp 4-component vector of double) -0:295 'dvec4v' (temp 4-component vector of double) -0:296 Sequence -0:296 move second child to first child (temp 2X3 matrix of double) -0:296 'dmat2x3v' (temp 2X3 matrix of double) -0:296 outer product (global 2X3 matrix of double) -0:296 'dvec3v' (temp 3-component vector of double) -0:296 'dvec2v' (temp 2-component vector of double) -0:297 Sequence -0:297 move second child to first child (temp 3X2 matrix of double) -0:297 'dmat3x2v' (temp 3X2 matrix of double) -0:297 outer product (global 3X2 matrix of double) -0:297 'dvec2v' (temp 2-component vector of double) -0:297 'dvec3v' (temp 3-component vector of double) -0:298 Sequence -0:298 move second child to first child (temp 2X4 matrix of double) -0:298 'dmat2x4v' (temp 2X4 matrix of double) -0:298 outer product (global 2X4 matrix of double) -0:298 'dvec4v' (temp 4-component vector of double) -0:298 'dvec2v' (temp 2-component vector of double) -0:299 Sequence -0:299 move second child to first child (temp 4X2 matrix of double) -0:299 'dmat4x2v' (temp 4X2 matrix of double) -0:299 outer product (global 4X2 matrix of double) -0:299 'dvec2v' (temp 2-component vector of double) -0:299 'dvec4v' (temp 4-component vector of double) -0:300 Sequence -0:300 move second child to first child (temp 3X4 matrix of double) -0:300 'dmat3x4v' (temp 3X4 matrix of double) -0:300 outer product (global 3X4 matrix of double) -0:300 'dvec4v' (temp 4-component vector of double) -0:300 'dvec3v' (temp 3-component vector of double) -0:301 Sequence -0:301 move second child to first child (temp 4X3 matrix of double) -0:301 'dmat4x3v' (temp 4X3 matrix of double) -0:301 outer product (global 4X3 matrix of double) -0:301 'dvec3v' (temp 3-component vector of double) -0:301 'dvec4v' (temp 4-component vector of double) -0:303 matrix mult second child into first child (temp 2X2 matrix of double) -0:303 'dmat2v' (temp 2X2 matrix of double) -0:303 component-wise multiply (global 2X2 matrix of double) -0:303 'dmat2v' (temp 2X2 matrix of double) -0:303 'dmat2v' (temp 2X2 matrix of double) -0:304 matrix mult second child into first child (temp 3X3 matrix of double) -0:304 'dmat3v' (temp 3X3 matrix of double) -0:304 component-wise multiply (global 3X3 matrix of double) -0:304 'dmat3v' (temp 3X3 matrix of double) -0:304 'dmat3v' (temp 3X3 matrix of double) -0:305 matrix mult second child into first child (temp 4X4 matrix of double) -0:305 'dmat4v' (temp 4X4 matrix of double) -0:305 component-wise multiply (global 4X4 matrix of double) -0:305 'dmat4v' (temp 4X4 matrix of double) -0:305 'dmat4v' (temp 4X4 matrix of double) -0:306 move second child to first child (temp 2X3 matrix of double) -0:306 'dmat2x3v' (temp 2X3 matrix of double) -0:306 component-wise multiply (global 2X3 matrix of double) -0:306 'dmat2x3v' (temp 2X3 matrix of double) -0:306 'dmat2x3v' (temp 2X3 matrix of double) -0:307 move second child to first child (temp 2X4 matrix of double) -0:307 'dmat2x4v' (temp 2X4 matrix of double) -0:307 component-wise multiply (global 2X4 matrix of double) -0:307 'dmat2x4v' (temp 2X4 matrix of double) -0:307 'dmat2x4v' (temp 2X4 matrix of double) -0:308 move second child to first child (temp 3X2 matrix of double) -0:308 'dmat3x2v' (temp 3X2 matrix of double) -0:308 component-wise multiply (global 3X2 matrix of double) -0:308 'dmat3x2v' (temp 3X2 matrix of double) -0:308 'dmat3x2v' (temp 3X2 matrix of double) -0:309 move second child to first child (temp 3X4 matrix of double) -0:309 'dmat3x4v' (temp 3X4 matrix of double) -0:309 component-wise multiply (global 3X4 matrix of double) -0:309 'dmat3x4v' (temp 3X4 matrix of double) -0:309 'dmat3x4v' (temp 3X4 matrix of double) -0:310 move second child to first child (temp 4X2 matrix of double) -0:310 'dmat4x2v' (temp 4X2 matrix of double) -0:310 component-wise multiply (global 4X2 matrix of double) -0:310 'dmat4x2v' (temp 4X2 matrix of double) -0:310 'dmat4x2v' (temp 4X2 matrix of double) -0:311 move second child to first child (temp 4X3 matrix of double) -0:311 'dmat4x3v' (temp 4X3 matrix of double) -0:311 component-wise multiply (global 4X3 matrix of double) -0:311 'dmat4x3v' (temp 4X3 matrix of double) -0:311 'dmat4x3v' (temp 4X3 matrix of double) -0:313 matrix mult second child into first child (temp 2X2 matrix of double) -0:313 'dmat2v' (temp 2X2 matrix of double) -0:313 transpose (global 2X2 matrix of double) -0:313 'dmat2v' (temp 2X2 matrix of double) -0:314 matrix mult second child into first child (temp 3X3 matrix of double) -0:314 'dmat3v' (temp 3X3 matrix of double) -0:314 transpose (global 3X3 matrix of double) -0:314 'dmat3v' (temp 3X3 matrix of double) -0:315 matrix mult second child into first child (temp 4X4 matrix of double) -0:315 'dmat4v' (temp 4X4 matrix of double) -0:315 transpose (global 4X4 matrix of double) -0:315 'dmat4v' (temp 4X4 matrix of double) -0:316 move second child to first child (temp 2X3 matrix of double) -0:316 'dmat2x3v' (temp 2X3 matrix of double) -0:316 transpose (global 2X3 matrix of double) -0:316 'dmat3x2v' (temp 3X2 matrix of double) -0:317 move second child to first child (temp 3X2 matrix of double) -0:317 'dmat3x2v' (temp 3X2 matrix of double) -0:317 transpose (global 3X2 matrix of double) -0:317 'dmat2x3v' (temp 2X3 matrix of double) -0:318 move second child to first child (temp 2X4 matrix of double) -0:318 'dmat2x4v' (temp 2X4 matrix of double) -0:318 transpose (global 2X4 matrix of double) -0:318 'dmat4x2v' (temp 4X2 matrix of double) -0:319 move second child to first child (temp 4X2 matrix of double) -0:319 'dmat4x2v' (temp 4X2 matrix of double) -0:319 transpose (global 4X2 matrix of double) -0:319 'dmat2x4v' (temp 2X4 matrix of double) -0:320 move second child to first child (temp 3X4 matrix of double) -0:320 'dmat3x4v' (temp 3X4 matrix of double) -0:320 transpose (global 3X4 matrix of double) -0:320 'dmat4x3v' (temp 4X3 matrix of double) -0:321 move second child to first child (temp 4X3 matrix of double) -0:321 'dmat4x3v' (temp 4X3 matrix of double) -0:321 transpose (global 4X3 matrix of double) -0:321 'dmat3x4v' (temp 3X4 matrix of double) -0:323 add second child into first child (temp double) -0:323 'doublev' (temp double) -0:323 determinant (global double) -0:323 'dmat2v' (temp 2X2 matrix of double) -0:324 add second child into first child (temp double) -0:324 'doublev' (temp double) -0:324 determinant (global double) -0:324 'dmat3v' (temp 3X3 matrix of double) -0:325 add second child into first child (temp double) -0:325 'doublev' (temp double) -0:325 determinant (global double) -0:325 'dmat4v' (temp 4X4 matrix of double) -0:327 matrix mult second child into first child (temp 2X2 matrix of double) -0:327 'dmat2v' (temp 2X2 matrix of double) -0:327 inverse (global 2X2 matrix of double) -0:327 'dmat2v' (temp 2X2 matrix of double) -0:328 matrix mult second child into first child (temp 3X3 matrix of double) -0:328 'dmat3v' (temp 3X3 matrix of double) -0:328 inverse (global 3X3 matrix of double) -0:328 'dmat3v' (temp 3X3 matrix of double) -0:329 matrix mult second child into first child (temp 4X4 matrix of double) -0:329 'dmat4v' (temp 4X4 matrix of double) -0:329 inverse (global 4X4 matrix of double) -0:329 'dmat4v' (temp 4X4 matrix of double) 0:? Linker Objects 0:? 'bn' (in 3-element array of block{in int a}) 0:? 'gl_in' (in 3-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) diff --git a/Test/baseResults/400.tesc.out b/Test/baseResults/400.tesc.out index 58a8a327..f3e7b8bb 100644 --- a/Test/baseResults/400.tesc.out +++ b/Test/baseResults/400.tesc.out @@ -364,35 +364,6 @@ ERROR: node is still EOpNull! 0:56 Barrier (global void) 0:59 Branch: Return 0:61 Barrier (global void) -0:67 Function Definition: foo( (global void) -0:67 Function Parameters: -0:69 Sequence -0:69 gl_PointSize: direct index for structure (out float PointSize) -0:69 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) -0:69 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) -0:69 Constant: -0:69 4 (const int) -0:69 Constant: -0:69 1 (const int) -0:71 Barrier (global void) -0:91 Function Definition: foop( (global void) -0:91 Function Parameters: -0:? Sequence -0:95 multiply second child into first child (temp 3-component vector of float) -0:95 'pv3' (noContraction temp 3-component vector of float) -0:95 'pv3' (noContraction temp 3-component vector of float) -0:96 move second child to first child (temp 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:96 fma (global 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:96 'pv3' (noContraction temp 3-component vector of float) -0:97 move second child to first child (temp double) -0:97 'd' (noContraction temp double) -0:97 fma (global double) -0:97 'd' (noContraction temp double) -0:97 'd' (noContraction temp double) -0:97 'd' (noContraction temp double) 0:? Linker Objects 0:? 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 2-element array of float ClipDistance gl_ClipDistance}) 0:? 'outa' (global 4-element array of int) diff --git a/Test/baseResults/400.vert.out b/Test/baseResults/400.vert.out index 2b0d63da..bf078875 100755 --- a/Test/baseResults/400.vert.out +++ b/Test/baseResults/400.vert.out @@ -340,11 +340,6 @@ ERROR: node is still EOpNull! 0:20 '' (in uint) 0:20 '' (in float) 0:20 '' (in double) -0:21 Function Definition: ftd(f1;d1;d1; (global void) -0:21 Function Parameters: -0:21 '' (in float) -0:21 '' (in double) -0:21 '' (in double) 0:23 Function Definition: main( (global void) 0:23 Function Parameters: 0:? Sequence @@ -552,19 +547,6 @@ ERROR: node is still EOpNull! 0:91 'f' (temp float) 0:91 Convert float to double (temp double) 0:91 'f' (temp float) -0:97 Function Definition: tf( (global void) -0:97 Function Parameters: -0:? Sequence -0:104 Function Call: itf(i1;f1;i1; (global void) -0:104 'i' (temp int) -0:104 Convert int to float (temp float) -0:104 'i' (temp int) -0:104 'i' (temp int) -0:105 Function Call: itf(i1;f1;i1; (global void) -0:105 'i' (temp int) -0:105 Convert uint to float (temp float) -0:105 'u' (temp uint) -0:105 'i' (temp int) 0:? Linker Objects 0:? 'd' (in double) 0:? 'd3' (in 3-component vector of double) diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out index 6f7252c9..aa421dbe 100644 --- a/Test/baseResults/410.geom.out +++ b/Test/baseResults/410.geom.out @@ -77,35 +77,6 @@ ERROR: node is still EOpNull! 0:5 'gl_ViewportIndex' (layout(stream=0 ) out int ViewportIndex) 0:5 Constant: 0:5 7 (const int) -0:28 Function Definition: foo( (global void) -0:28 Function Parameters: -0:30 Sequence -0:30 Sequence -0:30 move second child to first child (temp float) -0:30 'p' (temp float) -0:30 gl_PointSize: direct index for structure (in float PointSize) -0:30 direct index (temp block{in float PointSize gl_PointSize}) -0:30 'gl_in' (in 2-element array of block{in float PointSize gl_PointSize}) -0:30 Constant: -0:30 1 (const int) -0:30 Constant: -0:30 0 (const int) -0:31 move second child to first child (temp float) -0:31 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize float PointSize) -0:31 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) gl_PointSize float PointSize gl_PointSize, }) -0:31 Constant: -0:31 1 (const uint) -0:31 'p' (temp float) -0:33 gl_Position: direct index for structure (layout(stream=0 ) gl_Position void Position) -0:33 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) gl_PointSize float PointSize gl_PointSize, }) -0:33 Constant: -0:33 0 (const uint) -0:36 Function Definition: foo5( (global float) -0:36 Function Parameters: -0:38 Sequence -0:38 Branch: Return with expression -0:38 Constant: -0:38 4.000000 0:? Linker Objects 0:? 'gl_in' (in 2-element array of block{in float PointSize gl_PointSize}) 0:? 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) gl_PointSize float PointSize gl_PointSize, }) diff --git a/Test/baseResults/420.geom.out b/Test/baseResults/420.geom.out index 625feea7..ca459a64 100644 --- a/Test/baseResults/420.geom.out +++ b/Test/baseResults/420.geom.out @@ -142,111 +142,6 @@ max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! -0:7 Function Definition: foo( (global void) -0:7 Function Parameters: -0:9 Sequence -0:9 Constant: -0:9 1 (const int) -0:10 gl_Position: direct index for structure (in 4-component vector of float Position) -0:10 direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) -0:10 'gl_in' (in 3-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}) -0:10 Constant: -0:10 1 (const int) -0:10 Constant: -0:10 0 (const int) -0:11 gl_Position: direct index for structure (in 4-component vector of float Position) -0:11 indirect index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) -0:11 'gl_in' (in 3-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}) -0:11 'i' (global int) -0:11 Constant: -0:11 0 (const int) -0:18 Function Definition: foo3( (global void) -0:18 Function Parameters: -0:20 Sequence -0:20 Constant: -0:20 3 (const int) -0:21 gl_Position: direct index for structure (in 4-component vector of float Position) -0:21 indirect index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) -0:21 'gl_in' (in 3-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}) -0:21 'i' (global int) -0:21 Constant: -0:21 0 (const int) -0:22 Constant: -0:22 3 (const int) -0:29 Function Definition: foo4( (global void) -0:29 Function Parameters: -0:? Sequence -0:40 Sequence -0:40 move second child to first child (temp 4-component vector of float) -0:40 'v' (temp 4-component vector of float) -0:40 textureGatherOffset (global 4-component vector of float) -0:40 's2D' (uniform sampler2D) -0:40 direct index (temp 2-component vector of float) -0:40 'coord' (in 3-element array of 2-component vector of float) -0:40 Constant: -0:40 0 (const int) -0:40 vector swizzle (temp 2-component vector of int) -0:40 indirect index (temp 2-component vector of int) -0:40 Constant: -0:40 0 (const int) -0:40 1 (const int) -0:40 1 (const int) -0:40 -2 (const int) -0:40 0 (const int) -0:40 3 (const int) -0:40 -3 (const int) -0:40 0 (const int) -0:40 2 (const int) -0:40 1 (const int) -0:40 'i' (global int) -0:40 Sequence -0:40 Constant: -0:40 0 (const int) -0:40 Constant: -0:40 1 (const int) -0:42 move second child to first child (temp 2-component vector of int) -0:42 vector swizzle (temp 2-component vector of int) -0:42 indirect index (temp 2-component vector of int) -0:42 Constant: -0:42 0 (const int) -0:42 1 (const int) -0:42 1 (const int) -0:42 -2 (const int) -0:42 0 (const int) -0:42 3 (const int) -0:42 -3 (const int) -0:42 0 (const int) -0:42 2 (const int) -0:42 1 (const int) -0:42 'i' (global int) -0:42 Sequence -0:42 Constant: -0:42 0 (const int) -0:42 Constant: -0:42 1 (const int) -0:42 Constant: -0:42 3 (const int) -0:42 3 (const int) -0:43 move second child to first child (temp float) -0:43 direct index (temp float) -0:43 'v4' (uniform 4-component vector of float) -0:43 Constant: -0:43 0 (const int) -0:43 Constant: -0:43 3.200000 -0:44 vector swizzle (temp 2-component vector of float) -0:44 'v4' (uniform 4-component vector of float) -0:44 Sequence -0:44 Constant: -0:44 0 (const int) -0:44 Constant: -0:44 1 (const int) -0:52 Function Definition: foo5( (global float) -0:52 Function Parameters: -0:54 Sequence -0:54 Branch: Return with expression -0:54 Convert int to float (temp float) -0:54 'i' (global int) 0:? Linker Objects 0:? 'i' (global int) 0:? 'gl_in' (in 3-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}) diff --git a/Test/baseResults/420.tesc.out b/Test/baseResults/420.tesc.out index 594e1302..30839ec8 100644 --- a/Test/baseResults/420.tesc.out +++ b/Test/baseResults/420.tesc.out @@ -184,41 +184,6 @@ ERROR: node is still EOpNull! 0:26 indirect index (temp block{out 4-component vector of float Position gl_Position}) 0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:26 'gl_InvocationID' (in int InvocationID) -0:34 Function Definition: foo( (global void) -0:34 Function Parameters: -0:36 Sequence -0:36 Test condition and select (temp void) -0:36 Condition -0:36 logical-or (temp bool) -0:36 Compare Not Equal (temp bool) -0:36 Constant: -0:36 -0.625000 -0:36 -0.500000 -0:36 -0.375000 -0:36 -0.250000 -0:36 -0.375000 -0:36 -0.250000 -0:36 -0.125000 -0:36 0.000000 -0:36 direct index (layout(location=0 ) temp 2X4 matrix of double) -0:36 'vs_tcs_first' (layout(location=0 ) in 32-element array of 2X4 matrix of double) -0:36 Constant: -0:36 0 (const int) -0:37 Compare Not Equal (temp bool) -0:37 Constant: -0:37 0.375000 -0:37 0.500000 -0:37 0.625000 -0:37 0.750000 -0:37 0.625000 -0:37 0.750000 -0:37 0.875000 -0:37 -0.625000 -0:37 direct index (layout(location=12 ) temp 2X4 matrix of double) -0:37 'vs_tcs_last' (layout(location=12 ) in 32-element array of 2X4 matrix of double) -0:37 Constant: -0:37 0 (const int) -0:36 true case is null 0:? Linker Objects 0:? 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:? 'a' (out 3-element array of int) diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out index 5636e7a1..a70b44e7 100644 --- a/Test/baseResults/420.vert.out +++ b/Test/baseResults/420.vert.out @@ -310,19 +310,6 @@ Linked vertex stage: Shader version: 420 ERROR: node is still EOpNull! -0:20 Function Definition: foo( (const int) -0:20 Function Parameters: -0:? Sequence -0:23 Sequence -0:23 move second child to first child (temp int) -0:23 'b' (const (read only) int) -0:23 'anonconst' (global int) -0:25 Sequence -0:25 move second child to first child (temp int) -0:25 'd' (const (read only) int) -0:25 'b' (const (read only) int) -0:29 Branch: Return with expression -0:29 'b' (const (read only) int) 0:32 Function Definition: main( (global void) 0:32 Function Parameters: 0:? Sequence @@ -342,164 +329,6 @@ ERROR: node is still EOpNull! 0:42 Constant: 0:42 true (const bool) 0:42 No loop body -0:50 Function Definition: bar(vf4; (global void) -0:50 Function Parameters: -0:50 'v' (volatile in 4-component vector of float) -0:? Sequence -0:53 's' (temp int) -0:54 's' (temp int) -0:55 Test condition and select (temp void) -0:55 Condition -0:55 Compare Equal (temp bool) -0:55 direct index (temp float) -0:55 direct index (temp 4-component vector of float) -0:55 'bad' (in 10-element array of 4-component vector of float) -0:55 Constant: -0:55 0 (const int) -0:55 Constant: -0:55 0 (const int) -0:55 Constant: -0:55 4.200000 -0:55 true case is null -0:57 Test condition and select (temp void) -0:57 Condition -0:57 Constant: -0:57 true (const bool) -0:57 true case -0:58 move second child to first child (temp 4-component vector of float) -0:58 'badorder3' (flat out 4-component vector of float) -0:58 direct index (temp 4-component vector of float) -0:58 'bad' (in 10-element array of 4-component vector of float) -0:58 Constant: -0:58 0 (const int) -0:61 Sequence -0:61 move second child to first child (temp 3-component vector of float) -0:61 'smeared' (temp 3-component vector of float) -0:61 Construct vec3 (temp 3-component vector of float) -0:61 'f' (temp float) -0:62 'f' (temp float) -0:63 'f' (temp float) -0:88 Function Definition: bar23444( (global void) -0:88 Function Parameters: -0:? Sequence -0:91 Sequence -0:91 move second child to first child (temp float) -0:91 'a1' (temp float) -0:91 direct index (temp float) -0:91 direct index (temp 3-component vector of float) -0:91 'm43' (temp 4X3 matrix of float) -0:91 Constant: -0:91 3 (const int) -0:91 Constant: -0:91 1 (const int) -0:93 Sequence -0:93 move second child to first child (temp int) -0:93 'a2' (temp int) -0:93 Constant: -0:93 4 (const int) -0:94 add second child into first child (temp int) -0:94 'a2' (temp int) -0:94 Constant: -0:94 3 (const int) -0:95 add second child into first child (temp int) -0:95 'a2' (temp int) -0:95 Constant: -0:95 3 (const int) -0:96 Sequence -0:96 move second child to first child (temp float) -0:96 'b' (const (read only) float) -0:96 component-wise multiply (temp float) -0:96 Constant: -0:96 2.000000 -0:96 'a1' (temp float) -0:97 Sequence -0:97 move second child to first child (temp int) -0:97 'a' (temp int) -0:97 Constant: -0:97 -1 (const int) -0:109 Function Definition: qux( (global void) -0:109 Function Parameters: -0:111 Sequence -0:111 Sequence -0:111 move second child to first child (temp int) -0:111 'i' (temp int) -0:111 aoeu: direct index for structure (layout(column_major shared ) uniform int) -0:111 'anon@0' (layout(binding=7 column_major shared ) uniform block{layout(column_major shared ) uniform int aoeu}) -0:111 Constant: -0:111 0 (const uint) -0:112 imageAtomicCompSwap (global int) -0:112 'iimg2D' (layout(r32i ) uniform iimage2D) -0:112 Construct ivec2 (temp 2-component vector of int) -0:112 'i' (temp int) -0:112 'i' (temp int) -0:112 'i' (temp int) -0:112 'i' (temp int) -0:113 imageAtomicAdd (global uint) -0:113 'uimg2D' (layout(r32ui ) uniform uimage2D) -0:113 Construct ivec2 (temp 2-component vector of int) -0:113 'i' (temp int) -0:113 'i' (temp int) -0:113 Convert int to uint (temp uint) -0:113 'i' (temp int) -0:114 imageAtomicMin (global int) -0:114 'iimg2Drgba' (layout(rgba32i ) uniform iimage2D) -0:114 Construct ivec2 (temp 2-component vector of int) -0:114 'i' (temp int) -0:114 'i' (temp int) -0:114 'i' (temp int) -0:115 Constant: -0:115 0.000000 -0:116 Sequence -0:116 move second child to first child (temp 4-component vector of int) -0:116 'pos' (temp 4-component vector of int) -0:116 imageLoad (global 4-component vector of int) -0:116 'iimg2D' (layout(r32i ) uniform iimage2D) -0:116 Construct ivec2 (temp 2-component vector of int) -0:116 'i' (temp int) -0:116 'i' (temp int) -0:117 Sequence -0:117 move second child to first child (temp 4-component vector of float) -0:117 'col' (temp 4-component vector of float) -0:117 imageLoad (global 4-component vector of float) -0:117 'img2DMS' (uniform image2DMS) -0:117 Construct ivec2 (temp 2-component vector of int) -0:117 'i' (temp int) -0:117 'i' (temp int) -0:117 'i' (temp int) -0:118 imageStore (global void) -0:118 'img2DMSWO' (writeonly uniform image2DMS) -0:118 Construct ivec2 (temp 2-component vector of int) -0:118 'i' (temp int) -0:118 'i' (temp int) -0:118 'i' (temp int) -0:118 Constant: -0:118 0.000000 -0:118 0.000000 -0:118 0.000000 -0:118 0.000000 -0:119 imageLoad (global 4-component vector of float) -0:119 'img2DMSWO' (writeonly uniform image2DMS) -0:119 Construct ivec2 (temp 2-component vector of int) -0:119 'i' (temp int) -0:119 'i' (temp int) -0:119 'i' (temp int) -0:125 Function Definition: passr(iI21; (global void) -0:125 Function Parameters: -0:125 'image' (coherent readonly in iimage2D) -0:132 Function Definition: passrc( (global void) -0:132 Function Parameters: -0:134 Sequence -0:134 Function Call: passr(iI21; (global void) -0:134 'qualim1' (layout(r32i ) coherent readonly uniform iimage2D) -0:135 Function Call: passr(iI21; (global void) -0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D) -0:136 Function Call: passr(iI21; (global void) -0:136 'iimg2D' (layout(r32i ) uniform iimage2D) -0:153 Function Definition: qlod( (global void) -0:153 Function Parameters: -0:? Sequence -0:157 'levels' (temp int) -0:158 'levels' (temp int) 0:? Linker Objects 0:? 'v2' (smooth out 2-component vector of float) 0:? 'bad' (in 10-element array of 4-component vector of float) diff --git a/Test/baseResults/420_size_gl_in.geom.out b/Test/baseResults/420_size_gl_in.geom.out index 28d09a6d..54ec99ea 100644 --- a/Test/baseResults/420_size_gl_in.geom.out +++ b/Test/baseResults/420_size_gl_in.geom.out @@ -49,26 +49,6 @@ max_vertices = -1 input primitive = triangles output primitive = none ERROR: node is still EOpNull! -0:11 Function Definition: foo( (global void) -0:11 Function Parameters: -0:13 Sequence -0:13 Constant: -0:13 3 (const int) -0:14 gl_Position: direct index for structure (in 4-component vector of float Position) -0:14 direct index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) -0:14 'gl_in' (in 3-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}) -0:14 Constant: -0:14 1 (const int) -0:14 Constant: -0:14 0 (const int) -0:15 Constant: -0:15 3 (const int) -0:16 gl_Position: direct index for structure (in 4-component vector of float Position) -0:16 indirect index (temp block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) -0:16 'gl_in' (in 3-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}) -0:16 'i' (global int) -0:16 Constant: -0:16 0 (const int) 0:? Linker Objects 0:? 'i' (global int) 0:? 'colorun' (in 3-element array of 4-component vector of float) diff --git a/Test/baseResults/430.comp.out b/Test/baseResults/430.comp.out index aecf42fc..ed61346f 100644 --- a/Test/baseResults/430.comp.out +++ b/Test/baseResults/430.comp.out @@ -184,77 +184,6 @@ ERROR: node is still EOpNull! 0:39 10 (const int) 0:39 true case 0:40 Barrier (global void) -0:63 Function Definition: foo( (global void) -0:63 Function Parameters: -0:65 Sequence -0:65 move second child to first child (temp float) -0:65 direct index (layout(column_major shared ) temp float) -0:65 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float) -0:65 'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values}) -0:65 Constant: -0:65 1 (const int) -0:65 Constant: -0:65 2 (const int) -0:65 Constant: -0:65 4.700000 -0:66 array length (temp int) -0:66 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float) -0:66 'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values}) -0:66 Constant: -0:66 1 (const int) -0:67 Barrier (global void) -0:72 Function Definition: fooaoeu( (global void) -0:72 Function Parameters: -0:73 Sequence -0:73 Sequence -0:73 move second child to first child (temp 2-component vector of int) -0:73 'storePos' (temp 2-component vector of int) -0:73 Convert uint to int (temp 2-component vector of int) -0:73 vector swizzle (temp 2-component vector of uint) -0:73 'gl_GlobalInvocationID' (in 3-component vector of uint GlobalInvocationID) -0:73 Sequence -0:73 Constant: -0:73 0 (const int) -0:73 Constant: -0:73 1 (const int) -0:74 Sequence -0:74 move second child to first child (temp double) -0:74 'localCoef' (temp double) -0:74 Convert float to double (temp double) -0:74 length (global float) -0:74 divide (temp 2-component vector of float) -0:74 Convert int to float (temp 2-component vector of float) -0:74 subtract (temp 2-component vector of int) -0:74 Convert uint to int (temp 2-component vector of int) -0:74 vector swizzle (temp 2-component vector of uint) -0:74 'gl_LocalInvocationID' (in 3-component vector of uint LocalInvocationID) -0:74 Sequence -0:74 Constant: -0:74 0 (const int) -0:74 Constant: -0:74 1 (const int) -0:74 Constant: -0:74 8 (const int) -0:74 Constant: -0:74 8.000000 -0:75 Sequence -0:75 move second child to first child (temp 4-component vector of double) -0:75 'aa' (temp 4-component vector of double) -0:75 Constant: -0:75 0.400000 -0:75 0.200000 -0:75 0.300000 -0:75 0.400000 -0:76 Sequence -0:76 move second child to first child (temp double) -0:76 'globalCoef' (temp double) -0:76 Constant: -0:76 1.000000 -0:78 Sequence -0:78 move second child to first child (temp double) -0:78 'di' (temp double) -0:78 Convert int to double (temp double) -0:78 'i' (temp int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out index 676fcd3f..8cd1156b 100644 --- a/Test/baseResults/430.vert.out +++ b/Test/baseResults/430.vert.out @@ -275,135 +275,6 @@ Requested GL_ARB_enhanced_layouts Requested GL_ARB_shader_texture_image_samples in xfb mode ERROR: node is still EOpNull! -0:14 Function Definition: foo( (global void) -0:14 Function Parameters: -0:16 Sequence -0:16 move second child to first child (temp float) -0:16 direct index (temp float ClipDistance) -0:16 gl_ClipDistance: direct index for structure (out 17-element array of float ClipDistance) -0:16 'anon@0' (out block{out 17-element array of float ClipDistance gl_ClipDistance, }) -0:16 Constant: -0:16 2 (const uint) -0:16 Constant: -0:16 2 (const int) -0:16 Constant: -0:16 3.700000 -0:31 Function Definition: foo3(vf4;vf3;vf2;vf3; (global void) -0:31 Function Parameters: -0:31 'v4' (in 4-component vector of float) -0:31 'v3' (volatile in 3-component vector of float) -0:31 'v2' (in 2-component vector of float) -0:31 'cv3' (in 3-component vector of float) -0:148 Function Definition: fooBarrier( (global void) -0:148 Function Parameters: -0:150 Sequence -0:150 Constant: -0:150 0.000000 -0:151 MemoryBarrier (global void) -0:152 MemoryBarrierAtomicCounter (global void) -0:153 MemoryBarrierBuffer (global void) -0:154 Constant: -0:154 0.000000 -0:155 MemoryBarrierImage (global void) -0:156 Constant: -0:156 0.000000 -0:166 Function Definition: fooq( (global void) -0:166 Function Parameters: -0:168 Sequence -0:168 Sequence -0:168 move second child to first child (temp int) -0:168 's' (temp int) -0:168 textureSamples (global int) -0:168 's2dms' (uniform sampler2DMS) -0:169 add second child into first child (temp int) -0:169 's' (temp int) -0:169 textureSamples (global int) -0:169 'us2dmsa' (uniform usampler2DMSArray) -0:170 add second child into first child (temp int) -0:170 's' (temp int) -0:170 imageQuerySamples (global int) -0:170 'ii2dms' (layout(rgba32i ) uniform iimage2DMS) -0:171 add second child into first child (temp int) -0:171 's' (temp int) -0:171 imageQuerySamples (global int) -0:171 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) -0:176 Function Definition: fooq2( (global void) -0:176 Function Parameters: -0:178 Sequence -0:178 Sequence -0:178 move second child to first child (temp int) -0:178 's' (temp int) -0:178 textureSamples (global int) -0:178 's2dms' (uniform sampler2DMS) -0:179 add second child into first child (temp int) -0:179 's' (temp int) -0:179 textureSamples (global int) -0:179 'us2dmsa' (uniform usampler2DMSArray) -0:180 add second child into first child (temp int) -0:180 's' (temp int) -0:180 imageQuerySamples (global int) -0:180 'ii2dms' (layout(rgba32i ) uniform iimage2DMS) -0:181 add second child into first child (temp int) -0:181 's' (temp int) -0:181 imageQuerySamples (global int) -0:181 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) -0:202 Function Definition: qlod( (global void) -0:202 Function Parameters: -0:? Sequence -0:206 move second child to first child (temp int) -0:206 'levels' (temp int) -0:206 textureQueryLevels (global int) -0:206 'samp1D' (uniform sampler1D) -0:207 move second child to first child (temp int) -0:207 'levels' (temp int) -0:207 textureQueryLevels (global int) -0:207 'usamp2D' (uniform usampler2D) -0:208 move second child to first child (temp int) -0:208 'levels' (temp int) -0:208 textureQueryLevels (global int) -0:208 'isamp3D' (uniform isampler3D) -0:209 move second child to first child (temp int) -0:209 'levels' (temp int) -0:209 textureQueryLevels (global int) -0:209 'isampCube' (uniform isamplerCube) -0:210 move second child to first child (temp int) -0:210 'levels' (temp int) -0:210 textureQueryLevels (global int) -0:210 'isamp1DA' (uniform isampler1DArray) -0:211 move second child to first child (temp int) -0:211 'levels' (temp int) -0:211 textureQueryLevels (global int) -0:211 'samp2DA' (uniform sampler2DArray) -0:212 move second child to first child (temp int) -0:212 'levels' (temp int) -0:212 textureQueryLevels (global int) -0:212 'usampCubeA' (uniform usamplerCubeArray) -0:214 move second child to first child (temp int) -0:214 'levels' (temp int) -0:214 textureQueryLevels (global int) -0:214 'samp1Ds' (uniform sampler1DShadow) -0:215 move second child to first child (temp int) -0:215 'levels' (temp int) -0:215 textureQueryLevels (global int) -0:215 'samp2Ds' (uniform sampler2DShadow) -0:216 move second child to first child (temp int) -0:216 'levels' (temp int) -0:216 textureQueryLevels (global int) -0:216 'sampCubes' (uniform samplerCubeShadow) -0:217 move second child to first child (temp int) -0:217 'levels' (temp int) -0:217 textureQueryLevels (global int) -0:217 'samp1DAs' (uniform sampler1DArrayShadow) -0:218 move second child to first child (temp int) -0:218 'levels' (temp int) -0:218 textureQueryLevels (global int) -0:218 'samp2DAs' (uniform sampler2DArrayShadow) -0:219 move second child to first child (temp int) -0:219 'levels' (temp int) -0:219 textureQueryLevels (global int) -0:219 'sampCubeAs' (uniform samplerCubeArrayShadow) -0:221 'levels' (temp int) -0:222 'levels' (temp int) 0:? Linker Objects 0:? 'v4' (layout(location=3 ) temp 4-component vector of float) 0:? 'uv4' (layout(location=4 ) uniform 4-component vector of float) diff --git a/Test/baseResults/430AofA.frag.out b/Test/baseResults/430AofA.frag.out index f3bbfb8b..fd3892dc 100644 --- a/Test/baseResults/430AofA.frag.out +++ b/Test/baseResults/430AofA.frag.out @@ -766,34 +766,6 @@ ERROR: node is still EOpNull! 0:84 5.000000 0:85 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of float) 0:85 'u' (temp 5-element array of 7-element array of float) -0:88 Function Definition: foo3( (global void) -0:88 Function Parameters: -0:? Sequence -0:91 Constant: -0:91 1 (const int) -0:92 move second child to first child (temp float) -0:92 direct index (temp float) -0:92 direct index (temp 7-element array of float) -0:92 direct index (temp 5-element array of 7-element array of float) -0:92 'resize1' (temp 3-element array of 5-element array of 7-element array of float) -0:92 Constant: -0:92 1 (const int) -0:92 Constant: -0:92 4 (const int) -0:92 Constant: -0:92 5 (const int) -0:92 Constant: -0:92 2.000000 -0:93 Constant: -0:93 1 (const int) -0:95 Constant: -0:95 3 (const int) -0:96 Constant: -0:96 5 (const int) -0:97 Constant: -0:97 7 (const int) -0:98 Constant: -0:98 0.000000 0:? Linker Objects 0:? 'many' (global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of float) 0:? 'gu' (global 1-element array of 7-element array of float) diff --git a/Test/baseResults/430scope.vert.out b/Test/baseResults/430scope.vert.out index f1b9594e..c7d05038 100644 --- a/Test/baseResults/430scope.vert.out +++ b/Test/baseResults/430scope.vert.out @@ -149,20 +149,6 @@ ERROR: node is still EOpNull! 0:8 1.000000 0:11 Branch: Return with expression 0:11 'a' (in int) -0:25 Function Definition: cos(f1; (global float) -0:25 Function Parameters: -0:25 'x' (in float) -0:27 Sequence -0:27 Branch: Return with expression -0:27 Constant: -0:27 1.000000 -0:29 Function Definition: radians(b1; (global bool) -0:29 Function Parameters: -0:29 'x' (in bool) -0:31 Sequence -0:31 Branch: Return with expression -0:31 Constant: -0:31 true (const bool) 0:36 Function Definition: main( (global void) 0:36 Function Parameters: 0:? Sequence diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out index 064fe19e..bdc1b095 100644 --- a/Test/baseResults/440.frag.out +++ b/Test/baseResults/440.frag.out @@ -126,35 +126,6 @@ ERROR: Linking fragment stage: Missing entry point: Each stage requires one entr Shader version: 440 ERROR: node is still EOpNull! -0:144 Function Definition: interp( (global void) -0:144 Function Parameters: -0:146 Sequence -0:146 interpolateAtCentroid (global 2-component vector of float) -0:146 vector swizzle (temp 2-component vector of float) -0:146 direct index (smooth sample temp 3-component vector of float) -0:146 'sampInArray' (smooth sample in 4-element array of 3-component vector of float) -0:146 Constant: -0:146 2 (const int) -0:146 Sequence -0:146 Constant: -0:146 0 (const int) -0:146 Constant: -0:146 1 (const int) -0:147 interpolateAtSample (global float) -0:147 direct index (temp float) -0:147 direct index (smooth sample temp 3-component vector of float) -0:147 'sampInArray' (smooth sample in 4-element array of 3-component vector of float) -0:147 Constant: -0:147 2 (const int) -0:147 Constant: -0:147 0 (const int) -0:147 Constant: -0:147 2 (const int) -0:150 Function Definition: layer( (global int) -0:150 Function Parameters: -0:152 Sequence -0:152 Branch: Return with expression -0:152 'gl_Layer' (flat in int Layer) 0:? Linker Objects 0:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float) 0:? 'b' (layout(location=4 component=1 ) smooth in float) diff --git a/Test/baseResults/440.vert.out b/Test/baseResults/440.vert.out index 022ddec4..bf625c8a 100644 --- a/Test/baseResults/440.vert.out +++ b/Test/baseResults/440.vert.out @@ -174,37 +174,6 @@ Shader version: 440 Requested GL_ARB_shader_draw_parameters in xfb mode ERROR: node is still EOpNull! -0:177 Function Definition: drawParamsBad( (global int) -0:177 Function Parameters: -0:179 Sequence -0:179 Branch: Return with expression -0:179 add (temp int) -0:179 add (temp int) -0:179 'gl_BaseVertexARB' (in int BaseVertex) -0:179 'gl_BaseInstanceARB' (in int BaseInstance) -0:179 'gl_DrawIDARB' (in int DrawId) -0:184 Function Definition: drawParams( (global int) -0:184 Function Parameters: -0:186 Sequence -0:186 Branch: Return with expression -0:186 add (temp int) -0:186 add (temp int) -0:186 'gl_BaseVertexARB' (in int BaseVertex) -0:186 'gl_BaseInstanceARB' (in int BaseInstance) -0:186 'gl_DrawIDARB' (in int DrawId) -0:187 move second child to first child (temp int) -0:187 'gl_BaseVertexARB' (in int BaseVertex) -0:187 Constant: -0:187 3 (const int) -0:188 move second child to first child (temp int) -0:188 'gl_BaseInstanceARB' (in int BaseInstance) -0:188 Constant: -0:188 3 (const int) -0:189 move second child to first child (temp int) -0:189 'gl_DrawIDARB' (in int DrawId) -0:189 Constant: -0:189 3 (const int) -0:190 'glBaseInstanceARB' (temp float) 0:? Linker Objects 0:? 'a' (layout(location=2 component=2 ) in 2-component vector of float) 0:? 'b' (layout(location=2 component=1 ) in float) diff --git a/Test/baseResults/450.frag.out b/Test/baseResults/450.frag.out index 23682e8a..03826733 100644 --- a/Test/baseResults/450.frag.out +++ b/Test/baseResults/450.frag.out @@ -263,57 +263,6 @@ Shader version: 450 0:34 'uin' (temp uint) 0:34 Construct bvec3 (temp 3-component vector of bool) 0:34 'b' (temp bool) -0:42 Function Definition: foo( (global void) -0:42 Function Parameters: -0:44 Sequence -0:44 Sequence -0:44 move second child to first child (temp int) -0:44 's' (temp int) -0:44 textureSamples (global int) -0:44 's2dms' (uniform sampler2DMS) -0:45 add second child into first child (temp int) -0:45 's' (temp int) -0:45 textureSamples (global int) -0:45 'us2dmsa' (uniform usampler2DMSArray) -0:46 add second child into first child (temp int) -0:46 's' (temp int) -0:46 imageQuerySamples (global int) -0:46 'ii2dms' (layout(rgba32i ) uniform iimage2DMS) -0:47 add second child into first child (temp int) -0:47 's' (temp int) -0:47 imageQuerySamples (global int) -0:47 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) -0:48 Sequence -0:48 move second child to first child (temp float) -0:48 'f' (temp float) -0:48 imageAtomicExchange (global float) -0:48 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) -0:48 Convert float to int (temp 3-component vector of int) -0:48 'in3' (smooth in 3-component vector of float) -0:48 Constant: -0:48 2 (const int) -0:48 Constant: -0:48 4.500000 -0:53 Function Definition: cull(i1; (global float) -0:53 Function Parameters: -0:53 'i' (in int) -0:55 Sequence -0:55 Branch: Return with expression -0:55 Test condition and select (temp float) -0:55 Condition -0:55 Compare Greater Than or Equal (temp bool) -0:55 'i' (in int) -0:55 Constant: -0:55 6 (const int) -0:55 true case -0:55 direct index (smooth temp float CullDistance) -0:55 'gl_CullDistance' (smooth in 6-element array of float CullDistance) -0:55 Constant: -0:55 5 (const int) -0:55 false case -0:55 indirect index (smooth temp float CullDistance) -0:55 'gl_CullDistance' (smooth in 6-element array of float CullDistance) -0:55 'i' (in int) 0:? Linker Objects 0:? 'in1' (smooth in float) 0:? 'in2' (smooth in 2-component vector of float) diff --git a/Test/baseResults/array.frag.out b/Test/baseResults/array.frag.out index 8b3cf807..e254bf13 100644 --- a/Test/baseResults/array.frag.out +++ b/Test/baseResults/array.frag.out @@ -446,71 +446,6 @@ ERROR: node is still EOpNull! 0:58 1 (const int) 0:58 Constant: 0:58 4 (const int) -0:68 Function Definition: foo( (global void) -0:68 Function Parameters: -0:? Sequence -0:71 move second child to first child (temp int) -0:71 direct index (temp int) -0:71 'uns' (temp 4-element array of int) -0:71 Constant: -0:71 3 (const int) -0:71 Constant: -0:71 40 (const int) -0:72 move second child to first child (temp int) -0:72 direct index (temp int) -0:72 'uns' (temp 4-element array of int) -0:72 Constant: -0:72 1 (const int) -0:72 Constant: -0:72 30 (const int) -0:73 move second child to first child (temp 3-component vector of float) -0:73 direct index (temp 3-component vector of float) -0:73 'guns' (global 8-element array of 3-component vector of float) -0:73 Constant: -0:73 2 (const int) -0:73 Constant: -0:73 2.400000 -0:73 2.400000 -0:73 2.400000 -0:76 Constant: -0:76 0.000000 -0:79 Function Definition: foo2( (global implicitly-sized array of float) -0:79 Function Parameters: -0:? Sequence -0:82 Branch: Return with expression -0:82 'f' (temp 1-element array of float) -0:84 Branch: Return with expression -0:84 'g' (temp 9-element array of float) -0:89 Function Definition: foo3( (global void) -0:89 Function Parameters: -0:? Sequence -0:92 move second child to first child (temp float) -0:92 direct index (temp float) -0:92 'resize1' (temp 3-element array of float) -0:92 Constant: -0:92 2 (const int) -0:92 Constant: -0:92 4.000000 -0:93 Constant: -0:93 1 (const int) -0:95 Constant: -0:95 3 (const int) -0:98 move second child to first child (temp float) -0:98 direct index (temp float) -0:98 'resize2' (temp 5-element array of float) -0:98 Constant: -0:98 5 (const int) -0:98 Constant: -0:98 4.000000 -0:100 Constant: -0:100 5 (const int) -0:101 move second child to first child (temp float) -0:101 direct index (temp float) -0:101 'resize2' (temp 5-element array of float) -0:101 Constant: -0:101 5 (const int) -0:101 Constant: -0:101 4.000000 0:106 Sequence 0:106 move second child to first child (temp float) 0:106 'b' (global float) diff --git a/Test/baseResults/array100.frag.out b/Test/baseResults/array100.frag.out index b44f6a02..cf543614 100644 --- a/Test/baseResults/array100.frag.out +++ b/Test/baseResults/array100.frag.out @@ -265,29 +265,6 @@ ERROR: node is still EOpNull! 0:40 1.000000 0:40 1.000000 0:40 1.000000 -0:53 Function Definition: bar9( (global structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:53 Function Parameters: -0:? Sequence -0:56 Branch: Return with expression -0:56 's' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:59 Function Definition: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (global void) -0:59 Function Parameters: -0:59 's' (in structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:63 Function Definition: bar11( (global void) -0:63 Function Parameters: -0:? Sequence -0:66 move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:66 's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:66 's2' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:67 Function Call: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (global void) -0:67 's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:68 move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:68 's2' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:68 Function Call: bar9( (global structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:69 Sequence -0:69 move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:69 'initSb' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) -0:69 's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa}) 0:? Linker Objects 0:? 'gu' (global 1-element array of mediump float) 0:? 'g4' (global 4-element array of mediump float) diff --git a/Test/baseResults/atomic_uint.frag.out b/Test/baseResults/atomic_uint.frag.out index 4d05756c..e54b5dcf 100644 --- a/Test/baseResults/atomic_uint.frag.out +++ b/Test/baseResults/atomic_uint.frag.out @@ -86,22 +86,6 @@ Linked fragment stage: Shader version: 420 ERROR: node is still EOpNull! -0:5 Function Definition: func(au1; (global uint) -0:5 Function Parameters: -0:5 'c' (in atomic_uint) -0:7 Sequence -0:7 Branch: Return with expression -0:7 AtomicCounterIncrement (global uint) -0:7 'c' (in atomic_uint) -0:10 Function Definition: func2(au1; (global uint) -0:10 Function Parameters: -0:10 'c' (out atomic_uint) -0:12 Sequence -0:12 Branch: Return with expression -0:12 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) -0:13 Branch: Return with expression -0:13 AtomicCounter (global uint) -0:13 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) 0:16 Function Definition: main( (global void) 0:16 Function Parameters: 0:? Sequence @@ -112,22 +96,6 @@ ERROR: node is still EOpNull! 0:19 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) 0:20 AtomicCounterDecrement (global uint) 0:20 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) -0:26 Function Definition: opac( (global void) -0:26 Function Parameters: -0:28 Sequence -0:28 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) -0:29 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) -0:31 indirect index (temp int) -0:31 'a' (temp 3-element array of int) -0:31 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) -0:32 direct index (layout(binding=1 offset=3 ) temp atomic_uint) -0:32 'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint) -0:32 Constant: -0:32 2 (const int) -0:33 indirect index (layout(binding=1 offset=3 ) temp atomic_uint) -0:33 'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint) -0:33 'i' (uniform int) -0:34 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) 0:? Linker Objects 0:? 'counter' (layout(binding=0 offset=0 ) uniform atomic_uint) 0:? 'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint) diff --git a/Test/baseResults/constFold.frag.out b/Test/baseResults/constFold.frag.out index 2e784688..33bf5130 100644 --- a/Test/baseResults/constFold.frag.out +++ b/Test/baseResults/constFold.frag.out @@ -546,120 +546,6 @@ ERROR: node is still EOpNull! 0:69 0.028000 0:69 0.500000 0:69 1.000000 -0:78 Function Definition: foo( (global void) -0:78 Function Parameters: -0:? Sequence -0:81 move second child to first child (temp float) -0:81 direct index (temp float) -0:81 'a' (temp 3-element array of float) -0:81 Constant: -0:81 0 (const int) -0:81 Constant: -0:81 7.000000 -0:82 Constant: -0:82 2 (const int) -0:83 Constant: -0:83 2147483647 (const int) -0:84 Constant: -0:84 inf -0:88 Constant: -0:88 2 (const uint) -0:88 3 (const uint) -0:89 Constant: -0:89 0 (const uint) -0:90 Constant: -0:90 6 (const uint) -0:90 7 (const uint) -0:103 Function Definition: foo2( (global void) -0:103 Function Parameters: -0:105 Sequence -0:105 direct index (temp float) -0:105 'a1' (global 1-element array of float) -0:105 Constant: -0:105 0 (const int) -0:106 direct index (temp float) -0:106 'a2' (global 2-element array of float) -0:106 Constant: -0:106 0 (const int) -0:107 direct index (temp float) -0:107 'a3' (global 4-element array of float) -0:107 Constant: -0:107 0 (const int) -0:108 direct index (temp float) -0:108 'a4' (global 2-element array of float) -0:108 Constant: -0:108 0 (const int) -0:109 Constant: -0:109 1.000000 -0:110 Constant: -0:110 5.000000 -0:111 Constant: -0:111 2.000000 -0:112 Constant: -0:112 3.000000 -0:113 Constant: -0:113 0.000000 -0:114 Constant: -0:114 0.000000 -0:116 move second child to first child (temp int) -0:116 'p' (temp int) -0:116 Constant: -0:116 2147483647 (const int) -0:117 move second child to first child (temp int) -0:117 'p' (temp int) -0:117 Constant: -0:117 -2147483648 (const int) -0:118 move second child to first child (temp int) -0:118 'p' (temp int) -0:118 Constant: -0:118 -2147483647 (const int) -0:119 Sequence -0:119 move second child to first child (temp float) -0:119 'f' (temp float) -0:119 Constant: -0:119 1.444000 -0:120 move second child to first child (temp float) -0:120 'f' (temp float) -0:120 direct index (temp float) -0:120 Construct vec4 (temp 4-component vector of float) -0:120 Test condition and select (temp float) -0:120 Condition -0:120 Compare Less Than (temp bool) -0:120 direct index (temp float) -0:120 'inv' (smooth in 4-component vector of float) -0:120 Constant: -0:120 0 (const int) -0:120 Constant: -0:120 2.400000 -0:120 true case -0:120 Constant: -0:120 -1.000000 -0:120 false case -0:120 Constant: -0:120 1.000000 -0:120 Constant: -0:120 3 (const int) -0:126 Function Definition: foo3( (global void) -0:126 Function Parameters: -0:128 Sequence -0:128 Sequence -0:128 move second child to first child (temp 3X2 matrix of float) -0:128 'r32' (temp 3X2 matrix of float) -0:128 Constant: -0:128 43.000000 -0:128 64.000000 -0:128 51.000000 -0:128 76.000000 -0:128 59.000000 -0:128 88.000000 -0:138 Function Definition: foo4( (global void) -0:138 Function Parameters: -0:140 Sequence -0:140 Sequence -0:140 move second child to first child (temp int) -0:140 'a' (temp int) -0:140 Constant: -0:140 9 (const int) 0:? Linker Objects 0:? 'a' (const int) 0:? 1 (const int) diff --git a/Test/baseResults/cppComplexExpr.vert.out b/Test/baseResults/cppComplexExpr.vert.out index aa73a069..352dcac1 100644 --- a/Test/baseResults/cppComplexExpr.vert.out +++ b/Test/baseResults/cppComplexExpr.vert.out @@ -152,41 +152,6 @@ ERROR: node is still EOpNull! 0:39 'gl_Position' (gl_Position highp 4-component vector of float Position) 0:39 Construct vec4 (temp highp 4-component vector of float) 0:39 'sum' (global highp float) -0:44 Function Definition: foo( (global highp float) -0:44 Function Parameters: -0:46 Sequence -0:46 Branch: Return with expression -0:46 add (temp highp float) -0:46 add (temp highp float) -0:46 direct index (temp highp float) -0:46 'gl_Position' (gl_Position highp 4-component vector of float Position) -0:46 Constant: -0:46 0 (const int) -0:46 Constant: -0:46 3.000000 -0:46 add (temp highp float) -0:46 direct index (temp highp float) -0:46 'gl_Position' (gl_Position highp 4-component vector of float Position) -0:46 Constant: -0:46 0 (const int) -0:46 Constant: -0:46 3.000000 -0:47 Branch: Return with expression -0:47 add (temp highp float) -0:47 add (temp highp float) -0:47 direct index (temp highp float) -0:47 'gl_Position' (gl_Position highp 4-component vector of float Position) -0:47 Constant: -0:47 1 (const int) -0:47 Constant: -0:47 3.000000 -0:47 add (temp highp float) -0:47 direct index (temp highp float) -0:47 'gl_Position' (gl_Position highp 4-component vector of float Position) -0:47 Constant: -0:47 1 (const int) -0:47 Constant: -0:47 3.000000 0:97 Sequence 0:97 move second child to first child (temp highp float) 0:97 'c' (global highp float) diff --git a/Test/baseResults/cppNest.vert.out b/Test/baseResults/cppNest.vert.out index df905579..2077ec33 100644 --- a/Test/baseResults/cppNest.vert.out +++ b/Test/baseResults/cppNest.vert.out @@ -135,17 +135,6 @@ ERROR: node is still EOpNull! 0:133 'selected3' (global int) 0:133 Constant: 0:133 3 (const int) -0:175 Function Definition: foo985( (global void) -0:175 Function Parameters: -0:175 Sequence -0:175 add (temp int) -0:175 Constant: -0:175 2 (const int) -0:175 Comma (temp int) -0:175 Constant: -0:175 3 (const int) -0:175 Constant: -0:175 4 (const int) 0:? Linker Objects 0:? 'sum' (global float) 0:? 'selected4' (global int) diff --git a/Test/baseResults/cppSimple.vert.out b/Test/baseResults/cppSimple.vert.out index 366770d1..bf4b42ae 100644 --- a/Test/baseResults/cppSimple.vert.out +++ b/Test/baseResults/cppSimple.vert.out @@ -282,19 +282,6 @@ ERROR: node is still EOpNull! 0:202 'f' (global double) 0:202 Constant: 0:202 0.000800 -12:20031 Function Definition: foo234( (global void) -12:20031 Function Parameters: -12:20033 Sequence -12:20033 move second child to first child (temp 4-component vector of float) -12:20033 gl_Position: direct index for structure (gl_Position 4-component vector of float Position) -12:20033 'anon@0' (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, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) -12:20033 Constant: -12:20033 0 (const uint) -12:20033 Constant: -12:20033 6.000000 -12:20033 6.000000 -12:20033 6.000000 -12:20033 6.000000 12:9011 Sequence 12:9011 move second child to first child (temp int) 12:9011 'R1' (global int) diff --git a/Test/baseResults/dce.frag.out b/Test/baseResults/dce.frag.out index 2846abd5..6707ae72 100644 --- a/Test/baseResults/dce.frag.out +++ b/Test/baseResults/dce.frag.out @@ -147,128 +147,6 @@ Shader version: 400 0:5 'c' (global int) 0:5 Constant: 0:5 0 (const int) -0:7 Function Definition: bar( (global void) -0:7 Function Parameters: -0:9 Sequence -0:9 Test condition and select (temp void) -0:9 Condition -0:9 Constant: -0:9 false (const bool) -0:9 true case -0:10 Pre-Increment (temp int) -0:10 'c' (global int) -0:9 false case -0:12 Pre-Increment (temp int) -0:12 'c' (global int) -0:14 Test condition and select (temp int) -0:14 Condition -0:14 Constant: -0:14 false (const bool) -0:14 true case -0:14 Pre-Increment (temp int) -0:14 'c' (global int) -0:14 false case -0:14 Pre-Increment (temp int) -0:14 'c' (global int) -0:16 switch -0:16 condition -0:16 'c' (global int) -0:16 body -0:16 Sequence -0:17 case: with expression -0:17 Constant: -0:17 1 (const int) -0:? Sequence -0:18 Pre-Increment (temp int) -0:18 'c' (global int) -0:19 Branch: Break -0:20 Pre-Increment (temp int) -0:20 'c' (global int) -0:21 case: with expression -0:21 Constant: -0:21 2 (const int) -0:? Sequence -0:22 Branch: Break -0:23 Pre-Increment (temp int) -0:23 'c' (global int) -0:24 default: -0:? Sequence -0:25 Branch: Break -0:28 Sequence -0:28 Sequence -0:28 move second child to first child (temp int) -0:28 'i' (temp int) -0:28 Constant: -0:28 0 (const int) -0:28 Loop with condition tested first -0:28 Loop Condition -0:28 Compare Less Than (temp bool) -0:28 'i' (temp int) -0:28 Constant: -0:28 0 (const int) -0:28 Loop Body -0:29 Pre-Increment (temp int) -0:29 'c' (global int) -0:28 Loop Terminal Expression -0:28 Pre-Increment (temp int) -0:28 'i' (temp int) -0:31 Sequence -0:31 Sequence -0:31 move second child to first child (temp int) -0:31 'i' (temp int) -0:31 Constant: -0:31 0 (const int) -0:31 Loop with condition tested first -0:31 Loop Condition -0:31 Compare Less Than (temp bool) -0:31 'i' (temp int) -0:31 Constant: -0:31 10 (const int) -0:31 Loop Body -0:32 Sequence -0:32 Test condition and select (temp void) -0:32 Condition -0:32 Compare Less Than (temp bool) -0:32 'c' (global int) -0:32 Constant: -0:32 3 (const int) -0:32 true case -0:33 Sequence -0:33 Branch: Break -0:34 Pre-Increment (temp int) -0:34 'c' (global int) -0:32 false case -0:36 Sequence -0:36 Branch: Continue -0:37 Pre-Increment (temp int) -0:37 'c' (global int) -0:31 Loop Terminal Expression -0:31 Pre-Increment (temp int) -0:31 'i' (temp int) -0:41 Branch: Return -0:43 Pre-Increment (temp int) -0:43 'c' (global int) -0:46 Function Definition: foo( (global int) -0:46 Function Parameters: -0:48 Sequence -0:48 Test condition and select (temp void) -0:48 Condition -0:48 Compare Greater Than (temp bool) -0:48 'c' (global int) -0:48 Constant: -0:48 4 (const int) -0:48 true case -0:49 Sequence -0:49 Branch: Return with expression -0:49 Constant: -0:49 4 (const int) -0:50 Pre-Increment (temp int) -0:50 'c' (global int) -0:53 Branch: Return with expression -0:53 Constant: -0:53 5 (const int) -0:55 Pre-Increment (temp int) -0:55 'c' (global int) 0:? Linker Objects 0:? 'flag' (const bool) 0:? false (const bool) diff --git a/Test/baseResults/functionSemantics.frag.out b/Test/baseResults/functionSemantics.frag.out index 1ea7dbd6..e0fd0767 100644 --- a/Test/baseResults/functionSemantics.frag.out +++ b/Test/baseResults/functionSemantics.frag.out @@ -397,19 +397,6 @@ ERROR: node is still EOpNull! 0:62 Construct vec4 (temp 4-component vector of float) 0:62 Convert int to float (temp float) 0:62 'color' (temp int) -0:66 Function Definition: aggCall( (global void) -0:66 Function Parameters: -0:? Sequence -0:69 Function Call: m(vf2; (global 3-component vector of float) -0:69 Convert int to float (temp 2-component vector of float) -0:69 Construct ivec2 (temp 2-component vector of int) -0:69 Convert float to int (temp int) -0:69 'F' (temp float) -0:72 Function Definition: badConv( (global 4-component vector of float) -0:72 Function Parameters: -0:74 Sequence -0:74 Branch: Return with expression -0:74 'u' (uniform float) 0:? Linker Objects 0:? 'u' (uniform float) diff --git a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out new file mode 100644 index 00000000..71842afa --- /dev/null +++ b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out @@ -0,0 +1,25 @@ +hlsl.deadFunctionMissingBody.vert +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 13 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 9 + Name 4 "main" + Name 9 "@entryPointOutput" + Decorate 9(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) +9(@entryPointOutput): 8(ptr) Variable Output + 10: 6(float) Constant 0 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 4(main): 2 Function None 3 + 5: Label + Store 9(@entryPointOutput) 11 + Return + FunctionEnd diff --git a/Test/baseResults/lineContinuation.vert.out b/Test/baseResults/lineContinuation.vert.out index 78e5c072..d91ffa31 100644 --- a/Test/baseResults/lineContinuation.vert.out +++ b/Test/baseResults/lineContinuation.vert.out @@ -176,16 +176,6 @@ ERROR: node is still EOpNull! 0:20 'gl_Position' (gl_Position highp 4-component vector of float Position) 0:20 Construct vec4 (temp highp 4-component vector of float) 0:20 'foo' (global highp float) -0:22 Function Definition: foo2(vf4; (global highp 4-component vector of float) -0:22 Function Parameters: -0:22 'a' (in highp 4-component vector of float) -0:24 Sequence -0:24 Sequence -0:24 move second child to first child (temp highp 4-component vector of float) -0:24 'b' (temp highp 4-component vector of float) -0:24 'a' (in highp 4-component vector of float) -0:25 Branch: Return with expression -0:25 'b' (temp highp 4-component vector of float) 0:47 Sequence 0:47 move second child to first child (temp highp int) 0:47 'q1' (global highp int) @@ -256,25 +246,6 @@ ERROR: node is still EOpNull! 0:123 'bar107' (global highp int) 0:128 Constant: 0:128 5 (const int) -0:131 Function Definition: foo203209409( (global void) -0:131 Function Parameters: -0:134 Sequence -0:134 add second child into first child (temp highp int) -0:133 'bar107' (global highp int) -0:134 Constant: -0:134 37 (const int) -0:135 multiply second child into first child (temp highp int) -0:135 'bar107' (global highp int) -0:136 Constant: -0:136 38 (const int) -0:137 divide second child into first child (temp highp int) -0:137 'bar107' (global highp int) -0:138 Constant: -0:138 39 (const int) -0:139 add (temp highp int) -0:139 'bar107' (global highp int) -0:140 Constant: -0:140 41 (const int) 0:? Linker Objects 0:? 'foo' (global highp float) 0:? 'goodDecl' (global highp int) diff --git a/Test/baseResults/lineContinuation100.vert.out b/Test/baseResults/lineContinuation100.vert.out index 003637d0..1fb309b3 100644 --- a/Test/baseResults/lineContinuation100.vert.out +++ b/Test/baseResults/lineContinuation100.vert.out @@ -90,16 +90,6 @@ ERROR: node is still EOpNull! 0:20 'gl_Position' (gl_Position highp 4-component vector of float Position) 0:20 Construct vec4 (temp highp 4-component vector of float) 0:20 'foo' (global highp float) -0:22 Function Definition: foo2(vf4; (global highp 4-component vector of float) -0:22 Function Parameters: -0:22 'a' (in highp 4-component vector of float) -0:24 Sequence -0:24 Sequence -0:24 move second child to first child (temp highp 4-component vector of float) -0:24 'b' (temp highp 4-component vector of float) -0:24 'a' (in highp 4-component vector of float) -0:25 Branch: Return with expression -0:25 'b' (temp highp 4-component vector of float) 0:45 Sequence 0:45 move second child to first child (temp highp int) 0:45 'q1' (global highp int) diff --git a/Test/baseResults/mains1.frag.out b/Test/baseResults/mains1.frag.out index 426a1a8d..95e98e40 100644 --- a/Test/baseResults/mains1.frag.out +++ b/Test/baseResults/mains1.frag.out @@ -58,10 +58,6 @@ max_vertices = -1 input primitive = none output primitive = points ERROR: node is still EOpNull! -0:3 Function Definition: foo( (global void) -0:3 Function Parameters: -0:3 Function Definition: bar( (global void) -0:3 Function Parameters: 0:? Linker Objects Shader version: 110 0:? Sequence diff --git a/Test/baseResults/missingBodies.vert.out b/Test/baseResults/missingBodies.vert.out index 7cf4734d..6d77e093 100755 --- a/Test/baseResults/missingBodies.vert.out +++ b/Test/baseResults/missingBodies.vert.out @@ -69,25 +69,6 @@ Shader version: 450 0:4 Function Parameters: 0:4 Sequence 0:4 Function Call: bar( (global void) -0:8 Function Definition: C(i1;i1; (global void) -0:8 Function Parameters: -0:8 '' (in int) -0:8 '' (in int) -0:10 Function Definition: A( (global void) -0:10 Function Parameters: -0:10 Sequence -0:10 Function Call: B( (global void) -0:10 Function Call: C(i1; (global void) -0:10 Constant: -0:10 1 (const int) -0:10 Function Call: C(b1; (global void) -0:10 Constant: -0:10 true (const bool) -0:10 Function Call: C(i1;i1; (global void) -0:10 Constant: -0:10 1 (const int) -0:10 Constant: -0:10 2 (const int) 0:12 Function Definition: main( (global void) 0:12 Function Parameters: 0:14 Sequence diff --git a/Test/baseResults/noMain.vert.out b/Test/baseResults/noMain.vert.out index 80a32255..60ac3a3a 100644 --- a/Test/baseResults/noMain.vert.out +++ b/Test/baseResults/noMain.vert.out @@ -30,8 +30,6 @@ Linked fragment stage: Shader version: 300 0:? Sequence -0:3 Function Definition: foo( (global void) -0:3 Function Parameters: 0:? Linker Objects 0:? 'gl_VertexID' (gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId highp int InstanceId) diff --git a/Test/baseResults/precise.tesc.out b/Test/baseResults/precise.tesc.out index 962a3c98..17c7d53f 100644 --- a/Test/baseResults/precise.tesc.out +++ b/Test/baseResults/precise.tesc.out @@ -392,376 +392,6 @@ Requested GL_EXT_shader_io_blocks Requested GL_EXT_tessellation_shader vertices = -1 0:? Sequence -0:5 Function Definition: minimal( (global float) -0:5 Function Parameters: -0:6 Sequence -0:6 Sequence -0:6 move second child to first child (temp float) -0:6 'result' (noContraction temp float) -0:6 Constant: -0:6 5.000000 -0:7 Sequence -0:7 move second child to first child (temp float) -0:7 'a' (noContraction temp float) -0:7 Constant: -0:7 10.000000 -0:8 Sequence -0:8 move second child to first child (temp float) -0:8 'b' (noContraction temp float) -0:8 Constant: -0:8 20.000000 -0:9 Sequence -0:9 move second child to first child (temp float) -0:9 'c' (noContraction temp float) -0:9 Constant: -0:9 30.000000 -0:10 Sequence -0:10 move second child to first child (temp float) -0:10 'd' (noContraction temp float) -0:10 Constant: -0:10 40.000000 -0:11 move second child to first child (temp float) -0:11 'result' (noContraction temp float) -0:11 add (noContraction temp float) -0:11 component-wise multiply (noContraction temp float) -0:11 'a' (noContraction temp float) -0:11 'b' (noContraction temp float) -0:11 component-wise multiply (noContraction temp float) -0:11 'c' (noContraction temp float) -0:11 'd' (noContraction temp float) -0:12 Branch: Return with expression -0:12 'result' (noContraction temp float) -0:15 Function Definition: continuous_assignment( (global void) -0:15 Function Parameters: -0:16 Sequence -0:16 Sequence -0:16 move second child to first child (temp float) -0:16 'result' (noContraction temp float) -0:16 Constant: -0:16 5.000000 -0:17 Sequence -0:17 move second child to first child (temp float) -0:17 'a' (noContraction temp float) -0:17 Constant: -0:17 10.000000 -0:18 Sequence -0:18 move second child to first child (temp float) -0:18 'b' (noContraction temp float) -0:18 Constant: -0:18 20.000000 -0:19 move second child to first child (temp float) -0:19 'result' (noContraction temp float) -0:19 move second child to first child (temp float) -0:19 'a' (noContraction temp float) -0:19 add (noContraction temp float) -0:19 'b' (noContraction temp float) -0:19 Constant: -0:19 4.000000 -0:22 Function Definition: convert( (global void) -0:22 Function Parameters: -0:? Sequence -0:24 Sequence -0:24 move second child to first child (temp float) -0:24 'a' (noContraction temp float) -0:24 Constant: -0:24 10.000000 -0:25 Sequence -0:25 move second child to first child (temp float) -0:25 'b' (noContraction temp float) -0:25 Constant: -0:25 20.000000 -0:26 move second child to first child (temp float) -0:26 'b' (noContraction temp float) -0:26 add (noContraction temp float) -0:26 'a' (noContraction temp float) -0:26 'b' (noContraction temp float) -0:27 move second child to first child (temp double) -0:27 'result' (noContraction temp double) -0:27 Convert float to double (temp double) -0:27 'b' (noContraction temp float) -0:30 Function Definition: loop_for( (global float) -0:30 Function Parameters: -0:31 Sequence -0:31 Sequence -0:31 move second child to first child (temp float) -0:31 'r1' (noContraction temp float) -0:31 Constant: -0:31 5.000000 -0:32 Sequence -0:32 move second child to first child (temp float) -0:32 'r2' (noContraction temp float) -0:32 Constant: -0:32 10.000000 -0:33 Sequence -0:33 move second child to first child (temp int) -0:33 'a' (temp int) -0:33 Constant: -0:33 10 (const int) -0:34 Sequence -0:34 move second child to first child (temp int) -0:34 'b' (noContraction temp int) -0:34 Constant: -0:34 20 (const int) -0:35 Sequence -0:35 move second child to first child (temp int) -0:35 'c' (noContraction temp int) -0:35 Constant: -0:35 30 (const int) -0:36 Sequence -0:36 Sequence -0:36 move second child to first child (temp int) -0:36 'i' (noContraction temp int) -0:36 Constant: -0:36 0 (const int) -0:36 Loop with condition tested first -0:36 Loop Condition -0:36 Compare Less Than (temp bool) -0:36 'i' (temp int) -0:36 'a' (temp int) -0:36 Loop Body -0:37 Sequence -0:37 add second child into first child (noContraction temp float) -0:37 'r1' (noContraction temp float) -0:37 add (noContraction temp float) -0:37 add (noContraction temp float) -0:37 Constant: -0:37 3.120000 -0:37 Convert int to float (temp float) -0:37 'b' (noContraction temp int) -0:37 Convert int to float (temp float) -0:37 'i' (noContraction temp int) -0:38 add second child into first child (noContraction temp int) -0:38 'c' (noContraction temp int) -0:38 Constant: -0:38 1 (const int) -0:36 Loop Terminal Expression -0:36 Post-Increment (noContraction temp int) -0:36 'i' (noContraction temp int) -0:40 add second child into first child (temp int) -0:40 'a' (temp int) -0:40 Constant: -0:40 1 (const int) -0:41 move second child to first child (temp float) -0:41 'r2' (noContraction temp float) -0:41 Convert int to float (temp float) -0:41 'c' (noContraction temp int) -0:42 Branch: Return with expression -0:42 Construct float (temp float) -0:42 add (temp float) -0:42 'r1' (noContraction temp float) -0:42 'r2' (noContraction temp float) -0:45 Function Definition: loop_array( (global void) -0:45 Function Parameters: -0:? Sequence -0:48 Sequence -0:48 move second child to first child (temp int) -0:48 'x' (noContraction temp int) -0:48 Constant: -0:48 22 (const int) -0:49 Sequence -0:49 move second child to first child (temp int) -0:49 'y' (noContraction temp int) -0:49 Constant: -0:49 33 (const int) -0:52 add second child into first child (noContraction temp float) -0:52 'result' (noContraction temp float) -0:52 add (noContraction temp float) -0:52 Convert int to float (temp float) -0:52 'x' (noContraction temp int) -0:52 Convert int to float (temp float) -0:52 'y' (noContraction temp int) -0:54 Sequence -0:54 Sequence -0:54 move second child to first child (temp int) -0:54 'i' (temp int) -0:54 Constant: -0:54 0 (const int) -0:54 Loop with condition tested first -0:54 Loop Condition -0:54 Compare Less Than (temp bool) -0:54 'i' (temp int) -0:54 Constant: -0:54 3 (const int) -0:54 Loop Body -0:56 Sequence -0:56 add second child into first child (noContraction temp float) -0:56 'result' (noContraction temp float) -0:56 add (noContraction temp float) -0:56 indirect index (noContraction temp float) -0:56 'a0' (temp 3-element array of float) -0:56 'i' (temp int) -0:56 Constant: -0:56 2.000000 -0:58 move second child to first child (temp float) -0:58 indirect index (noContraction temp float) -0:58 'a0' (noContraction temp 3-element array of float) -0:58 'i' (temp int) -0:58 subtract (noContraction temp float) -0:58 Constant: -0:58 3.000000 -0:58 Post-Increment (noContraction temp float) -0:58 'result' (noContraction temp float) -0:54 Loop Terminal Expression -0:54 Pre-Increment (temp int) -0:54 'i' (temp int) -0:62 Function Definition: loop_while( (global void) -0:62 Function Parameters: -0:63 Sequence -0:63 Sequence -0:63 move second child to first child (temp float) -0:63 'result' (noContraction temp float) -0:63 Constant: -0:63 5.000000 -0:64 Sequence -0:64 move second child to first child (temp int) -0:64 'a' (noContraction temp int) -0:64 Constant: -0:64 10 (const int) -0:65 Sequence -0:65 move second child to first child (temp int) -0:65 'b' (noContraction temp int) -0:65 Constant: -0:65 20 (const int) -0:66 Loop with condition tested first -0:66 Loop Condition -0:66 Compare Less Than (temp bool) -0:66 'result' (noContraction temp float) -0:66 Constant: -0:66 10.000000 -0:66 Loop Body -0:67 Sequence -0:67 add second child into first child (noContraction temp float) -0:67 'result' (noContraction temp float) -0:67 add (noContraction temp float) -0:67 Constant: -0:67 3.120000 -0:67 Convert int to float (temp float) -0:67 'b' (noContraction temp int) -0:69 move second child to first child (temp float) -0:69 'result' (noContraction temp float) -0:69 Convert int to float (temp float) -0:69 add (temp int) -0:69 add (temp int) -0:69 'a' (noContraction temp int) -0:69 'b' (noContraction temp int) -0:69 Constant: -0:69 5 (const int) -0:70 move second child to first child (temp float) -0:70 'result' (noContraction temp float) -0:70 Constant: -0:70 11.100000 -0:73 Function Definition: fma_not_decorated( (global float) -0:73 Function Parameters: -0:? Sequence -0:75 Sequence -0:75 move second child to first child (temp float) -0:75 'a' (noContraction temp float) -0:75 Constant: -0:75 1.000000 -0:76 Sequence -0:76 move second child to first child (temp float) -0:76 'b' (noContraction temp float) -0:76 Constant: -0:76 2.000000 -0:77 Sequence -0:77 move second child to first child (temp float) -0:77 'c' (noContraction temp float) -0:77 Constant: -0:77 3.000000 -0:78 move second child to first child (temp float) -0:78 'b' (noContraction temp float) -0:78 add (noContraction temp float) -0:78 'b' (noContraction temp float) -0:78 'c' (noContraction temp float) -0:79 move second child to first child (temp float) -0:79 'result' (noContraction temp float) -0:79 fma (global float) -0:79 'a' (noContraction temp float) -0:79 'b' (noContraction temp float) -0:79 'c' (noContraction temp float) -0:80 Branch: Return with expression -0:80 'result' (noContraction temp float) -0:83 Function Definition: precise_return_exp_func( (noContraction temp float) -0:83 Function Parameters: -0:84 Sequence -0:84 Sequence -0:84 move second child to first child (temp float) -0:84 'a' (noContraction temp float) -0:84 Constant: -0:84 1.000000 -0:85 Sequence -0:85 move second child to first child (temp float) -0:85 'b' (noContraction temp float) -0:85 Constant: -0:85 2.000000 -0:86 Branch: Return with expression -0:86 add (noContraction temp float) -0:86 'a' (noContraction temp float) -0:86 'b' (noContraction temp float) -0:89 Function Definition: precise_return_val_func( (noContraction temp float) -0:89 Function Parameters: -0:90 Sequence -0:90 Sequence -0:90 move second child to first child (temp float) -0:90 'a' (noContraction temp float) -0:90 Constant: -0:90 1.000000 -0:91 Sequence -0:91 move second child to first child (temp float) -0:91 'b' (noContraction temp float) -0:91 Constant: -0:91 2.000000 -0:92 Sequence -0:92 move second child to first child (temp float) -0:92 'result' (noContraction temp float) -0:92 add (noContraction temp float) -0:92 'a' (noContraction temp float) -0:92 'b' (noContraction temp float) -0:93 Branch: Return with expression -0:93 'result' (noContraction temp float) -0:96 Function Definition: precise_func_parameter(f1;f1; (global float) -0:96 Function Parameters: -0:96 'b' (in float) -0:96 'c' (noContraction out float) -0:97 Sequence -0:97 Sequence -0:97 move second child to first child (temp float) -0:97 'a' (noContraction temp float) -0:97 Constant: -0:97 0.500000 -0:98 move second child to first child (temp float) -0:98 'c' (noContraction out float) -0:98 add (noContraction temp float) -0:98 'a' (noContraction temp float) -0:98 'b' (noContraction in float) -0:99 Branch: Return with expression -0:99 subtract (temp float) -0:99 'a' (temp float) -0:99 'b' (in float) -0:102 Function Definition: matrix(mf23;mf32; (global 3X3 matrix of float) -0:102 Function Parameters: -0:102 'a' (in 2X3 matrix of float) -0:102 'b' (in 3X2 matrix of float) -0:103 Sequence -0:103 Sequence -0:103 move second child to first child (temp 2X3 matrix of float) -0:103 'c' (noContraction temp 2X3 matrix of float) -0:103 Constant: -0:103 1.000000 -0:103 2.000000 -0:103 3.000000 -0:103 4.000000 -0:103 5.000000 -0:103 6.000000 -0:105 move second child to first child (temp 3X3 matrix of float) -0:105 'result' (noContraction temp 3X3 matrix of float) -0:105 matrix-multiply (noContraction temp 3X3 matrix of float) -0:105 add (noContraction temp 2X3 matrix of float) -0:105 'a' (noContraction in 2X3 matrix of float) -0:105 'c' (noContraction temp 2X3 matrix of float) -0:105 'b' (noContraction in 3X2 matrix of float) -0:106 Branch: Return with expression -0:106 'result' (noContraction temp 3X3 matrix of float) 0:109 Function Definition: main( (global void) 0:109 Function Parameters: 0:? Linker Objects diff --git a/Test/baseResults/precise_struct_block.vert.out b/Test/baseResults/precise_struct_block.vert.out index 9d726d65..e40fd0cd 100644 --- a/Test/baseResults/precise_struct_block.vert.out +++ b/Test/baseResults/precise_struct_block.vert.out @@ -526,515 +526,6 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:11 Function Definition: struct_member( (global float) -0:11 Function Parameters: -0:12 Sequence -0:12 Sequence -0:12 move second child to first child (temp float) -0:12 'a' (noContraction temp float) -0:12 Constant: -0:12 1.000000 -0:13 Sequence -0:13 move second child to first child (temp float) -0:13 'b' (temp float) -0:13 Constant: -0:13 2.000000 -0:14 Sequence -0:14 move second child to first child (temp float) -0:14 'c' (temp float) -0:14 Constant: -0:14 3.000000 -0:15 Sequence -0:15 move second child to first child (temp float) -0:15 'd' (temp float) -0:15 Constant: -0:15 4.000000 -0:21 move second child to first child (temp float) -0:21 f1: direct index for structure (noContraction global float) -0:21 'S2' (temp structure{global float f1, global float f2}) -0:21 Constant: -0:21 0 (const int) -0:21 add (noContraction temp float) -0:21 'a' (noContraction temp float) -0:21 Constant: -0:21 0.200000 -0:22 move second child to first child (temp float) -0:22 f2: direct index for structure (global float) -0:22 'S2' (temp structure{global float f1, global float f2}) -0:22 Constant: -0:22 1 (const int) -0:22 add (temp float) -0:22 'b' (temp float) -0:22 Constant: -0:22 0.200000 -0:23 move second child to first child (temp float) -0:23 f1: direct index for structure (global float) -0:23 'S3' (temp structure{global float f1, global float f2}) -0:23 Constant: -0:23 0 (const int) -0:23 add (temp float) -0:23 'a' (temp float) -0:23 'b' (temp float) -0:24 move second child to first child (temp structure{global float f1, global float f2}) -0:24 'S' (temp structure{global float f1, global float f2}) -0:24 'S2' (temp structure{global float f1, global float f2}) -0:25 move second child to first child (temp float) -0:25 'result' (noContraction temp float) -0:25 add (noContraction temp float) -0:25 f1: direct index for structure (noContraction global float) -0:25 'S' (temp structure{global float f1, global float f2}) -0:25 Constant: -0:25 0 (const int) -0:25 Constant: -0:25 0.100000 -0:27 Branch: Return with expression -0:27 'result' (noContraction temp float) -0:30 Function Definition: complex_array_struct( (global float) -0:30 Function Parameters: -0:? Sequence -0:43 Sequence -0:43 Sequence -0:43 move second child to first child (temp int) -0:43 'i' (noContraction temp int) -0:43 Constant: -0:43 0 (const int) -0:43 Loop with condition tested first -0:43 Loop Condition -0:43 Compare Less Than (temp bool) -0:43 'i' (temp int) -0:43 Constant: -0:43 10 (const int) -0:43 Loop Body -0:44 Sequence -0:44 move second child to first child (temp float) -0:44 f: direct index for structure (temp float) -0:44 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:44 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:44 'i' (temp int) -0:44 Constant: -0:44 0 (const int) -0:44 divide (temp float) -0:44 Convert int to float (temp float) -0:44 'i' (temp int) -0:44 Constant: -0:44 3.000000 -0:45 move second child to first child (temp 4-component vector of float) -0:45 v: direct index for structure (noContraction temp 4-component vector of float) -0:45 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:45 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:45 'i' (temp int) -0:45 Constant: -0:45 2 (const int) -0:45 Construct vec4 (temp 4-component vector of float) -0:45 component-wise multiply (noContraction temp float) -0:45 Convert int to float (temp float) -0:45 'i' (noContraction temp int) -0:45 Constant: -0:45 1.500000 -0:46 move second child to first child (temp int) -0:46 p: direct index for structure (temp int) -0:46 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:46 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:46 'i' (temp int) -0:46 Constant: -0:46 3 (const int) -0:46 add (temp int) -0:46 'i' (temp int) -0:46 Constant: -0:46 1 (const int) -0:47 Sequence -0:47 Sequence -0:47 move second child to first child (temp int) -0:47 'j' (temp int) -0:47 Constant: -0:47 0 (const int) -0:47 Loop with condition tested first -0:47 Loop Condition -0:47 Compare Less Than (temp bool) -0:47 'j' (temp int) -0:47 Constant: -0:47 5 (const int) -0:47 Loop Body -0:48 Sequence -0:48 Sequence -0:48 Sequence -0:48 move second child to first child (temp int) -0:48 'k' (temp int) -0:48 Constant: -0:48 0 (const int) -0:48 Loop with condition tested first -0:48 Loop Condition -0:48 Compare Less Than (temp bool) -0:48 'k' (temp int) -0:48 Constant: -0:48 3 (const int) -0:48 Loop Body -0:49 Sequence -0:49 move second child to first child (temp float) -0:49 indirect index (temp float) -0:49 t1_array: direct index for structure (temp 3-element array of float) -0:49 indirect index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:49 t1a: direct index for structure (temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:49 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:49 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:49 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:49 'i' (temp int) -0:49 Constant: -0:49 1 (const int) -0:49 Constant: -0:49 0 (const int) -0:49 'j' (temp int) -0:49 Constant: -0:49 0 (const int) -0:49 'k' (temp int) -0:49 Convert int to float (temp float) -0:49 add (temp int) -0:49 component-wise multiply (temp int) -0:49 'i' (temp int) -0:49 'j' (temp int) -0:49 'k' (temp int) -0:48 Loop Terminal Expression -0:48 Post-Increment (temp int) -0:48 'k' (temp int) -0:51 move second child to first child (temp float) -0:51 t1_scalar: direct index for structure (temp float) -0:51 indirect index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:51 t1a: direct index for structure (temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:51 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:51 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:51 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:51 'i' (temp int) -0:51 Constant: -0:51 1 (const int) -0:51 Constant: -0:51 0 (const int) -0:51 'j' (temp int) -0:51 Constant: -0:51 1 (const int) -0:51 divide (temp float) -0:51 component-wise multiply (temp float) -0:51 Convert int to float (temp float) -0:51 'j' (temp int) -0:51 Constant: -0:51 2.000000 -0:51 Convert int to float (temp float) -0:51 'i' (temp int) -0:47 Loop Terminal Expression -0:47 Post-Increment (temp int) -0:47 'j' (temp int) -0:54 Sequence -0:54 Sequence -0:54 move second child to first child (temp int) -0:54 'j' (noContraction temp int) -0:54 Constant: -0:54 0 (const int) -0:54 Loop with condition tested first -0:54 Loop Condition -0:54 Compare Less Than (temp bool) -0:54 'j' (temp int) -0:54 Constant: -0:54 6 (const int) -0:54 Loop Body -0:55 Sequence -0:55 Sequence -0:55 Sequence -0:55 move second child to first child (temp int) -0:55 'k' (temp int) -0:55 Constant: -0:55 0 (const int) -0:55 Loop with condition tested first -0:55 Loop Condition -0:55 Compare Less Than (temp bool) -0:55 'k' (temp int) -0:55 Constant: -0:55 3 (const int) -0:55 Loop Body -0:56 Sequence -0:56 move second child to first child (temp float) -0:56 indirect index (temp float) -0:56 t1_array: direct index for structure (temp 3-element array of float) -0:56 indirect index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:56 t1b: direct index for structure (temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:56 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:56 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:56 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:56 'i' (temp int) -0:56 Constant: -0:56 1 (const int) -0:56 Constant: -0:56 1 (const int) -0:56 'j' (temp int) -0:56 Constant: -0:56 0 (const int) -0:56 'k' (temp int) -0:56 Convert int to float (temp float) -0:56 add (temp int) -0:56 component-wise multiply (temp int) -0:56 'i' (temp int) -0:56 'j' (temp int) -0:56 'k' (temp int) -0:55 Loop Terminal Expression -0:55 Post-Increment (temp int) -0:55 'k' (temp int) -0:58 move second child to first child (temp float) -0:58 t1_scalar: direct index for structure (noContraction temp float) -0:58 indirect index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:58 t1b: direct index for structure (temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:58 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:58 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:58 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:58 'i' (temp int) -0:58 Constant: -0:58 1 (const int) -0:58 Constant: -0:58 1 (const int) -0:58 'j' (temp int) -0:58 Constant: -0:58 1 (const int) -0:58 divide (noContraction temp float) -0:58 component-wise multiply (noContraction temp float) -0:58 Convert int to float (temp float) -0:58 'j' (noContraction temp int) -0:58 Constant: -0:58 2.000000 -0:58 Convert int to float (temp float) -0:58 'i' (noContraction temp int) -0:54 Loop Terminal Expression -0:54 Post-Increment (noContraction temp int) -0:54 'j' (noContraction temp int) -0:61 Sequence -0:61 Sequence -0:61 move second child to first child (temp int) -0:61 'j' (noContraction temp int) -0:61 Constant: -0:61 0 (const int) -0:61 Loop with condition tested first -0:61 Loop Condition -0:61 Compare Less Than (temp bool) -0:61 'j' (temp int) -0:61 Constant: -0:61 6 (const int) -0:61 Loop Body -0:62 Sequence -0:62 Sequence -0:62 Sequence -0:62 move second child to first child (temp int) -0:62 'k' (noContraction temp int) -0:62 Constant: -0:62 0 (const int) -0:62 Loop with condition tested first -0:62 Loop Condition -0:62 Compare Less Than (temp bool) -0:62 'k' (temp int) -0:62 Constant: -0:62 3 (const int) -0:62 Loop Body -0:63 Sequence -0:63 move second child to first child (temp float) -0:63 indirect index (noContraction temp float) -0:63 t1_array: direct index for structure (noContraction temp 3-element array of float) -0:63 indirect index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:63 t1c: direct index for structure (temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:63 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:63 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:63 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:63 'i' (temp int) -0:63 Constant: -0:63 1 (const int) -0:63 Constant: -0:63 2 (const int) -0:63 'j' (temp int) -0:63 Constant: -0:63 0 (const int) -0:63 'k' (temp int) -0:63 Convert int to float (temp float) -0:63 add (temp int) -0:63 component-wise multiply (temp int) -0:63 'i' (noContraction temp int) -0:63 'j' (noContraction temp int) -0:63 'k' (noContraction temp int) -0:62 Loop Terminal Expression -0:62 Post-Increment (noContraction temp int) -0:62 'k' (noContraction temp int) -0:65 move second child to first child (temp float) -0:65 t1_scalar: direct index for structure (temp float) -0:65 indirect index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:65 t1c: direct index for structure (temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:65 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:65 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:65 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:65 'i' (temp int) -0:65 Constant: -0:65 1 (const int) -0:65 Constant: -0:65 2 (const int) -0:65 'j' (temp int) -0:65 Constant: -0:65 1 (const int) -0:65 divide (temp float) -0:65 component-wise multiply (temp float) -0:65 Convert int to float (temp float) -0:65 'j' (temp int) -0:65 Constant: -0:65 2.000000 -0:65 Convert int to float (temp float) -0:65 'i' (temp int) -0:61 Loop Terminal Expression -0:61 Post-Increment (noContraction temp int) -0:61 'j' (noContraction temp int) -0:43 Loop Terminal Expression -0:43 Post-Increment (noContraction temp int) -0:43 'i' (noContraction temp int) -0:68 Sequence -0:68 move second child to first child (temp int) -0:68 'i' (temp int) -0:68 Constant: -0:68 2 (const int) -0:69 move second child to first child (temp float) -0:69 'result' (noContraction temp float) -0:71 add (noContraction temp float) -0:70 add (noContraction temp float) -0:69 direct index (noContraction temp float) -0:69 t1_array: direct index for structure (temp 3-element array of float) -0:69 direct index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:69 t1c: direct index for structure (temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:69 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:69 direct index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:69 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:69 Constant: -0:69 5 (const int) -0:69 Constant: -0:69 1 (const int) -0:69 Constant: -0:69 2 (const int) -0:69 Constant: -0:69 6 (const int) -0:69 Constant: -0:69 0 (const int) -0:69 Constant: -0:69 1 (const int) -0:70 t1_scalar: direct index for structure (noContraction temp float) -0:70 direct index (temp structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:70 t1b: direct index for structure (temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar}) -0:70 t2: direct index for structure (temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c}) -0:70 direct index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:70 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:70 Constant: -0:70 2 (const int) -0:70 Constant: -0:70 1 (const int) -0:70 Constant: -0:70 1 (const int) -0:70 Constant: -0:70 1 (const int) -0:70 Constant: -0:70 1 (const int) -0:71 direct index (noContraction temp float) -0:71 vector swizzle (temp 2-component vector of float) -0:71 v: direct index for structure (temp 4-component vector of float) -0:71 indirect index (temp structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:71 't3' (temp 10-element array of structure{temp float f, temp structure{temp 5-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1a, temp 6-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1b, temp 7-element array of structure{temp 3-element array of float t1_array, temp float t1_scalar} t1c} t2, temp 4-component vector of float v, temp int p}) -0:71 subtract (temp int) -0:71 'i' (temp int) -0:71 Constant: -0:71 1 (const int) -0:71 Constant: -0:71 2 (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 0 (const int) -0:72 Branch: Return with expression -0:72 'result' (noContraction temp float) -0:75 Function Definition: out_block( (global float) -0:75 Function Parameters: -0:76 Sequence -0:76 Sequence -0:76 move second child to first child (temp float) -0:76 'a' (noContraction temp float) -0:76 Constant: -0:76 0.100000 -0:77 Sequence -0:77 move second child to first child (temp float) -0:77 'b' (noContraction temp float) -0:77 Constant: -0:77 0.200000 -0:78 move second child to first child (temp float) -0:78 f1: direct index for structure (noContraction global float) -0:78 s: direct index for structure (noContraction out structure{global float f1, global float f2}) -0:78 'partial_precise_block' (out block{noContraction out structure{global float f1, global float f2} s, out float x}) -0:78 Constant: -0:78 0 (const int) -0:78 Constant: -0:78 0 (const int) -0:78 add (noContraction temp float) -0:78 'a' (noContraction temp float) -0:78 'b' (noContraction temp float) -0:79 move second child to first child (temp float) -0:79 f2: direct index for structure (noContraction global float) -0:79 s: direct index for structure (noContraction out structure{global float f1, global float f2}) -0:79 'partial_precise_block' (out block{noContraction out structure{global float f1, global float f2} s, out float x}) -0:79 Constant: -0:79 0 (const int) -0:79 Constant: -0:79 1 (const int) -0:79 subtract (noContraction temp float) -0:79 'a' (noContraction temp float) -0:79 'b' (noContraction temp float) -0:80 move second child to first child (temp float) -0:80 x: direct index for structure (out float) -0:80 'partial_precise_block' (out block{noContraction out structure{global float f1, global float f2} s, out float x}) -0:80 Constant: -0:80 1 (const int) -0:80 component-wise multiply (temp float) -0:80 'a' (temp float) -0:80 'b' (temp float) -0:82 move second child to first child (temp float) -0:82 f1: direct index for structure (noContraction global float) -0:82 s: direct index for structure (noContraction out structure{global float f1, global float f2}) -0:82 'all_precise_block' (noContraction out block{out structure{global float f1, global float f2} s, out float x}) -0:82 Constant: -0:82 0 (const int) -0:82 Constant: -0:82 0 (const int) -0:82 add (noContraction temp float) -0:82 add (noContraction temp float) -0:82 'a' (noContraction temp float) -0:82 'b' (noContraction temp float) -0:82 Constant: -0:82 1.000000 -0:83 move second child to first child (temp float) -0:83 f2: direct index for structure (noContraction global float) -0:83 s: direct index for structure (noContraction out structure{global float f1, global float f2}) -0:83 'all_precise_block' (noContraction out block{out structure{global float f1, global float f2} s, out float x}) -0:83 Constant: -0:83 0 (const int) -0:83 Constant: -0:83 1 (const int) -0:83 subtract (noContraction temp float) -0:83 subtract (noContraction temp float) -0:83 'a' (noContraction temp float) -0:83 'b' (noContraction temp float) -0:83 Constant: -0:83 1.000000 -0:84 move second child to first child (temp float) -0:84 x: direct index for structure (noContraction out float) -0:84 'all_precise_block' (noContraction out block{out structure{global float f1, global float f2} s, out float x}) -0:84 Constant: -0:84 1 (const int) -0:84 component-wise multiply (noContraction temp float) -0:84 component-wise multiply (noContraction temp float) -0:84 'a' (noContraction temp float) -0:84 'b' (noContraction temp float) -0:84 Constant: -0:84 2.000000 -0:86 Branch: Return with expression -0:86 add (temp float) -0:86 'a' (temp float) -0:86 'b' (temp float) 0:89 Function Definition: main( (global void) 0:89 Function Parameters: 0:? Linker Objects diff --git a/Test/baseResults/precision.frag.out b/Test/baseResults/precision.frag.out index 79485b48..5ab99e99 100644 --- a/Test/baseResults/precision.frag.out +++ b/Test/baseResults/precision.frag.out @@ -130,18 +130,6 @@ Linked fragment stage: Shader version: 100 ERROR: node is still EOpNull! -0:5 Function Definition: foo(vf3; (global lowp 2-component vector of float) -0:5 Function Parameters: -0:5 'mv3' (in mediump 3-component vector of float) -0:? Sequence -0:8 Branch: Return with expression -0:8 vector swizzle (temp highp 2-component vector of float) -0:8 'hv4' (temp highp 4-component vector of float) -0:8 Sequence -0:8 Constant: -0:8 0 (const int) -0:8 Constant: -0:8 1 (const int) 0:25 Function Definition: main( (global void) 0:25 Function Parameters: 0:27 Sequence diff --git a/Test/baseResults/recurse1.vert.out b/Test/baseResults/recurse1.vert.out index c2ae0140..4274eb38 100644 --- a/Test/baseResults/recurse1.vert.out +++ b/Test/baseResults/recurse1.vert.out @@ -218,66 +218,6 @@ Shader version: 330 0:? Sequence 0:3 Function Definition: main( (global void) 0:3 Function Parameters: -0:9 Function Definition: self( (global void) -0:9 Function Parameters: -0:11 Sequence -0:11 Function Call: self( (global void) -0:16 Function Definition: foo(f1; (global void) -0:16 Function Parameters: -0:16 '' (in float) -0:18 Sequence -0:18 Function Call: bar(i1; (global float) -0:18 Constant: -0:18 2 (const int) -0:21 Function Definition: bar(i1; (global float) -0:21 Function Parameters: -0:21 '' (in int) -0:23 Sequence -0:23 Function Call: foo(f1; (global void) -0:23 Constant: -0:23 4.200000 -0:25 Branch: Return with expression -0:25 Constant: -0:25 3.200000 -0:32 Function Definition: A( (global void) -0:32 Function Parameters: -0:32 Sequence -0:32 Function Call: B( (global void) -0:33 Function Definition: C( (global void) -0:33 Function Parameters: -0:33 Sequence -0:33 Function Call: D( (global void) -0:34 Function Definition: B( (global void) -0:34 Function Parameters: -0:34 Sequence -0:34 Function Call: C( (global void) -0:35 Function Definition: D( (global void) -0:35 Function Parameters: -0:35 Sequence -0:35 Function Call: A( (global void) -0:41 Function Definition: AT( (global void) -0:41 Function Parameters: -0:41 Sequence -0:41 Function Call: BT( (global void) -0:41 Function Call: BT( (global void) -0:41 Function Call: BT( (global void) -0:42 Function Definition: CT( (global void) -0:42 Function Parameters: -0:42 Sequence -0:42 Function Call: DT( (global void) -0:42 Function Call: AT( (global void) -0:42 Function Call: DT( (global void) -0:42 Function Call: BT( (global void) -0:43 Function Definition: BT( (global void) -0:43 Function Parameters: -0:43 Sequence -0:43 Function Call: CT( (global void) -0:43 Function Call: CT( (global void) -0:43 Function Call: CT( (global void) -0:44 Function Definition: DT( (global void) -0:44 Function Parameters: -0:44 Sequence -0:44 Function Call: AT( (global void) 0:? Linker Objects 0:? 'gl_VertexID' (gl_VertexId int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) @@ -285,113 +225,5 @@ Shader version: 330 0:? Sequence 0:5 Function Definition: main( (global void) 0:5 Function Parameters: -0:11 Function Definition: cfoo(f1; (global void) -0:11 Function Parameters: -0:11 '' (in float) -0:13 Sequence -0:13 Function Call: cbar(i1; (global float) -0:13 Constant: -0:13 2 (const int) -0:20 Function Definition: CA( (global void) -0:20 Function Parameters: -0:20 Sequence -0:20 Function Call: CB( (global void) -0:21 Function Definition: CC( (global void) -0:21 Function Parameters: -0:21 Sequence -0:21 Function Call: CD( (global void) -0:27 Function Definition: CAT( (global void) -0:27 Function Parameters: -0:27 Sequence -0:27 Function Call: CBT( (global void) -0:27 Function Call: CBT( (global void) -0:27 Function Call: CBT( (global void) -0:28 Function Definition: CCT( (global void) -0:28 Function Parameters: -0:28 Sequence -0:28 Function Call: CDT( (global void) -0:28 Function Call: CDT( (global void) -0:28 Function Call: CBT( (global void) -0:32 Function Definition: norA( (global void) -0:32 Function Parameters: -0:33 Function Definition: norB( (global void) -0:33 Function Parameters: -0:33 Sequence -0:33 Function Call: norA( (global void) -0:34 Function Definition: norC( (global void) -0:34 Function Parameters: -0:34 Sequence -0:34 Function Call: norA( (global void) -0:35 Function Definition: norD( (global void) -0:35 Function Parameters: -0:35 Sequence -0:35 Function Call: norA( (global void) -0:36 Function Definition: norE( (global void) -0:36 Function Parameters: -0:36 Sequence -0:36 Function Call: norB( (global void) -0:37 Function Definition: norF( (global void) -0:37 Function Parameters: -0:37 Sequence -0:37 Function Call: norB( (global void) -0:38 Function Definition: norG( (global void) -0:38 Function Parameters: -0:38 Sequence -0:38 Function Call: norE( (global void) -0:39 Function Definition: norH( (global void) -0:39 Function Parameters: -0:39 Sequence -0:39 Function Call: norE( (global void) -0:40 Function Definition: norI( (global void) -0:40 Function Parameters: -0:40 Sequence -0:40 Function Call: norE( (global void) -0:44 Function Definition: norcA( (global void) -0:44 Function Parameters: -0:45 Function Definition: norcB( (global void) -0:45 Function Parameters: -0:45 Sequence -0:45 Function Call: norcA( (global void) -0:46 Function Definition: norcC( (global void) -0:46 Function Parameters: -0:46 Sequence -0:46 Function Call: norcB( (global void) -0:47 Function Definition: norcD( (global void) -0:47 Function Parameters: -0:47 Sequence -0:47 Function Call: norcC( (global void) -0:47 Function Call: norcB( (global void) -0:48 Function Definition: norcE( (global void) -0:48 Function Parameters: -0:48 Sequence -0:48 Function Call: norcD( (global void) -0:9 Function Definition: cbar(i1; (global float) -0:9 Function Parameters: -0:9 '' (in int) -0:11 Sequence -0:11 Function Call: cfoo(f1; (global void) -0:11 Constant: -0:11 4.200000 -0:13 Branch: Return with expression -0:13 Constant: -0:13 3.200000 -0:20 Function Definition: CB( (global void) -0:20 Function Parameters: -0:20 Sequence -0:20 Function Call: CC( (global void) -0:21 Function Definition: CD( (global void) -0:21 Function Parameters: -0:21 Sequence -0:21 Function Call: CA( (global void) -0:27 Function Definition: CBT( (global void) -0:27 Function Parameters: -0:27 Sequence -0:27 Function Call: CCT( (global void) -0:27 Function Call: CCT( (global void) -0:27 Function Call: CCT( (global void) -0:28 Function Definition: CDT( (global void) -0:28 Function Parameters: -0:28 Sequence -0:28 Function Call: CAT( (global void) 0:? Linker Objects diff --git a/Test/baseResults/specExamples.frag.out b/Test/baseResults/specExamples.frag.out index 711c529d..a66144a7 100644 --- a/Test/baseResults/specExamples.frag.out +++ b/Test/baseResults/specExamples.frag.out @@ -399,17 +399,6 @@ ERROR: node is still EOpNull! 0:26 'fd' (global double) 0:26 Constant: 0:26 2.000000 -0:127 Function Definition: foo(f1[5]; (global 5-element array of float) -0:127 Function Parameters: -0:127 '' (in 5-element array of float) -0:129 Sequence -0:129 Branch: Return with expression -0:129 Constant: -0:129 3.400000 -0:129 4.200000 -0:129 5.000000 -0:129 5.200000 -0:129 1.100000 0:137 Function Definition: main( (global void) 0:137 Function Parameters: 0:140 Sequence diff --git a/Test/hlsl.deadFunctionMissingBody.vert b/Test/hlsl.deadFunctionMissingBody.vert new file mode 100644 index 00000000..a5f965ab --- /dev/null +++ b/Test/hlsl.deadFunctionMissingBody.vert @@ -0,0 +1,8 @@ +float4 main(): SV_Target0 { return 0; } +struct Surface { float3 albedo; }; +Surface surfaceShader(float fade); +Surface surfaceShaderExec() +{ + float fade = 0; + return surfaceShader(0); +} diff --git a/Test/runtests b/Test/runtests index fe16f37b..a17848b7 100755 --- a/Test/runtests +++ b/Test/runtests @@ -45,13 +45,20 @@ $EXE -i -C *.vert *.geom *.frag *.tes* *.comp > singleThread.out $EXE -i -C *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out diff singleThread.out multiThread.out || HASERROR=1 - # # entry point renaming tests # -$EXE -i -H -V -D -e main_in_spv --source-entrypoint main hlsl.entry.rename.frag > $TARGETDIR/hlsl.entry.rename.frag.out +echo Running entry-point renaming tests +$EXE -i -H -V -D -e main_in_spv --ku --source-entrypoint main 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 +$EXE -D -e main -H 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 echo Tests Succeeded. diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index d1b31239..2f391b69 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1687" +#define GLSLANG_REVISION "Overload400-PrecQual.1688" #define GLSLANG_DATE "09-Dec-2016" diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 59c9a01c..e50b12f2 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1696,7 +1696,7 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) intermediate[stage]->merge(*infoSink, *(*it)->intermediate); } - intermediate[stage]->finalCheck(*infoSink); + intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0); if (messages & EShMsgAST) intermediate[stage]->output(*infoSink, true); diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 820b53a5..3834fde3 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -377,7 +377,7 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // // Also, lock in defaults of things not set, including array sizes. // -void TIntermediate::finalCheck(TInfoSink& infoSink) +void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) { if (getTreeRoot() == nullptr) return; @@ -394,7 +394,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink) // recursion and missing body checking checkCallGraphCycles(infoSink); - checkCallGraphBodies(infoSink); + checkCallGraphBodies(infoSink, keepUncalled); // overlap/alias/missing I/O, etc. inOutLocationCheck(infoSink); @@ -583,23 +583,27 @@ void TIntermediate::checkCallGraphCycles(TInfoSink& infoSink) // // See which functions are reachable from the entry point and which have bodies. // Reachable ones with missing bodies are errors. +// Unreachable bodies are dead code. // -void TIntermediate::checkCallGraphBodies(TInfoSink& infoSink) +void TIntermediate::checkCallGraphBodies(TInfoSink& infoSink, bool keepUncalled) { // Clear fields we'll use for this. for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { call->visited = false; call->calleeBodyPosition = -1; } - + // The top level of the AST includes function definitions (bodies). // Compare these to function calls in the call graph. // We'll end up knowing which have bodies, and if so, // how to map the call-graph node to the location in the AST. TIntermSequence &functionSequence = getTreeRoot()->getAsAggregate()->getSequence(); + std::vector reachable(functionSequence.size(), true); // so that non-functions are reachable for (int f = 0; f < (int)functionSequence.size(); ++f) { glslang::TIntermAggregate* node = functionSequence[f]->getAsAggregate(); if (node && (node->getOp() == glslang::EOpFunction)) { + if (node->getName().compare(getEntryPointMangledName().c_str()) != 0) + reachable[f] = false; // so that function bodies are unreachable, until proven otherwise for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { if (call->callee == node->getName()) call->calleeBodyPosition = f; @@ -638,9 +642,21 @@ void TIntermediate::checkCallGraphBodies(TInfoSink& infoSink) if (call->calleeBodyPosition == -1) { error(infoSink, "No function definition (body) found: "); infoSink.info << " " << call->callee << "\n"; - } + } else + reachable[call->calleeBodyPosition] = true; } } + + // Bodies in the AST not reached by the call graph are dead; + // clear them out, since they can't be reached and also can't + // be translated further due to possibility of being ill defined. + if (! keepUncalled) { + for (int f = 0; f < (int)functionSequence.size(); ++f) { + if (! reachable[f]) + functionSequence[f] = nullptr; + } + functionSequence.erase(std::remove(functionSequence.begin(), functionSequence.end(), nullptr), functionSequence.end()); + } } // diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index a16383ff..6f6db92d 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -364,7 +364,7 @@ public: void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee); void merge(TInfoSink&, TIntermediate&); - void finalCheck(TInfoSink&); + void finalCheck(TInfoSink&, bool keepUncalled); void addIoAccessed(const TString& name) { ioAccessed.insert(name); } bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); } @@ -396,7 +396,7 @@ protected: void mergeImplicitArraySizes(TType&, const TType&); void mergeErrorCheck(TInfoSink&, const TIntermSymbol&, const TIntermSymbol&, bool crossStage); void checkCallGraphCycles(TInfoSink&); - void checkCallGraphBodies(TInfoSink&); + void checkCallGraphBodies(TInfoSink&, bool keepUncalled); void inOutLocationCheck(TInfoSink&); TIntermSequence& findLinkerObjects() const; bool userOutputUsed() const; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 323a4d75..afdc7d1e 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -146,6 +146,7 @@ enum EShMessages { 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 }; // diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp index 7d27b3b1..db2b81d1 100644 --- a/gtests/TestFixture.cpp +++ b/gtests/TestFixture.cpp @@ -84,9 +84,11 @@ EShMessages DeriveOptions(Source source, Semantics semantics, Target target) break; case Target::Spv: result = static_cast(result | EShMsgSpvRules); + result = static_cast(result | EShMsgKeepUncalled); break; case Target::BothASTAndSpv: result = static_cast(result | EShMsgSpvRules | EShMsgAST); + result = static_cast(result | EShMsgKeepUncalled); break; }; From 297754cfe87b8e543f658608c641fea85db05fb3 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 9 Dec 2016 11:13:23 -0700 Subject: [PATCH 122/130] Remapper: remove debug info for IDs stripped in other passes If some DCE is performed such as removing dead functions, then even if we are NOT stripping debug info, we still must remove the debug opcodes that refer to the now-dead IDs. Also, this adds a small change to perform no ID remapping if none is requested, making spirv-remap properly be a no-op if no options are given. --- SPIRV/SPVRemapper.cpp | 68 +++++++--- SPIRV/SPVRemapper.h | 4 +- Test/baseResults/remap.basic.dcefunc.frag.out | 29 ++--- Test/baseResults/remap.basic.none.frag.out | 24 ++-- Test/baseResults/remap.basic.strip.frag.out | 20 +-- .../remap.hlsl.sample.basic.none.frag.out | 22 ++-- .../remap.hlsl.sample.basic.strip.frag.out | 10 +- .../remap.hlsl.templatetypes.none.frag.out | 12 +- .../remap.similar_1a.none.frag.out | 116 ++++++++--------- .../remap.similar_1b.none.frag.out | 120 +++++++++--------- Test/baseResults/remap.switch.none.frag.out | 40 +++--- 11 files changed, 246 insertions(+), 219 deletions(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 5c551fb8..f30963b1 100755 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -327,12 +327,10 @@ namespace spv { bound(maxBound); // reset header ID bound to as big as it now needs to be } + // Mark debug instructions for stripping void spirvbin_t::stripDebug() { - if ((options & STRIP) == 0) - return; - - // build local Id and name maps + // Strip instructions in the stripOp set: debug info. process( [&](spv::Op opCode, unsigned start) { // remember opcodes we want to strip later @@ -343,6 +341,32 @@ namespace spv { op_fn_nop); } + // Mark instructions that refer to now-removed IDs for stripping + void spirvbin_t::stripDeadRefs() + { + process( + [&](spv::Op opCode, unsigned start) { + // strip opcodes pointing to removed data + switch (opCode) { + case spv::OpName: + case spv::OpMemberName: + case spv::OpDecorate: + case spv::OpMemberDecorate: + if (idPosR.find(asId(start+1)) == idPosR.end()) + stripInst(start); + break; + default: + break; // leave it alone + } + + return true; + }, + op_fn_nop); + + strip(); + } + + // Update local maps of ID, type, etc positions void spirvbin_t::buildLocalMaps() { msg(2, 2, std::string("build local maps: ")); @@ -351,7 +375,6 @@ namespace spv { idMapL.clear(); // preserve nameMap, so we don't clear that. fnPos.clear(); - fnPosDCE.clear(); fnCalls.clear(); typeConstPos.clear(); idPosR.clear(); @@ -366,10 +389,6 @@ namespace spv { // build local Id and name maps process( [&](spv::Op opCode, unsigned start) { - // remember opcodes we want to strip later - if ((options & STRIP) && isStripOp(opCode)) - stripInst(start); - unsigned word = start+1; spv::Id typeId = spv::NoResult; @@ -957,7 +976,6 @@ namespace spv { if (call_it == fnCalls.end() || call_it->second == 0) { changed = true; stripRange.push_back(fn->second); - fnPosDCE.insert(*fn); // decrease counts of called functions process( @@ -1011,11 +1029,15 @@ namespace spv { // Remove single-use function variables + associated decorations and names process( [&](spv::Op opCode, unsigned start) { - if ((opCode == spv::OpVariable && varUseCount[asId(start+2)] == 1) || - (opCode == spv::OpDecorate && varUseCount[asId(start+1)] == 1) || - (opCode == spv::OpName && varUseCount[asId(start+1)] == 1)) { - stripInst(start); - } + spv::Id id = spv::NoResult; + if (opCode == spv::OpVariable) + id = asId(start+2); + if (opCode == spv::OpDecorate || opCode == spv::OpName) + id = asId(start+1); + + if (id != spv::NoResult && varUseCount[id] == 1) + stripInst(start); + return true; }, op_fn_nop); @@ -1276,25 +1298,31 @@ namespace spv { // Set up opcode tables from SpvDoc spv::Parameterize(); - validate(); // validate header - buildLocalMaps(); + validate(); // validate header + buildLocalMaps(); // build ID maps msg(3, 4, std::string("ID bound: ") + std::to_string(bound())); + if (options & STRIP) stripDebug(); strip(); // strip out data we decided to eliminate if (options & OPT_LOADSTORE) optLoadStore(); if (options & OPT_FWD_LS) forwardLoadStores(); if (options & DCE_FUNCS) dceFuncs(); if (options & DCE_VARS) dceVars(); if (options & DCE_TYPES) dceTypes(); - strip(); // strip out data we decided to eliminate + + strip(); // strip out data we decided to eliminate + stripDeadRefs(); // remove references to things we DCEed + // after the last strip, we must clean any debug info referring to now-deleted data if (options & MAP_TYPES) mapTypeConst(); if (options & MAP_NAMES) mapNames(); if (options & MAP_FUNCS) mapFnBodies(); - mapRemainder(); // map any unmapped IDs - applyMap(); // Now remap each shader to the new IDs we've come up with + if (options & MAP_ALL) { + mapRemainder(); // map any unmapped IDs + applyMap(); // Now remap each shader to the new IDs we've come up with + } } // remap from a memory image diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index b3c686aa..77c96582 100755 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -239,7 +239,8 @@ private: void applyMap(); // remap per local name map void mapRemainder(); // map any IDs we haven't touched yet - void stripDebug(); // strip debug info + void stripDebug(); // strip all debug info + void stripDeadRefs(); // strips debug info for now-dead references after DCE void strip(); // remove debug symbols std::vector spv; // SPIR words @@ -264,7 +265,6 @@ private: // Function start and end. use unordered_map because we'll have // many fewer functions than IDs. std::unordered_map fnPos; - std::unordered_map fnPosDCE; // deleted functions // Which functions are called, anywhere in the module, with a call count std::unordered_map fnCalls; diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out index 99b4d551..c28d90a3 100644 --- a/Test/baseResults/remap.basic.dcefunc.frag.out +++ b/Test/baseResults/remap.basic.dcefunc.frag.out @@ -3,34 +3,33 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 19 +// Id's are bound by 22 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 14 16 + EntryPoint Fragment 4 "main" 17 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" - Name 9 "dead_fn(" - Name 14 "outf4" - Name 16 "inf" + Name 17 "outf4" + Name 19 "inf" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeFunction 7(fvec3) - 10: 6(float) Constant 0 - 11: 7(fvec3) ConstantComposite 10 10 10 - 12: TypeVector 6(float) 4 - 13: TypePointer Output 12(fvec4) - 14(outf4): 13(ptr) Variable Output - 15: TypePointer Input 6(float) - 16(inf): 15(ptr) Variable Input + 11: 6(float) Constant 0 + 12: 7(fvec3) ConstantComposite 11 11 11 + 15: TypeVector 6(float) 4 + 16: TypePointer Output 15(fvec4) + 17(outf4): 16(ptr) Variable Output + 18: TypePointer Input 6(float) + 19(inf): 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 17: 6(float) Load 16(inf) - 18: 12(fvec4) CompositeConstruct 17 17 17 17 - Store 14(outf4) 18 + 20: 6(float) Load 19(inf) + 21: 15(fvec4) CompositeConstruct 20 20 20 20 + Store 17(outf4) 21 Return FunctionEnd diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out index 39e56b2e..44f5747b 100644 --- a/Test/baseResults/remap.basic.none.frag.out +++ b/Test/baseResults/remap.basic.none.frag.out @@ -3,18 +3,18 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 20 +// Id's are bound by 22 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 15 17 + EntryPoint Fragment 4 "main" 17 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "dead_fn(" - Name 15 "outf4" - Name 17 "inf" + Name 17 "outf4" + Name 19 "inf" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -22,16 +22,16 @@ Warning, version 450 is not yet complete; most version-specific features are pre 8: TypeFunction 7(fvec3) 11: 6(float) Constant 0 12: 7(fvec3) ConstantComposite 11 11 11 - 13: TypeVector 6(float) 4 - 14: TypePointer Output 13(fvec4) - 15(outf4): 14(ptr) Variable Output - 16: TypePointer Input 6(float) - 17(inf): 16(ptr) Variable Input + 15: TypeVector 6(float) 4 + 16: TypePointer Output 15(fvec4) + 17(outf4): 16(ptr) Variable Output + 18: TypePointer Input 6(float) + 19(inf): 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 18: 6(float) Load 17(inf) - 19: 13(fvec4) CompositeConstruct 18 18 18 18 - Store 15(outf4) 19 + 20: 6(float) Load 19(inf) + 21: 15(fvec4) CompositeConstruct 20 20 20 20 + Store 17(outf4) 21 Return FunctionEnd 9(dead_fn(): 7(fvec3) Function None 8 diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out index 27c0874b..ab1a003a 100644 --- a/Test/baseResults/remap.basic.strip.frag.out +++ b/Test/baseResults/remap.basic.strip.frag.out @@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 20 +// Id's are bound by 22 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 15 17 + EntryPoint Fragment 4 "main" 17 19 ExecutionMode 4 OriginUpperLeft 2: TypeVoid 3: TypeFunction 2 @@ -17,16 +17,16 @@ Warning, version 450 is not yet complete; most version-specific features are pre 8: TypeFunction 7(fvec3) 11: 6(float) Constant 0 12: 7(fvec3) ConstantComposite 11 11 11 - 13: TypeVector 6(float) 4 - 14: TypePointer Output 13(fvec4) - 15: 14(ptr) Variable Output - 16: TypePointer Input 6(float) - 17: 16(ptr) Variable Input + 15: TypeVector 6(float) 4 + 16: TypePointer Output 15(fvec4) + 17: 16(ptr) Variable Output + 18: TypePointer Input 6(float) + 19: 18(ptr) Variable Input 4: 2 Function None 3 5: Label - 18: 6(float) Load 17 - 19: 13(fvec4) CompositeConstruct 18 18 18 18 - Store 15 19 + 20: 6(float) Load 19 + 21: 15(fvec4) CompositeConstruct 20 20 20 20 + Store 17 21 Return FunctionEnd 9: 7(fvec3) Function None 8 diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out index 28c384ce..51ad1a8b 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out @@ -3,7 +3,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 190 +// Id's are bound by 191 Capability Shader Capability Sampled1D @@ -57,9 +57,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Name 173 "psout" Name 180 "Color" Name 184 "Depth" - Name 187 "g_sSamp2d" - Name 188 "g_sSamp2D_b" - Name 189 "g_tTex1df4a" + Name 188 "g_sSamp2d" + Name 189 "g_sSamp2D_b" + Name 190 "g_tTex1df4a" Decorate 41(g_tTex1df4) DescriptorSet 0 Decorate 41(g_tTex1df4) Binding 0 Decorate 45(g_sSamp) DescriptorSet 0 @@ -77,10 +77,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Decorate 165(g_tTexcdu4) DescriptorSet 0 Decorate 180(Color) Location 0 Decorate 184(Depth) BuiltIn FragDepth - Decorate 187(g_sSamp2d) DescriptorSet 0 - Decorate 188(g_sSamp2D_b) DescriptorSet 0 - Decorate 189(g_tTex1df4a) DescriptorSet 0 - Decorate 189(g_tTex1df4a) Binding 1 + Decorate 188(g_sSamp2d) DescriptorSet 0 + Decorate 189(g_sSamp2D_b) DescriptorSet 0 + Decorate 190(g_tTex1df4a) DescriptorSet 0 + Decorate 190(g_tTex1df4a) Binding 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -184,9 +184,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented 180(Color): 179(ptr) Variable Output 183: TypePointer Output 35(float) 184(Depth): 183(ptr) Variable Output - 187(g_sSamp2d): 44(ptr) Variable UniformConstant -188(g_sSamp2D_b): 44(ptr) Variable UniformConstant -189(g_tTex1df4a): 40(ptr) Variable UniformConstant + 188(g_sSamp2d): 44(ptr) Variable UniformConstant +189(g_sSamp2D_b): 44(ptr) Variable UniformConstant +190(g_tTex1df4a): 40(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(mtest): 8(ptr) Variable Function diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out index 10a8938d..f95d7eff 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out @@ -3,7 +3,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 190 +// Id's are bound by 191 Capability Shader Capability Sampled1D @@ -28,10 +28,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Decorate 165 DescriptorSet 0 Decorate 180 Location 0 Decorate 184 BuiltIn FragDepth - Decorate 187 DescriptorSet 0 Decorate 188 DescriptorSet 0 Decorate 189 DescriptorSet 0 - Decorate 189 Binding 1 + Decorate 190 DescriptorSet 0 + Decorate 190 Binding 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -135,9 +135,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented 180: 179(ptr) Variable Output 183: TypePointer Output 35(float) 184: 183(ptr) Variable Output - 187: 44(ptr) Variable UniformConstant 188: 44(ptr) Variable UniformConstant - 189: 40(ptr) Variable UniformConstant + 189: 44(ptr) Variable UniformConstant + 190: 40(ptr) Variable UniformConstant 4: 2 Function None 3 5: Label 9: 8(ptr) Variable Function diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out index c3fab1a2..027f0207 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out @@ -1,13 +1,13 @@ remap.hlsl.templatetypes.none.frag // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 149 +// Id's are bound by 150 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 146 148 + EntryPoint Fragment 4 "main" 146 149 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "r00" @@ -39,9 +39,9 @@ remap.hlsl.templatetypes.none.frag Name 136 "r65" Name 141 "r66" Name 146 "@entryPointOutput" - Name 148 "input" + Name 149 "input" Decorate 146(@entryPointOutput) Location 0 - Decorate 148(input) Location 0 + Decorate 149(input) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -157,8 +157,8 @@ remap.hlsl.templatetypes.none.frag 144: 139 ConstantComposite 72 126 142 143 145: TypePointer Output 6(float) 146(@entryPointOutput): 145(ptr) Variable Output - 147: TypePointer Input 7(fvec4) - 148(input): 147(ptr) Variable Input + 148: TypePointer Input 7(fvec4) + 149(input): 148(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(r00): 8(ptr) Variable Function diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out index ad1273ae..910ef424 100644 --- a/Test/baseResults/remap.similar_1a.none.frag.out +++ b/Test/baseResults/remap.similar_1a.none.frag.out @@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 82 +// Id's are bound by 86 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 50 69 71 + EntryPoint Fragment 4 "main" 53 73 75 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" @@ -18,13 +18,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre Name 13 "bound" Name 17 "r" Name 19 "x" - Name 42 "param" - Name 50 "ini4" - Name 69 "outf4" - Name 71 "inf" - Name 74 "param" + Name 44 "param" + Name 53 "ini4" + Name 73 "outf4" + Name 75 "inf" Name 78 "param" - Decorate 50(ini4) Flat + Name 82 "param" + Decorate 53(ini4) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -37,35 +37,35 @@ Warning, version 450 is not yet complete; most version-specific features are pre 28: TypeBool 30: 8(float) Constant 1056964608 34: 6(int) Constant 1 - 38: 6(int) Constant 2 - 48: TypeVector 6(int) 4 - 49: TypePointer Input 48(ivec4) - 50(ini4): 49(ptr) Variable Input - 51: TypeInt 32 0 - 52: 51(int) Constant 1 - 53: TypePointer Input 6(int) - 56: 51(int) Constant 2 - 61: 51(int) Constant 0 - 67: TypeVector 8(float) 4 - 68: TypePointer Output 67(fvec4) - 69(outf4): 68(ptr) Variable Output - 70: TypePointer Input 8(float) - 71(inf): 70(ptr) Variable Input + 40: 6(int) Constant 2 + 51: TypeVector 6(int) 4 + 52: TypePointer Input 51(ivec4) + 53(ini4): 52(ptr) Variable Input + 54: TypeInt 32 0 + 55: 54(int) Constant 1 + 56: TypePointer Input 6(int) + 59: 54(int) Constant 2 + 64: 54(int) Constant 0 + 71: TypeVector 8(float) 4 + 72: TypePointer Output 71(fvec4) + 73(outf4): 72(ptr) Variable Output + 74: TypePointer Input 8(float) + 75(inf): 74(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 74(param): 7(ptr) Variable Function 78(param): 7(ptr) Variable Function - 72: 8(float) Load 71(inf) - 73: 6(int) ConvertFToS 72 - Store 74(param) 73 - 75: 8(float) FunctionCall 11(Test1(i1;) 74(param) - 76: 8(float) Load 71(inf) + 82(param): 7(ptr) Variable Function + 76: 8(float) Load 75(inf) 77: 6(int) ConvertFToS 76 Store 78(param) 77 - 79: 8(float) FunctionCall 14(Test2(i1;) 78(param) - 80: 8(float) FAdd 75 79 - 81: 67(fvec4) CompositeConstruct 80 80 80 80 - Store 69(outf4) 81 + 79: 8(float) FunctionCall 11(Test1(i1;) 78(param) + 80: 8(float) Load 75(inf) + 81: 6(int) ConvertFToS 80 + Store 82(param) 81 + 83: 8(float) FunctionCall 14(Test2(i1;) 82(param) + 84: 8(float) FAdd 79 83 + 85: 71(fvec4) CompositeConstruct 84 84 84 84 + Store 73(outf4) 85 Return FunctionEnd 11(Test1(i1;): 8(float) Function None 9 @@ -101,31 +101,31 @@ Warning, version 450 is not yet complete; most version-specific features are pre 14(Test2(i1;): 8(float) Function None 9 13(bound): 7(ptr) FunctionParameter 15: Label - 42(param): 7(ptr) Variable Function - 37: 6(int) Load 13(bound) - 39: 28(bool) SGreaterThan 37 38 - SelectionMerge 41 None - BranchConditional 39 40 45 - 40: Label - 43: 6(int) Load 13(bound) - Store 42(param) 43 - 44: 8(float) FunctionCall 11(Test1(i1;) 42(param) - ReturnValue 44 - 45: Label - 46: 6(int) Load 13(bound) - 47: 6(int) IMul 46 38 - 54: 53(ptr) AccessChain 50(ini4) 52 - 55: 6(int) Load 54 - 57: 53(ptr) AccessChain 50(ini4) 56 + 44(param): 7(ptr) Variable Function + 39: 6(int) Load 13(bound) + 41: 28(bool) SGreaterThan 39 40 + SelectionMerge 43 None + BranchConditional 41 42 48 + 42: Label + 45: 6(int) Load 13(bound) + Store 44(param) 45 + 46: 8(float) FunctionCall 11(Test1(i1;) 44(param) + ReturnValue 46 + 48: Label + 49: 6(int) Load 13(bound) + 50: 6(int) IMul 49 40 + 57: 56(ptr) AccessChain 53(ini4) 55 58: 6(int) Load 57 - 59: 6(int) IMul 55 58 - 60: 6(int) IAdd 47 59 - 62: 53(ptr) AccessChain 50(ini4) 61 - 63: 6(int) Load 62 - 64: 6(int) IAdd 60 63 - 65: 8(float) ConvertSToF 64 - ReturnValue 65 - 41: Label - 66: 8(float) Undef - ReturnValue 66 + 60: 56(ptr) AccessChain 53(ini4) 59 + 61: 6(int) Load 60 + 62: 6(int) IMul 58 61 + 63: 6(int) IAdd 50 62 + 65: 56(ptr) AccessChain 53(ini4) 64 + 66: 6(int) Load 65 + 67: 6(int) IAdd 63 66 + 68: 8(float) ConvertSToF 67 + ReturnValue 68 + 43: Label + 70: 8(float) Undef + ReturnValue 70 FunctionEnd diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out index b86fd4b6..ce79e00b 100644 --- a/Test/baseResults/remap.similar_1b.none.frag.out +++ b/Test/baseResults/remap.similar_1b.none.frag.out @@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 87 +// Id's are bound by 91 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 55 74 76 + EntryPoint Fragment 4 "main" 58 78 80 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" @@ -18,13 +18,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre Name 13 "bound" Name 17 "r" Name 19 "x" - Name 47 "param" - Name 55 "ini4" - Name 74 "outf4" - Name 76 "inf" - Name 79 "param" + Name 49 "param" + Name 58 "ini4" + Name 78 "outf4" + Name 80 "inf" Name 83 "param" - Decorate 55(ini4) Flat + Name 87 "param" + Decorate 58(ini4) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -38,36 +38,36 @@ Warning, version 450 is not yet complete; most version-specific features are pre 30: 8(float) Constant 1056964608 34: 6(int) Constant 1 36: 8(float) Constant 1045220557 - 41: 6(int) Constant 2 - 51: 6(int) Constant 4 - 53: TypeVector 6(int) 4 - 54: TypePointer Input 53(ivec4) - 55(ini4): 54(ptr) Variable Input - 56: TypeInt 32 0 - 57: 56(int) Constant 1 - 58: TypePointer Input 6(int) - 61: 56(int) Constant 2 - 66: 56(int) Constant 0 - 72: TypeVector 8(float) 4 - 73: TypePointer Output 72(fvec4) - 74(outf4): 73(ptr) Variable Output - 75: TypePointer Input 8(float) - 76(inf): 75(ptr) Variable Input + 43: 6(int) Constant 2 + 54: 6(int) Constant 4 + 56: TypeVector 6(int) 4 + 57: TypePointer Input 56(ivec4) + 58(ini4): 57(ptr) Variable Input + 59: TypeInt 32 0 + 60: 59(int) Constant 1 + 61: TypePointer Input 6(int) + 64: 59(int) Constant 2 + 69: 59(int) Constant 0 + 76: TypeVector 8(float) 4 + 77: TypePointer Output 76(fvec4) + 78(outf4): 77(ptr) Variable Output + 79: TypePointer Input 8(float) + 80(inf): 79(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 79(param): 7(ptr) Variable Function 83(param): 7(ptr) Variable Function - 77: 8(float) Load 76(inf) - 78: 6(int) ConvertFToS 77 - Store 79(param) 78 - 80: 8(float) FunctionCall 11(Test1(i1;) 79(param) - 81: 8(float) Load 76(inf) + 87(param): 7(ptr) Variable Function + 81: 8(float) Load 80(inf) 82: 6(int) ConvertFToS 81 Store 83(param) 82 - 84: 8(float) FunctionCall 14(Test2(i1;) 83(param) - 85: 8(float) FAdd 80 84 - 86: 72(fvec4) CompositeConstruct 85 85 85 85 - Store 74(outf4) 86 + 84: 8(float) FunctionCall 11(Test1(i1;) 83(param) + 85: 8(float) Load 80(inf) + 86: 6(int) ConvertFToS 85 + Store 87(param) 86 + 88: 8(float) FunctionCall 14(Test2(i1;) 87(param) + 89: 8(float) FAdd 84 88 + 90: 76(fvec4) CompositeConstruct 89 89 89 89 + Store 78(outf4) 90 Return FunctionEnd 11(Test1(i1;): 8(float) Function None 9 @@ -106,32 +106,32 @@ Warning, version 450 is not yet complete; most version-specific features are pre 14(Test2(i1;): 8(float) Function None 9 13(bound): 7(ptr) FunctionParameter 15: Label - 47(param): 7(ptr) Variable Function - 40: 6(int) Load 13(bound) - 42: 28(bool) SGreaterThan 40 41 - SelectionMerge 44 None - BranchConditional 42 43 49 - 43: Label - 45: 6(int) Load 13(bound) - 46: 6(int) IMul 45 41 - Store 47(param) 46 - 48: 8(float) FunctionCall 11(Test1(i1;) 47(param) - ReturnValue 48 - 49: Label - 50: 6(int) Load 13(bound) - 52: 6(int) IMul 50 51 - 59: 58(ptr) AccessChain 55(ini4) 57 - 60: 6(int) Load 59 - 62: 58(ptr) AccessChain 55(ini4) 61 + 49(param): 7(ptr) Variable Function + 42: 6(int) Load 13(bound) + 44: 28(bool) SGreaterThan 42 43 + SelectionMerge 46 None + BranchConditional 44 45 52 + 45: Label + 47: 6(int) Load 13(bound) + 48: 6(int) IMul 47 43 + Store 49(param) 48 + 50: 8(float) FunctionCall 11(Test1(i1;) 49(param) + ReturnValue 50 + 52: Label + 53: 6(int) Load 13(bound) + 55: 6(int) IMul 53 54 + 62: 61(ptr) AccessChain 58(ini4) 60 63: 6(int) Load 62 - 64: 6(int) IMul 60 63 - 65: 6(int) IAdd 52 64 - 67: 58(ptr) AccessChain 55(ini4) 66 - 68: 6(int) Load 67 - 69: 6(int) IAdd 65 68 - 70: 8(float) ConvertSToF 69 - ReturnValue 70 - 44: Label - 71: 8(float) Undef - ReturnValue 71 + 65: 61(ptr) AccessChain 58(ini4) 64 + 66: 6(int) Load 65 + 67: 6(int) IMul 63 66 + 68: 6(int) IAdd 55 67 + 70: 61(ptr) AccessChain 58(ini4) 69 + 71: 6(int) Load 70 + 72: 6(int) IAdd 68 71 + 73: 8(float) ConvertSToF 72 + ReturnValue 73 + 46: Label + 75: 8(float) Undef + ReturnValue 75 FunctionEnd diff --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out index 5d373ccf..68d075b2 100644 --- a/Test/baseResults/remap.switch.none.frag.out +++ b/Test/baseResults/remap.switch.none.frag.out @@ -5,7 +5,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 44 +// Id's are bound by 48 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -20,8 +20,8 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to Decorate 23(FragColor) RelaxedPrecision Decorate 23(FragColor) Location 0 Decorate 29 RelaxedPrecision - Decorate 35 RelaxedPrecision - Decorate 41 RelaxedPrecision + Decorate 36 RelaxedPrecision + Decorate 43 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -36,12 +36,12 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to 23(FragColor): 22(ptr) Variable Output 24: 10(int) Constant 0 27: 6(float) Constant 0 - 30: 10(int) Constant 1 - 33: 6(float) Constant 1065353216 - 36: 10(int) Constant 2 - 39: 6(float) Constant 1073741824 - 42: 6(float) Constant 3212836864 - 43: 7(fvec4) ConstantComposite 42 42 42 42 + 31: 10(int) Constant 1 + 34: 6(float) Constant 1065353216 + 38: 10(int) Constant 2 + 41: 6(float) Constant 1073741824 + 45: 6(float) Constant 3212836864 + 46: 7(fvec4) ConstantComposite 45 45 45 45 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9(in0) 11 @@ -53,7 +53,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to case 1: 18 case 2: 19 20: Label - Store 23(FragColor) 43 + Store 23(FragColor) 46 Branch 21 17: Label 25: 12(ptr) AccessChain 9(in0) 24 @@ -63,18 +63,18 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to Store 23(FragColor) 29 Branch 21 18: Label - 31: 12(ptr) AccessChain 9(in0) 30 - 32: 6(float) Load 31 - 34: 6(float) FAdd 32 33 - 35: 7(fvec4) CompositeConstruct 34 34 34 34 - Store 23(FragColor) 35 + 32: 12(ptr) AccessChain 9(in0) 31 + 33: 6(float) Load 32 + 35: 6(float) FAdd 33 34 + 36: 7(fvec4) CompositeConstruct 35 35 35 35 + Store 23(FragColor) 36 Branch 21 19: Label - 37: 12(ptr) AccessChain 9(in0) 36 - 38: 6(float) Load 37 - 40: 6(float) FAdd 38 39 - 41: 7(fvec4) CompositeConstruct 40 40 40 40 - Store 23(FragColor) 41 + 39: 12(ptr) AccessChain 9(in0) 38 + 40: 6(float) Load 39 + 42: 6(float) FAdd 40 41 + 43: 7(fvec4) CompositeConstruct 42 42 42 42 + Store 23(FragColor) 43 Branch 21 21: Label Return From 20f01e7fd04a5fa2de7b2f185b3cdc2771db506f Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 12 Dec 2016 11:41:43 -0700 Subject: [PATCH 123/130] Fix last commit; EOptionKeepUncalled incorrect enum bug. --- StandAlone/StandAlone.cpp | 2 +- glslang/Include/revision.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 84c80f58..d40673c1 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -83,7 +83,7 @@ enum TOptions { EOptionAutoMapBindings = (1 << 19), EOptionFlattenUniformArrays = (1 << 20), EOptionNoStorageFormat = (1 << 21), - EOptionKeepUncalled = (1 << 21), + EOptionKeepUncalled = (1 << 22), }; // diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 2f391b69..5fda0eb4 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1688" -#define GLSLANG_DATE "09-Dec-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1689" +#define GLSLANG_DATE "12-Dec-2016" From 3ec327c5a500fcfb8cc44f8477f29a18f56e6a19 Mon Sep 17 00:00:00 2001 From: Jamie Madill Date: Tue, 13 Dec 2016 17:30:58 -0500 Subject: [PATCH 124/130] Fix size_t to int cast warnings. Several instances in Visual Studio 2015: warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data --- glslang/MachineIndependent/Intermediate.cpp | 2 +- hlsl/hlslParseHelper.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 9b6d4c62..999fd5d8 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2241,7 +2241,7 @@ bool TIntermediate::promoteAggregate(TIntermAggregate& node) { TOperator op = node.getOp(); TIntermSequence& args = node.getSequence(); - const int numArgs = args.size(); + const int numArgs = static_cast(args.size()); // Presently, only hlsl does intrinsic promotions. if (getSource() != EShSourceHlsl) diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 54cd10fc..3a193dca 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -957,13 +957,13 @@ int HlslParseContext::addFlattenedMember(const TSourceLoc& loc, if (flattenData.nextBinding != TQualifier::layoutBindingEnd) memberVariable->getWritableType().getQualifier().layoutBinding = flattenData.nextBinding++; - flattenData.offsets.push_back(flattenData.members.size()); + flattenData.offsets.push_back(static_cast(flattenData.members.size())); flattenData.members.push_back(memberVariable); if (track) trackLinkageDeferred(*memberVariable); - return flattenData.offsets.size()-1; // location of the member reference + return static_cast(flattenData.offsets.size())-1; // location of the member reference } else { // Further recursion required return flatten(loc, variable, type, flattenData, memberName); @@ -985,7 +985,7 @@ int HlslParseContext::flattenStruct(const TSourceLoc& loc, const TVariable& vari auto members = *type.getStruct(); // Reserve space for this tree level. - int start = flattenData.offsets.size(); + int start = static_cast(flattenData.offsets.size()); int pos = start; flattenData.offsets.resize(int(pos + members.size()), -1); @@ -1022,7 +1022,7 @@ int HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& varia name = variable.getName(); // Reserve space for this tree level. - int start = flattenData.offsets.size(); + int start = static_cast(flattenData.offsets.size()); int pos = start; flattenData.offsets.resize(int(pos + size), -1); @@ -4977,7 +4977,7 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co return addConstructor(loc, initList, arrayType); } else if (type.isStruct()) { // lengthen list to be long enough - lengthenList(loc, initList->getSequence(), type.getStruct()->size()); + lengthenList(loc, initList->getSequence(), static_cast(type.getStruct()->size())); if (type.getStruct()->size() != initList->getSequence().size()) { error(loc, "wrong number of structure members", "initializer list", ""); From cebd97eb24e95980ab319f4d731c56a4669da87a Mon Sep 17 00:00:00 2001 From: Jamie Madill Date: Wed, 14 Dec 2016 15:48:56 -0500 Subject: [PATCH 125/130] Change unicode dash to ASCII. This change is helpful for integration with Chromium, which recently added a compiler option to warn when compiling any source files which use extended characters. In this case the offending character was a single unicode dash in a comment. --- glslang/MachineIndependent/Constant.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 804626fa..61b6f67e 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -57,7 +57,7 @@ bool isNan(double x) u.d = x; int bitPatternL = u.i[0]; int bitPatternH = u.i[1]; - return (bitPatternH & 0x7ff80000) == 0x7ff80000 && + return (bitPatternH & 0x7ff80000) == 0x7ff80000 && ((bitPatternH & 0xFFFFF) != 0 || bitPatternL != 0); } @@ -68,7 +68,7 @@ bool isInf(double x) u.d = x; int bitPatternL = u.i[0]; int bitPatternH = u.i[1]; - return (bitPatternH & 0x7ff00000) == 0x7ff00000 && + return (bitPatternH & 0x7ff00000) == 0x7ff00000 && (bitPatternH & 0xFFFFF) == 0 && bitPatternL == 0; } @@ -131,7 +131,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right TConstUnionArray smearedArray(newComps, rightNode->getConstArray()[0]); rightUnionArray = smearedArray; } else if (constComps > 1 && newComps == 1) { - // for a case like vec4 f = 1.2 + vec4(2,3,4,5); + // for a case like vec4 f = 1.2 + vec4(2,3,4,5); newComps = constComps; rightUnionArray = rightNode->getConstArray(); TConstUnionArray smearedArray(newComps, getConstArray()[0]); @@ -626,7 +626,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) // // Do constant folding for an aggregate node that has all its children // as constants and an operator that requires constant folding. -// +// TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) { if (! areAllChildConst(aggrNode)) @@ -802,7 +802,7 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) break; case EOpSmoothStep: { - double t = (childConstUnions[2][arg2comp].getDConst() - childConstUnions[0][arg0comp].getDConst()) / + double t = (childConstUnions[2][arg2comp].getDConst() - childConstUnions[0][arg0comp].getDConst()) / (childConstUnions[1][arg1comp].getDConst() - childConstUnions[0][arg0comp].getDConst()); if (t < 0.0) t = 0.0; @@ -841,7 +841,7 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) newConstArray[2] = childConstUnions[0][0] * childConstUnions[1][1] - childConstUnions[0][1] * childConstUnions[1][0]; break; case EOpFaceForward: - // If dot(Nref, I) < 0 return N, otherwise return –N: Arguments are (N, I, Nref). + // If dot(Nref, I) < 0 return N, otherwise return -N: Arguments are (N, I, Nref). dot = childConstUnions[1].dot(childConstUnions[2]); for (int comp = 0; comp < numComps; ++comp) { if (dot < 0.0) @@ -968,7 +968,7 @@ TIntermTyped* TIntermediate::foldDereference(TIntermTyped* node, int index, cons } // -// Make a constant vector node or constant scalar node, representing a given +// Make a constant vector node or constant scalar node, representing a given // constant vector and constant swizzle into it. // TIntermTyped* TIntermediate::foldSwizzle(TIntermTyped* node, TVectorFields& fields, const TSourceLoc& loc) From 1e275c8486325aaab34734ad9a650c0121c5efdb Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 14 Dec 2016 17:02:32 -0700 Subject: [PATCH 126/130] HLSL: More robust handling of bad shader input, catching a few more things. --- SPIRV/SpvBuilder.cpp | 1 + .../hlsl.array.implicit-size.frag.out | 132 +++++++++--------- Test/hlsl.array.implicit-size.frag | 1 + glslang/Include/revision.h | 4 +- hlsl/hlslParseHelper.cpp | 16 ++- hlsl/hlslParseHelper.h | 2 +- 6 files changed, 82 insertions(+), 74 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 04b0f04f..b0b74b24 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2144,6 +2144,7 @@ void Builder::accessChainPushSwizzle(std::vector& swizzle, Id preSwizz std::vector oldSwizzle = accessChain.swizzle; accessChain.swizzle.resize(0); for (unsigned int i = 0; i < swizzle.size(); ++i) { + assert(swizzle[i] < oldSwizzle.size()); accessChain.swizzle.push_back(oldSwizzle[swizzle[i]]); } } else diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out index 5674cb47..5f203622 100644 --- a/Test/baseResults/hlsl.array.implicit-size.frag.out +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -41,38 +41,38 @@ gl_FragCoord origin is upper left 0:28 1.000000 0:28 2.000000 0:28 3.000000 -0:30 move second child to first child (temp 4-component vector of float) -0:30 color: direct index for structure (temp 4-component vector of float) -0:30 'ps_output' (out structure{temp 4-component vector of float color}) -0:30 Constant: -0:30 0 (const int) -0:30 Construct vec4 (temp 4-component vector of float) -0:30 add (temp float) -0:30 add (temp float) -0:30 add (temp float) -0:30 add (temp float) -0:30 direct index (temp float) -0:30 'g_array' (global 5-element array of float) -0:30 Constant: -0:30 0 (const int) -0:30 direct index (temp float) -0:30 'g_array' (global 5-element array of float) -0:30 Constant: -0:30 4 (const int) -0:30 direct index (temp float) -0:30 'l_array' (temp 3-element array of float) -0:30 Constant: -0:30 1 (const int) -0:30 f: direct index for structure (temp float) -0:30 direct index (temp structure{temp int i, temp float f}) -0:30 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) -0:30 Constant: -0:30 0 (const int) -0:30 Constant: -0:30 1 (const int) -0:30 indirect index (temp float) -0:30 'g_array' (global 5-element array of float) -0:30 'idx' (temp void) +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' (out 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 add (temp float) +0:31 add (temp float) +0:31 add (temp float) +0:31 add (temp float) +0:31 direct index (temp float) +0:31 'g_array' (global 5-element array of float) +0:31 Constant: +0:31 0 (const int) +0:31 direct index (temp float) +0:31 'g_array' (global 5-element array of float) +0:31 Constant: +0:31 4 (const int) +0:31 direct index (temp float) +0:31 'l_array' (temp 3-element array of float) +0:31 Constant: +0:31 1 (const int) +0:31 f: direct index for structure (temp float) +0:31 direct index (temp structure{temp int i, temp float f}) +0:31 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 indirect index (temp float) +0:31 'g_array' (global 5-element array of float) +0:31 'idx' (temp int) 0:? Linker Objects 0:? 'g_array' (global 5-element array of float) 0:? 'g_array_unused' (global 7-element array of float) @@ -125,38 +125,38 @@ gl_FragCoord origin is upper left 0:28 1.000000 0:28 2.000000 0:28 3.000000 -0:30 move second child to first child (temp 4-component vector of float) -0:30 color: direct index for structure (temp 4-component vector of float) -0:30 'ps_output' (out structure{temp 4-component vector of float color}) -0:30 Constant: -0:30 0 (const int) -0:30 Construct vec4 (temp 4-component vector of float) -0:30 add (temp float) -0:30 add (temp float) -0:30 add (temp float) -0:30 add (temp float) -0:30 direct index (temp float) -0:30 'g_array' (global 5-element array of float) -0:30 Constant: -0:30 0 (const int) -0:30 direct index (temp float) -0:30 'g_array' (global 5-element array of float) -0:30 Constant: -0:30 4 (const int) -0:30 direct index (temp float) -0:30 'l_array' (temp 3-element array of float) -0:30 Constant: -0:30 1 (const int) -0:30 f: direct index for structure (temp float) -0:30 direct index (temp structure{temp int i, temp float f}) -0:30 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) -0:30 Constant: -0:30 0 (const int) -0:30 Constant: -0:30 1 (const int) -0:30 indirect index (temp float) -0:30 'g_array' (global 5-element array of float) -0:30 'idx' (temp void) +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' (out 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 add (temp float) +0:31 add (temp float) +0:31 add (temp float) +0:31 add (temp float) +0:31 direct index (temp float) +0:31 'g_array' (global 5-element array of float) +0:31 Constant: +0:31 0 (const int) +0:31 direct index (temp float) +0:31 'g_array' (global 5-element array of float) +0:31 Constant: +0:31 4 (const int) +0:31 direct index (temp float) +0:31 'l_array' (temp 3-element array of float) +0:31 Constant: +0:31 1 (const int) +0:31 f: direct index for structure (temp float) +0:31 direct index (temp structure{temp int i, temp float f}) +0:31 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 indirect index (temp float) +0:31 'g_array' (global 5-element array of float) +0:31 'idx' (temp int) 0:? Linker Objects 0:? 'g_array' (global 5-element array of float) 0:? 'g_array_unused' (global 7-element array of float) @@ -228,7 +228,7 @@ gl_FragCoord origin is upper left 49: TypePointer Private 6(float) 52: 32(int) Constant 4 56: TypePointer Function 6(float) - 63: TypePointer Function 2 + 63: TypePointer Function 32(int) 70: TypePointer Function 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 60: 49(ptr) AccessChain 37(g_mystruct) 48 38 61: 6(float) Load 60 62: 6(float) FAdd 59 61 - 65: 2 Load 64(idx) + 65: 32(int) Load 64(idx) 66: 49(ptr) AccessChain 18(g_array) 65 67: 6(float) Load 66 68: 6(float) FAdd 62 67 diff --git a/Test/hlsl.array.implicit-size.frag b/Test/hlsl.array.implicit-size.frag index 78a9283d..e7a54f46 100644 --- a/Test/hlsl.array.implicit-size.frag +++ b/Test/hlsl.array.implicit-size.frag @@ -26,6 +26,7 @@ void main(out PS_OUTPUT ps_output) { // local array sized from initializers float l_array[] = { 1, 2, 3 }; + int idx; ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx]; } diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 5fda0eb4..cdddaf3b 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1689" -#define GLSLANG_DATE "12-Dec-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1694" +#define GLSLANG_DATE "14-Dec-2016" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 3a193dca..62dac4bf 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -579,8 +579,10 @@ TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, TSymbol* s } // Recovery, if it wasn't found or was not a variable. - if (! variable) + if (! variable) { + error(loc, "unknown variable", string->c_str(), ""); variable = new TVariable(string, TType(EbtVoid)); + } if (variable->getType().getQualifier().isFrontEndConstant()) node = intermediate.addConstantUnion(variable->getConstArray(), variable->getType(), loc); @@ -2781,7 +2783,7 @@ TIntermTyped* HlslParseContext::handleLengthMethod(const TSourceLoc& loc, TFunct // // Add any needed implicit conversions for function-call arguments to input parameters. // -void HlslParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) const +void HlslParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) { TIntermAggregate* aggregate = arguments->getAsAggregate(); const auto setArg = [&](int argNum, TIntermNode* arg) { @@ -2809,9 +2811,13 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI if (*function[i].type != arg->getType()) { // In-qualified arguments just need an extra node added above the argument to // convert to the correct type. - arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg); - arg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, arg); - setArg(i, arg); + TIntermTyped* convArg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg); + if (convArg != nullptr) + convArg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, convArg); + if (convArg != nullptr) + setArg(i, convArg); + else + error(arg->getLoc(), "cannot convert input argument, argument", "", "%d", i); } else { if (wasFlattened(arg)) { // Will make a two-level subtree. diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 206df9b8..3ffe3525 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -84,7 +84,7 @@ public: void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); void decomposeGeometryMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); - void addInputArgumentConversions(const TFunction&, TIntermNode*&) const; + void addInputArgumentConversions(const TFunction&, TIntermNode*&); TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermOperator&); void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); TFunction* handleConstructorCall(const TSourceLoc&, const TType&); From abf505794878d1b7603e99cb64f14236b2709eb4 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 16 Dec 2016 17:11:18 -0700 Subject: [PATCH 127/130] Fix comment typo. --- glslang/Include/revision.h | 4 ++-- glslang/MachineIndependent/ParseContextBase.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index cdddaf3b..ea129596 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1694" -#define GLSLANG_DATE "14-Dec-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1695" +#define GLSLANG_DATE "16-Dec-2016" diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index d084af8a..d86e19d2 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -472,7 +472,7 @@ bool TParseContextBase::insertGlobalUniformBlock() void TParseContextBase::finish() { if (!parsingBuiltins) { - // Transfer te linkage symbols to AST nodes + // Transfer the linkage symbols to AST nodes for (auto i = linkageSymbols.begin(); i != linkageSymbols.end(); ++i) intermediate.addSymbolLinkageNode(linkage, **i); intermediate.addSymbolLinkageNodes(linkage, getLanguage(), symbolTable); From a64ed3eba023833715f79fbf21f350b7c26ff2bb Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Sun, 18 Dec 2016 17:51:14 -0700 Subject: [PATCH 128/130] HLSL: allow "sample" in expressions. Unlike other qualifiers, HLSL allows "sample" to be either a qualifier keyword or an identifier (e.g, a variable or function name). A fix to allow this was made a while ago, but that fix was insufficient when 'sample' was used in an expression. The problem was around the initial ambiguity between: sample float a; // "sample" is part of a fully specified type and sample.xyz; // sample is a keyword in a dot expression Both start the same. The "sample" was being accepted as a qualifier before enough further parsing was done to determine we were not a declaration after all. This consumed the token, causing it to fail for its real purpose. Now, when accepting a fully specified type, the token is pushed back onto the stack if the thing is not a fully specified type. This leaves it available for subsequent purposes. Changed the "hlsl.identifier.sample.frag" test to exercise this situation, distilled down from a production shaders. --- .../hlsl.identifier.sample.frag.out | 88 ++++++++++++------- Test/hlsl.identifier.sample.frag | 4 +- hlsl/hlslGrammar.cpp | 20 +++-- 3 files changed, 71 insertions(+), 41 deletions(-) diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out index 8e740819..35e88e93 100644 --- a/Test/baseResults/hlsl.identifier.sample.frag.out +++ b/Test/baseResults/hlsl.identifier.sample.frag.out @@ -12,18 +12,27 @@ gl_FragCoord origin is upper left 0:12 Function Parameters: 0:? Sequence 0:15 Sequence -0:15 move second child to first child (temp int) -0:15 'sample' (temp int) -0:15 Constant: -0:15 3 (const int) +0:15 move second child to first child (temp 4-component vector of float) +0:15 'sample' (temp 4-component vector of float) +0:? Constant: +0:? 3.000000 +0:? 4.000000 +0:? 5.000000 +0:? 6.000000 0:17 Sequence 0:17 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? Constant: -0:? 0.000000 -0:? 0.000000 -0:? 0.000000 -0:? 0.000000 +0:17 vector swizzle (temp 4-component vector of float) +0:17 'sample' (temp 4-component vector of float) +0:17 Sequence +0:17 Constant: +0:17 0 (const int) +0:17 Constant: +0:17 1 (const int) +0:17 Constant: +0:17 2 (const int) +0:17 Constant: +0:17 3 (const int) 0:17 Branch: Return 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -45,54 +54,67 @@ gl_FragCoord origin is upper left 0:12 Function Parameters: 0:? Sequence 0:15 Sequence -0:15 move second child to first child (temp int) -0:15 'sample' (temp int) -0:15 Constant: -0:15 3 (const int) +0:15 move second child to first child (temp 4-component vector of float) +0:15 'sample' (temp 4-component vector of float) +0:? Constant: +0:? 3.000000 +0:? 4.000000 +0:? 5.000000 +0:? 6.000000 0:17 Sequence 0:17 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? Constant: -0:? 0.000000 -0:? 0.000000 -0:? 0.000000 -0:? 0.000000 +0:17 vector swizzle (temp 4-component vector of float) +0:17 'sample' (temp 4-component vector of float) +0:17 Sequence +0:17 Constant: +0:17 0 (const int) +0:17 Constant: +0:17 1 (const int) +0:17 Constant: +0:17 2 (const int) +0:17 Constant: +0:17 3 (const int) 0:17 Branch: Return 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 24 +// Id's are bound by 28 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 20 + EntryPoint Fragment 4 "main" 25 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 10 "sample(i1;" Name 9 "x" - Name 15 "sample" - Name 20 "@entryPointOutput" - Decorate 20(@entryPointOutput) Location 0 + Name 18 "sample" + Name 25 "@entryPointOutput" + Decorate 25(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 6(int) 7(ptr) - 16: 6(int) Constant 3 - 17: TypeFloat 32 - 18: TypeVector 17(float) 4 - 19: TypePointer Output 18(fvec4) -20(@entryPointOutput): 19(ptr) Variable Output - 21: 17(float) Constant 0 - 22: 18(fvec4) ConstantComposite 21 21 21 21 + 15: TypeFloat 32 + 16: TypeVector 15(float) 4 + 17: TypePointer Function 16(fvec4) + 19: 15(float) Constant 1077936128 + 20: 15(float) Constant 1082130432 + 21: 15(float) Constant 1084227584 + 22: 15(float) Constant 1086324736 + 23: 16(fvec4) ConstantComposite 19 20 21 22 + 24: TypePointer Output 16(fvec4) +25(@entryPointOutput): 24(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 15(sample): 7(ptr) Variable Function - Store 15(sample) 16 - Store 20(@entryPointOutput) 22 + 18(sample): 17(ptr) Variable Function + Store 18(sample) 23 + 26: 16(fvec4) Load 18(sample) + Store 25(@entryPointOutput) 26 Return FunctionEnd 10(sample(i1;): 6(int) Function None 8 diff --git a/Test/hlsl.identifier.sample.frag b/Test/hlsl.identifier.sample.frag index 3281a9ac..d3f82427 100644 --- a/Test/hlsl.identifier.sample.frag +++ b/Test/hlsl.identifier.sample.frag @@ -12,7 +12,7 @@ float4 main() : SV_Target0 { // HLSL allows this as an identifier as well. // However, this is not true of other qualifier keywords such as "linear". - int sample = 3; + float4 sample = float4(3,4,5,6); - return float4(0,0,0,0); + return sample.rgba; // 'sample' can participate in an expression. } diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index e676e95e..b874aa8c 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -90,10 +90,11 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken) // as "linear" or "centroid" NOT valid identifiers. This code special cases "sample", // so e.g, "int sample;" is accepted. if (peekTokenClass(EHTokSample)) { - idToken.string = NewPoolTString("sample"); - idToken.tokenClass = EHTokIdentifier; - idToken.symbol = nullptr; - idToken.loc = token.loc; + token.string = NewPoolTString("sample"); + token.tokenClass = EHTokIdentifier; + token.symbol = nullptr; + + idToken = token; advanceToken(); return true; } @@ -475,8 +476,15 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type) TSourceLoc loc = token.loc; // type_specifier - if (! acceptType(type)) + if (! acceptType(type)) { + // If this is not a type, we may have inadvertently gone down a wrong path + // py parsing "sample", which can be treated like either an identifier or a + // qualifier. Back it out, if we did. + if (qualifier.sample) + recedeToken(); + return false; + } if (type.getBasicType() == EbtBlock) { // the type was a block, which set some parts of the qualifier parseContext.mergeQualifiers(type.getQualifier(), qualifier); @@ -2203,7 +2211,7 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) } else if (acceptIdentifier(idToken)) { // identifier or function_call name if (! peekTokenClass(EHTokLeftParen)) { - node = parseContext.handleVariable(idToken.loc, idToken.symbol, token.string); + node = parseContext.handleVariable(idToken.loc, idToken.symbol, idToken.string); } else if (acceptFunctionCall(idToken, node)) { // function_call (nothing else to do yet) } else { From d485e0b71025dfcd00386565dc1feb35f3ba3821 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 19 Dec 2016 09:19:43 -0700 Subject: [PATCH 129/130] PP: Implement token pasting for PP identifiers. Implement token pasting as per the C++ specification, within the current style of the PP code. Non-identifiers (turning 12 ## 10 into the numeral 1210) is not yet covered; they should be a simple incremental change built on this one. Addresses issue #255. --- Test/baseResults/120.vert.out | 11 ++- Test/baseResults/130.vert.out | 10 +- Test/baseResults/tokenPaste.vert.out | 60 ++++++++++++ Test/tokenPaste.vert | 52 ++++++++++ glslang/Include/revision.h | 4 +- .../MachineIndependent/preprocessor/Pp.cpp | 95 ++++++++++++++++--- .../preprocessor/PpContext.h | 24 ++++- .../preprocessor/PpScanner.cpp | 46 +++++++++ .../preprocessor/PpTokens.cpp | 35 +++++-- gtests/AST.FromFile.cpp | 1 + 10 files changed, 304 insertions(+), 34 deletions(-) create mode 100755 Test/baseResults/tokenPaste.vert.out create mode 100644 Test/tokenPaste.vert diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out index 94a97b53..c63d95a2 100644 --- a/Test/baseResults/120.vert.out +++ b/Test/baseResults/120.vert.out @@ -77,9 +77,8 @@ ERROR: 0:192: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or ERROR: 0:192: 'assign' : l-value required (can't modify a const) ERROR: 0:195: 'gl_ModelViewMatrix' : identifiers starting with "gl_" are reserved ERROR: 0:200: 'token pasting (##)' : not supported for this version or the enabled extensions -ERROR: 0:200: '##' : token pasting not implemented (internal error) -ERROR: 0:200: '' : syntax error -ERROR: 80 compilation errors. No code generated. +ERROR: 0:203: 'token pasting (##)' : not supported for this version or the enabled extensions +ERROR: 79 compilation errors. No code generated. Shader version: 120 @@ -427,7 +426,8 @@ ERROR: node is still EOpNull! 0:? 'c2D' (in 2-component vector of float) 0:? 'c3D' (in 3-component vector of float) 0:? 'v4' (uniform 4-component vector of float) -0:? 'abc' (global int) +0:? 'abcdef' (global int) +0:? 'qrstuv' (global int) Linked vertex stage: @@ -499,5 +499,6 @@ ERROR: node is still EOpNull! 0:? 'c2D' (in 2-component vector of float) 0:? 'c3D' (in 3-component vector of float) 0:? 'v4' (uniform 4-component vector of float) -0:? 'abc' (global int) +0:? 'abcdef' (global int) +0:? 'qrstuv' (global int) diff --git a/Test/baseResults/130.vert.out b/Test/baseResults/130.vert.out index 1b3a0e19..7ca32a13 100644 --- a/Test/baseResults/130.vert.out +++ b/Test/baseResults/130.vert.out @@ -3,9 +3,7 @@ ERROR: 0:59: 'gl_InstanceID' : undeclared identifier ERROR: 0:59: '=' : cannot convert from 'temp float' to 'temp int' ERROR: 0:61: 'texelFetch' : no matching overloaded function found ERROR: 0:61: 'assign' : cannot convert from 'const float' to 'temp int' -ERROR: 0:75: '##' : token pasting not implemented (internal error) -ERROR: 0:75: '' : syntax error -ERROR: 6 compilation errors. No code generated. +ERROR: 4 compilation errors. No code generated. Shader version: 130 @@ -149,7 +147,8 @@ ERROR: node is still EOpNull! 0:? 'v4' (uniform 4-component vector of float) 0:? 'gl_ClipDistance' (smooth out implicitly-sized array of float ClipDistance) 0:? 'gl_TexCoord' (smooth out implicitly-sized array of 4-component vector of float TexCoord) -0:? 'abc' (global int) +0:? 'abcdef' (global int) +0:? 'qrstuv' (global int) 0:? 'gl_VertexID' (gl_VertexId int VertexId) @@ -281,6 +280,7 @@ ERROR: node is still EOpNull! 0:? 'v4' (uniform 4-component vector of float) 0:? 'gl_ClipDistance' (smooth out 2-element array of float ClipDistance) 0:? 'gl_TexCoord' (smooth out 1-element array of 4-component vector of float TexCoord) -0:? 'abc' (global int) +0:? 'abcdef' (global int) +0:? 'qrstuv' (global int) 0:? 'gl_VertexID' (gl_VertexId int VertexId) diff --git a/Test/baseResults/tokenPaste.vert.out b/Test/baseResults/tokenPaste.vert.out new file mode 100755 index 00000000..59971515 --- /dev/null +++ b/Test/baseResults/tokenPaste.vert.out @@ -0,0 +1,60 @@ +tokenPaste.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. +ERROR: 0:38: '##' : unexpected location +ERROR: 0:40: '##' : unexpected location; end of replacement list +ERROR: 0:49: '##' : combined tokens are too long +ERROR: 0:52: '##' : only supported for preprocessing identifiers +ERROR: 4 compilation errors. No code generated. + + +Shader version: 450 +ERROR: node is still EOpNull! +0:52 Sequence +0:52 move second child to first child (temp int) +0:52 'a' (global int) +0:52 Constant: +0:52 11 (const int) +0:? Linker Objects +0:? 'SecondExpansion' (global int) +0:? 'PostPasteExpansion' (global int) +0:? 'foo27' (global float) +0:? 'foo155' (uniform float) +0:? 'foo719' (global float) +0:? 'barfoo' (uniform float) +0:? 'argless' (global float) +0:? 'dc1' (global float) +0:? 'dc2' (global float) +0:? 'foo875' (uniform float) +0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123451234' (global float) +0:? 'a' (global int) +0:? 'gl_VertexID' (gl_VertexId int VertexId) +0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) + + +Linked vertex stage: + +ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point + +Shader version: 450 +ERROR: node is still EOpNull! +0:52 Sequence +0:52 move second child to first child (temp int) +0:52 'a' (global int) +0:52 Constant: +0:52 11 (const int) +0:? Linker Objects +0:? 'SecondExpansion' (global int) +0:? 'PostPasteExpansion' (global int) +0:? 'foo27' (global float) +0:? 'foo155' (uniform float) +0:? 'foo719' (global float) +0:? 'barfoo' (uniform float) +0:? 'argless' (global float) +0:? 'dc1' (global float) +0:? 'dc2' (global float) +0:? 'foo875' (uniform float) +0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123451234' (global float) +0:? 'a' (global int) +0:? 'gl_VertexID' (gl_VertexId int VertexId) +0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) + diff --git a/Test/tokenPaste.vert b/Test/tokenPaste.vert new file mode 100644 index 00000000..6d6212cc --- /dev/null +++ b/Test/tokenPaste.vert @@ -0,0 +1,52 @@ +#version 450 + +// side test verifies multiple rounds of argument expansion +#define bear SecondExpansion +#define mmmB bear +#define mmmA(a) a +int mmmA(mmmB); // mmmB -> bear, and then in mmmA(), bear -> SecondExpansion + +// pasting skips the first round of expansion +#define mmcatmmdog PostPasteExpansion +#define mmcat cat +#define mmdog dog +#define mmp(a,b) a## b +int mmp(mmcat, mmdog); // mmcat/mmdog not expanded, mmcatmmdog -> PostPasteExpansion + +// multi-token pre +#define mmtokpastepre(a) a##27 +mmtokpastepre(float foo); // should declare "float foo27;" + +// multi-token post +#define mmtokpastepost(a) uni ##a +mmtokpastepost(form float foo155); // should declare "uniform float foo155;" + +// non-first argument +#define foo ShouldntExpandToThis +#define semi ; +#define bothpaste(a,b) a##b +float bothpaste(foo, 719); // should declare "float foo719;" +#define secpaste(a,b) a bar ## b +secpaste(uniform float, foo semi) // should declare "uniform float barfoo;" + +// no args +#define noArg fl##oat +noArg argless; + +// bad location +#define bad1 ## float +bad1 dc1; +#define bad2 float ## +bad2 dc2; + +// multiple ## +#define multiPaste(a, b, c) a##or##b flo##at foo##c +multiPaste(unif, m, 875); + +// too long +#define simplePaste(a,b) a##b +// 1020 + 5 characters +float simplePaste(ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345, 12345); + +// non-identifiers +int a = simplePaste(11,12); diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index ea129596..d90b8c78 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1695" -#define GLSLANG_DATE "16-Dec-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1696" +#define GLSLANG_DATE "19-Dec-2016" diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 824a69a9..1985b8bc 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -933,36 +933,38 @@ int TPpContext::readCPPline(TPpToken* ppToken) return token; } -TPpContext::TokenStream* TPpContext::PrescanMacroArg(TokenStream* a, TPpToken* ppToken, bool newLineOkay) +// Macro-expand a macro argument 'arg' to create 'expandedArg'. +// Does not replace 'arg'. +// Returns nullptr if no expanded argument is created. +TPpContext::TokenStream* TPpContext::PrescanMacroArg(TokenStream* arg, TPpToken* ppToken, bool newLineOkay) { int token; - TokenStream *n; - RewindTokenStream(a); + RewindTokenStream(arg); do { - token = ReadToken(a, ppToken); + token = ReadToken(arg, ppToken); if (token == PpAtomIdentifier && LookUpSymbol(ppToken->atom)) break; } while (token != EndOfInput); if (token == EndOfInput) - return a; + return nullptr; - n = new TokenStream; + TokenStream* expandedArg = new TokenStream; pushInput(new tMarkerInput(this)); - pushTokenStreamInput(a); + pushTokenStreamInput(arg); while ((token = scanToken(ppToken)) != tMarkerInput::marker) { if (token == PpAtomIdentifier && MacroExpand(ppToken->atom, ppToken, false, newLineOkay) != 0) continue; - RecordToken(n, token, ppToken); + RecordToken(expandedArg, token, ppToken); } popInput(); - delete a; - return n; + return expandedArg; } // -// Return the next token for a macro expansion, handling macro args. +// Return the next token for a macro expansion, handling macro arguments, +// whose semantics are dependent on being adjacent to ##. // int TPpContext::tMacroInput::scan(TPpToken* ppToken) { @@ -971,6 +973,39 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) token = pp->ReadToken(mac->body, ppToken); } while (token == ' '); // handle white space in macro + // Hash operators basically turn off a round of macro substitution + // (the round done on the argument before the round done on the RHS of the + // macro definition): + // + // "A parameter in the replacement list, unless preceded by a # or ## + // preprocessing token or followed by a ## preprocessing token (see below), + // is replaced by the corresponding argument after all macros contained + // therein have been expanded." + // + // "If, in the replacement list, a parameter is immediately preceded or + // followed by a ## preprocessing token, the parameter is replaced by the + // corresponding argument's preprocessing token sequence." + + bool pasting = false; + if (postpaste) { + // don't expand next token + pasting = true; + postpaste = false; + } + + if (prepaste) { + // already know we should be on a ##, verify + assert(token == PpAtomPaste); + prepaste = false; + postpaste = true; + } + + // see if are preceding a ## + if (peekMacPasting()) { + prepaste = true; + pasting = true; + } + // TODO: preprocessor: properly handle whitespace (or lack of it) between tokens when expanding if (token == PpAtomIdentifier) { int i; @@ -978,7 +1013,10 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) if (mac->args[i] == ppToken->atom) break; if (i >= 0) { - pp->pushTokenStreamInput(args[i]); + TokenStream* arg = expandedArgs[i]; + if (arg == nullptr || pasting) + arg = args[i]; + pp->pushTokenStreamInput(arg, prepaste); return pp->scanToken(ppToken); } @@ -990,6 +1028,31 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) return token; } +// See if the next non-white-space token in the macro is ## +bool TPpContext::tMacroInput::peekMacPasting() +{ + // don't return early, have to restore this + size_t savePos = mac->body->current; + + // skip white-space + int ltoken; + do { + ltoken = pp->lReadByte(mac->body); + } while (ltoken == ' '); + + // check for ## + bool pasting = false; + if (ltoken == '#') { + ltoken = pp->lReadByte(mac->body); + if (ltoken == '#') + pasting = true; + } + + mac->body->current = savePos; + + return pasting; +} + // return a textual zero, for scanning a macro that was never defined int TPpContext::tZeroInput::scan(TPpToken* ppToken) { @@ -1080,6 +1143,9 @@ int TPpContext::MacroExpand(int atom, TPpToken* ppToken, bool expandUndef, bool in->args.resize(in->mac->argc); for (int i = 0; i < in->mac->argc; i++) in->args[i] = new TokenStream; + in->expandedArgs.resize(in->mac->argc); + for (int i = 0; i < in->mac->argc; i++) + in->expandedArgs[i] = nullptr; int arg = 0; bool tokenRecorded = false; do { @@ -1143,8 +1209,11 @@ int TPpContext::MacroExpand(int atom, TPpToken* ppToken, bool expandUndef, bool } parseContext.ppError(loc, "Too many args in macro", "macro expansion", GetAtomString(atom)); } + + // We need both expanded and non-expanded forms of the argument, for whether or + // not token pasting is in play. for (int i = 0; i < in->mac->argc; i++) - in->args[i] = PrescanMacroArg(in->args[i], ppToken, newLineOkay); + in->expandedArgs[i] = PrescanMacroArg(in->args[i], ppToken, newLineOkay); } pushInput(in); diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index 013c90e5..707280f0 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -129,6 +129,7 @@ public: void setPreamble(const char* preamble, size_t length); const char* tokenize(TPpToken* ppToken); + int tokenPaste(TPpToken&); class tInput { public: @@ -138,6 +139,8 @@ public: virtual int scan(TPpToken*) = 0; virtual int getch() = 0; virtual void ungetch() = 0; + virtual bool peekPasting() { return false; } // true when about to see ## + virtual bool endOfReplacementList() { return false; } // true when at the end of a macro replacement list (RHS of #define) // Will be called when we start reading tokens from this instance virtual void notifyActivated() {} @@ -235,6 +238,8 @@ protected: } int getChar() { return inputStack.back()->getch(); } void ungetChar() { inputStack.back()->ungetch(); } + bool peekPasting() { return !inputStack.empty() && inputStack.back()->peekPasting(); } + bool endOfReplacementList() { return inputStack.empty() || inputStack.back()->endOfReplacementList(); } static const int maxMacroArgs = 64; static const int maxIfNesting = 64; @@ -245,18 +250,29 @@ protected: class tMacroInput : public tInput { public: - tMacroInput(TPpContext* pp) : tInput(pp) { } + tMacroInput(TPpContext* pp) : tInput(pp), prepaste(false), postpaste(false) { } virtual ~tMacroInput() { for (size_t i = 0; i < args.size(); ++i) delete args[i]; + for (size_t i = 0; i < expandedArgs.size(); ++i) + delete expandedArgs[i]; } virtual int scan(TPpToken*); virtual int getch() { assert(0); return EndOfInput; } virtual void ungetch() { assert(0); } + bool peekPasting() override { return prepaste; } + bool endOfReplacementList() override { return mac->body->current >= mac->body->data.size(); } + MacroSymbol *mac; TVector args; + TVector expandedArgs; + + protected: + bool peekMacPasting(); + bool prepaste; // true if we are just before ## + bool postpaste; // true if we are right after ## }; class tMarkerInput : public tInput { @@ -329,17 +345,19 @@ protected: void RecordToken(TokenStream* pTok, int token, TPpToken* ppToken); void RewindTokenStream(TokenStream *pTok); int ReadToken(TokenStream* pTok, TPpToken* ppToken); - void pushTokenStreamInput(TokenStream *ts); + void pushTokenStreamInput(TokenStream *ts, bool pasting = false); void UngetToken(int token, TPpToken* ppToken); class tTokenInput : public tInput { public: - tTokenInput(TPpContext* pp, TokenStream* t) : tInput(pp), tokens(t) { } + tTokenInput(TPpContext* pp, TokenStream* t, bool prepasting) : tInput(pp), tokens(t), lastTokenPastes(prepasting) { } virtual int scan(TPpToken *); virtual int getch() { assert(0); return EndOfInput; } virtual void ungetch() { assert(0); } + virtual bool peekPasting() override; protected: TokenStream *tokens; + bool lastTokenPastes; // true if the last token in the input is to be pasted, rather than consumed as a token }; class tUngotTokenInput : public tInput { diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index 518dbdee..bc5c0866 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -739,6 +739,11 @@ const char* TPpContext::tokenize(TPpToken* ppToken) for(;;) { token = scanToken(ppToken); ppToken->token = token; + + // Handle token-pasting logic + token = tokenPaste(*ppToken); + ppToken->token = token; + if (token == EndOfInput) { missingEndifCheck(); return nullptr; @@ -800,6 +805,47 @@ const char* TPpContext::tokenize(TPpToken* ppToken) } } +// +// Do all token-pasting related combining of two pasted tokens when getting a +// stream of tokens from a replacement list. Degenerates to no processing if a +// replacement list is not the source of the token stream. +// +int TPpContext::tokenPaste(TPpToken& ppToken) +{ + // starting with ## is illegal, skip to next token + if (ppToken.token == PpAtomPaste) { + parseContext.ppError(ppToken.loc, "unexpected location", "##", ""); + ppToken.token = scanToken(&ppToken); + } + + // ## can be chained, process all in the chain at once + while (peekPasting()) { + TPpToken pastedPpToken; + + // next token has to be ## + pastedPpToken.token = scanToken(&pastedPpToken); + assert(pastedPpToken.token == PpAtomPaste); + + if (endOfReplacementList()) { + parseContext.ppError(ppToken.loc, "unexpected location; end of replacement list", "##", ""); + break; + } + + // get the token after the ## + scanToken(&pastedPpToken); + + // combine the tokens + if (strlen(ppToken.name) + strlen(pastedPpToken.name) > MaxTokenLength) + parseContext.ppError(ppToken.loc, "combined tokens are too long", "##", ""); + strncat(ppToken.name, pastedPpToken.name, MaxTokenLength - strlen(ppToken.name)); + ppToken.atom = LookUpAddString(ppToken.name); + if (ppToken.token != PpAtomIdentifier) + parseContext.ppError(ppToken.loc, "only supported for preprocessing identifiers", "##", ""); + } + + return ppToken.token; +} + // Checks if we've seen balanced #if...#endif void TPpContext::missingEndifCheck() { diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 23b617d3..724cedd0 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -160,7 +160,7 @@ void TPpContext::RecordToken(TokenStream *pTok, int token, TPpToken* ppToken) } /* -* Reset a token stream in preperation for reading. +* Reset a token stream in preparation for reading. */ void TPpContext::RewindTokenStream(TokenStream *pTok) { @@ -187,9 +187,7 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) if (lReadByte(pTok) == '#') { parseContext.requireProfile(ppToken->loc, ~EEsProfile, "token pasting (##)"); parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, 0, "token pasting (##)"); - parseContext.error(ppToken->loc, "token pasting not implemented (internal error)", "##", ""); - //return PpAtomPaste; - return ReadToken(pTok, ppToken); + ltoken = PpAtomPaste; } else lUnreadByte(pTok); } @@ -279,9 +277,34 @@ int TPpContext::tTokenInput::scan(TPpToken* ppToken) return pp->ReadToken(tokens, ppToken); } -void TPpContext::pushTokenStreamInput(TokenStream* ts) +// We are pasting if the entire macro is preceding a pasting operator +// (lastTokenPastes) and we are also on the last token. +bool TPpContext::tTokenInput::peekPasting() { - pushInput(new tTokenInput(this, ts)); + if (! lastTokenPastes) + return false; + // Getting here means the last token will be pasted. + + // Are we at the last non-whitespace token? + size_t savePos = tokens->current; + bool moreTokens = false; + do { + int byte = pp->lReadByte(tokens); + if (byte == EndOfInput) + break; + if (byte != ' ') { + moreTokens = true; + break; + } + } while (true); + tokens->current = savePos; + + return !moreTokens; +} + +void TPpContext::pushTokenStreamInput(TokenStream* ts, bool prepasting) +{ + pushInput(new tTokenInput(this, ts, prepasting)); RewindTokenStream(ts); } diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index a2e961e8..70705337 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -178,6 +178,7 @@ INSTANTIATE_TEST_CASE_P( "syntaxError.frag", "test.frag", "texture.frag", + "tokenPaste.vert", "types.frag", "uniformArray.frag", "variableArrayIndex.frag", From 432576fdce62521d187afd941a8c27072ee5cfa1 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 19 Dec 2016 14:43:42 -0700 Subject: [PATCH 130/130] Build: Fix #633, add missing overrides. --- glslang/Include/revision.h | 2 +- glslang/MachineIndependent/ParseHelper.h | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index d90b8c78..3cbc006a 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1696" +#define GLSLANG_REVISION "Overload400-PrecQual.1704" #define GLSLANG_DATE "19-Dec-2016" diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index eb1a0538..f850f089 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -237,23 +237,23 @@ public: bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); }; void setPrecisionDefaults(); - void setLimits(const TBuiltInResource&); - bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false); + void setLimits(const TBuiltInResource&) override; + bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false) override; void parserError(const char* s); // for bison's yyerror void reservedErrorCheck(const TSourceLoc&, const TString&); - void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op); - bool lineContinuationCheck(const TSourceLoc&, bool endOfComment); - bool lineDirectiveShouldSetNextLine() const; + void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op) override; + bool lineContinuationCheck(const TSourceLoc&, bool endOfComment) override; + bool lineDirectiveShouldSetNextLine() const override; bool builtInName(const TString&); - void handlePragma(const TSourceLoc&, const TVector&); + void handlePragma(const TSourceLoc&, const TVector&) override; TIntermTyped* handleVariable(const TSourceLoc&, TSymbol* symbol, const TString* string); TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void checkIndex(const TSourceLoc&, const TType&, int& index); void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); - void makeEditable(TSymbol*&); + void makeEditable(TSymbol*&) override; bool isIoResizeArray(const TType&) const; void fixIoArraySize(const TSourceLoc&, TType&); void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier);